scrivito_sdk 0.16.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scrivito/default_cms_controller.rb +3 -3
  3. data/app/controllers/scrivito/objs_controller.rb +18 -7
  4. data/app/controllers/scrivito/webservice_controller.rb +13 -1
  5. data/app/controllers/scrivito/workspaces_controller.rb +5 -1
  6. data/app/helpers/scrivito/cms_asset_helper.rb +8 -1
  7. data/app/helpers/scrivito/default_cms_routing_helper.rb +2 -4
  8. data/app/helpers/scrivito/display_helper.rb +0 -7
  9. data/app/helpers/scrivito/editing_helper.rb +10 -8
  10. data/app/helpers/scrivito/layout_helper.rb +4 -11
  11. data/config/ca-bundle.crt +1773 -1416
  12. data/config/cms_routes.rb +2 -2
  13. data/config/routes.rb +1 -0
  14. data/lib/assets/javascripts/scrivito_editing.js +969 -533
  15. data/lib/assets/stylesheets/scrivito_editing.css +99 -9
  16. data/lib/generators/cms/migration/templates/migration.erb +34 -6
  17. data/lib/generators/cms/widget/templates/migration.erb +3 -6
  18. data/lib/scrivito/attribute.rb +158 -0
  19. data/lib/scrivito/attribute_collection.rb +72 -0
  20. data/lib/scrivito/attribute_content.rb +39 -3
  21. data/lib/scrivito/basic_obj.rb +48 -27
  22. data/lib/scrivito/basic_widget.rb +15 -5
  23. data/lib/scrivito/client_config.rb +46 -19
  24. data/lib/scrivito/cms_field_tag.rb +1 -1
  25. data/lib/scrivito/cms_rest_api/attribute_serializer.rb +6 -1
  26. data/lib/scrivito/cms_rest_api/blob_uploader.rb +1 -1
  27. data/lib/scrivito/configuration.rb +32 -2
  28. data/lib/scrivito/connection_manager.rb +1 -6
  29. data/lib/scrivito/content_conversion.rb +11 -7
  30. data/lib/scrivito/editing_context.rb +12 -0
  31. data/lib/scrivito/gem_info.rb +13 -0
  32. data/lib/scrivito/membership.rb +26 -0
  33. data/lib/scrivito/memberships_collection.rb +78 -0
  34. data/lib/scrivito/migrations/migration.rb +1 -1
  35. data/lib/scrivito/migrations/migration_dsl.rb +37 -0
  36. data/lib/scrivito/obj_class.rb +282 -0
  37. data/lib/scrivito/obj_data.rb +20 -1
  38. data/lib/scrivito/obj_params_parser.rb +2 -0
  39. data/lib/scrivito/obj_search_builder.rb +1 -1
  40. data/lib/scrivito/obj_search_enumerator.rb +11 -6
  41. data/lib/scrivito/objs_collection.rb +130 -0
  42. data/lib/scrivito/restriction_set.rb +54 -0
  43. data/lib/scrivito/user.rb +114 -0
  44. data/lib/scrivito/user_definition.rb +159 -0
  45. data/lib/scrivito/widget_garbage_collection.rb +4 -4
  46. data/lib/scrivito/workspace.rb +13 -78
  47. data/lib/scrivito/workspace_data_from_service.rb +2 -0
  48. metadata +15 -5
@@ -1,10 +1,10 @@
1
1
  Rails.application.routes.draw do
2
- root to: 'scrivito/cms_dispatch#index'
2
+ get '/' => 'scrivito/cms_dispatch#index', as: 'cms_root'
3
3
 
4
4
  get '__scrivito/render_widget/:id/show_widget/:widget_id' => 'scrivito/cms_dispatch#show_widget'
5
5
  get '__scrivito/render_widget/:id/widget_details/:widget_id' => 'scrivito/cms_dispatch#widget_details'
6
6
 
7
- get '/__scrivito/details_page/:binary_id' => 'scrivito/cms_dispatch#details_page'
7
+ get '/__scrivito/details_page/:resource_id' => 'scrivito/cms_dispatch#details_page'
8
8
 
9
9
  match ':id(/*slug)',
10
10
  to: 'scrivito/cms_dispatch#index',
@@ -16,6 +16,7 @@ Rails.application.routes.draw do
16
16
  put :revert
17
17
  put :restore
18
18
  put :mark_resolved
19
+ put :destroy_widget
19
20
  end
20
21
  end
21
22
 
@@ -6747,7 +6747,7 @@ if (typeof module !== 'undefined' && module.exports) {
6747
6747
  }
6748
6748
  }).call(this);
6749
6749
  //! moment.js
6750
- //! version : 2.6.0
6750
+ //! version : 2.7.0
6751
6751
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
6752
6752
  //! license : MIT
6753
6753
  //! momentjs.com
@@ -6759,7 +6759,7 @@ if (typeof module !== 'undefined' && module.exports) {
6759
6759
  ************************************/
6760
6760
 
6761
6761
  var moment,
6762
- VERSION = "2.6.0",
6762
+ VERSION = "2.7.0",
6763
6763
  // the global-scope this is NOT the global object in Node.js
6764
6764
  globalScope = typeof global !== 'undefined' ? global : this,
6765
6765
  oldGlobalMoment,
@@ -6784,6 +6784,7 @@ if (typeof module !== 'undefined' && module.exports) {
6784
6784
  _f : null,
6785
6785
  _l : null,
6786
6786
  _strict : null,
6787
+ _tzm : null,
6787
6788
  _isUTC : null,
6788
6789
  _offset : null, // optional. Combine with _isUTC
6789
6790
  _pf : null,
@@ -6892,6 +6893,16 @@ if (typeof module !== 'undefined' && module.exports) {
6892
6893
  // format function strings
6893
6894
  formatFunctions = {},
6894
6895
 
6896
+ // default relative time thresholds
6897
+ relativeTimeThresholds = {
6898
+ s: 45, //seconds to minutes
6899
+ m: 45, //minutes to hours
6900
+ h: 22, //hours to days
6901
+ dd: 25, //days to month (month == 1)
6902
+ dm: 45, //days to months (months > 1)
6903
+ dy: 345 //days to year
6904
+ },
6905
+
6895
6906
  // tokens to ordinalize and pad
6896
6907
  ordinalizeTokens = 'DDD w W M D d'.split(' '),
6897
6908
  paddedTokens = 'M D H h m s w W'.split(' '),
@@ -7031,6 +7042,16 @@ if (typeof module !== 'undefined' && module.exports) {
7031
7042
 
7032
7043
  lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
7033
7044
 
7045
+ // Pick the first defined of two or three arguments. dfl comes from
7046
+ // default.
7047
+ function dfl(a, b, c) {
7048
+ switch (arguments.length) {
7049
+ case 2: return a != null ? a : b;
7050
+ case 3: return a != null ? a : b != null ? b : c;
7051
+ default: throw new Error("Implement me");
7052
+ }
7053
+ }
7054
+
7034
7055
  function defaultParsingFlags() {
7035
7056
  // We need to deep clone this object, and es5 standard is not very
7036
7057
  // helpful.
@@ -7899,30 +7920,86 @@ if (typeof module !== 'undefined' && module.exports) {
7899
7920
  config._useUTC = true;
7900
7921
  config._tzm = timezoneMinutesFromString(input);
7901
7922
  break;
7923
+ // WEEKDAY - human
7924
+ case 'dd':
7925
+ case 'ddd':
7926
+ case 'dddd':
7927
+ a = getLangDefinition(config._l).weekdaysParse(input);
7928
+ // if we didn't get a weekday name, mark the date as invalid
7929
+ if (a != null) {
7930
+ config._w = config._w || {};
7931
+ config._w['d'] = a;
7932
+ } else {
7933
+ config._pf.invalidWeekday = input;
7934
+ }
7935
+ break;
7936
+ // WEEK, WEEK DAY - numeric
7902
7937
  case 'w':
7903
7938
  case 'ww':
7904
7939
  case 'W':
7905
7940
  case 'WW':
7906
7941
  case 'd':
7907
- case 'dd':
7908
- case 'ddd':
7909
- case 'dddd':
7910
7942
  case 'e':
7911
7943
  case 'E':
7912
7944
  token = token.substr(0, 1);
7913
7945
  /* falls through */
7914
- case 'gg':
7915
7946
  case 'gggg':
7916
- case 'GG':
7917
7947
  case 'GGGG':
7918
7948
  case 'GGGGG':
7919
7949
  token = token.substr(0, 2);
7920
7950
  if (input) {
7921
7951
  config._w = config._w || {};
7922
- config._w[token] = input;
7952
+ config._w[token] = toInt(input);
7923
7953
  }
7924
7954
  break;
7955
+ case 'gg':
7956
+ case 'GG':
7957
+ config._w = config._w || {};
7958
+ config._w[token] = moment.parseTwoDigitYear(input);
7959
+ }
7960
+ }
7961
+
7962
+ function dayOfYearFromWeekInfo(config) {
7963
+ var w, weekYear, week, weekday, dow, doy, temp, lang;
7964
+
7965
+ w = config._w;
7966
+ if (w.GG != null || w.W != null || w.E != null) {
7967
+ dow = 1;
7968
+ doy = 4;
7969
+
7970
+ // TODO: We need to take the current isoWeekYear, but that depends on
7971
+ // how we interpret now (local, utc, fixed offset). So create
7972
+ // a now version of current config (take local/utc/offset flags, and
7973
+ // create now).
7974
+ weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
7975
+ week = dfl(w.W, 1);
7976
+ weekday = dfl(w.E, 1);
7977
+ } else {
7978
+ lang = getLangDefinition(config._l);
7979
+ dow = lang._week.dow;
7980
+ doy = lang._week.doy;
7981
+
7982
+ weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
7983
+ week = dfl(w.w, 1);
7984
+
7985
+ if (w.d != null) {
7986
+ // weekday -- low day numbers are considered next week
7987
+ weekday = w.d;
7988
+ if (weekday < dow) {
7989
+ ++week;
7990
+ }
7991
+ } else if (w.e != null) {
7992
+ // local weekday -- counting starts from begining of week
7993
+ weekday = w.e + dow;
7994
+ } else {
7995
+ // default to begining of week
7996
+ weekday = dow;
7997
+ }
7925
7998
  }
7999
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
8000
+
8001
+ config._a[YEAR] = temp.year;
8002
+ config._dayOfYear = temp.dayOfYear;
7926
8003
  }
7927
8004
 
7928
8005
  // convert an array to a date.
@@ -7930,8 +8007,7 @@ if (typeof module !== 'undefined' && module.exports) {
7930
8007
  // note: all values past the year are optional and will default to the lowest possible value.
7931
8008
  // [year, month, day , hour, minute, second, millisecond]
7932
8009
  function dateFromConfig(config) {
7933
- var i, date, input = [], currentDate,
7934
- yearToUse, fixYear, w, temp, lang, weekday, week;
8010
+ var i, date, input = [], currentDate, yearToUse;
7935
8011
 
7936
8012
  if (config._d) {
7937
8013
  return;
@@ -7941,39 +8017,12 @@ if (typeof module !== 'undefined' && module.exports) {
7941
8017
 
7942
8018
  //compute day of the year from weeks and weekdays
7943
8019
  if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
7944
- fixYear = function (val) {
7945
- var intVal = parseInt(val, 10);
7946
- return val ?
7947
- (val.length < 3 ? (intVal > 68 ? 1900 + intVal : 2000 + intVal) : intVal) :
7948
- (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]);
7949
- };
7950
-
7951
- w = config._w;
7952
- if (w.GG != null || w.W != null || w.E != null) {
7953
- temp = dayOfYearFromWeeks(fixYear(w.GG), w.W || 1, w.E, 4, 1);
7954
- }
7955
- else {
7956
- lang = getLangDefinition(config._l);
7957
- weekday = w.d != null ? parseWeekday(w.d, lang) :
7958
- (w.e != null ? parseInt(w.e, 10) + lang._week.dow : 0);
7959
-
7960
- week = parseInt(w.w, 10) || 1;
7961
-
7962
- //if we're parsing 'd', then the low day numbers may be next week
7963
- if (w.d != null && weekday < lang._week.dow) {
7964
- week++;
7965
- }
7966
-
7967
- temp = dayOfYearFromWeeks(fixYear(w.gg), week, weekday, lang._week.doy, lang._week.dow);
7968
- }
7969
-
7970
- config._a[YEAR] = temp.year;
7971
- config._dayOfYear = temp.dayOfYear;
8020
+ dayOfYearFromWeekInfo(config);
7972
8021
  }
7973
8022
 
7974
8023
  //if the day of the year is set, figure out what it is
7975
8024
  if (config._dayOfYear) {
7976
- yearToUse = config._a[YEAR] == null ? currentDate[YEAR] : config._a[YEAR];
8025
+ yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
7977
8026
 
7978
8027
  if (config._dayOfYear > daysInYear(yearToUse)) {
7979
8028
  config._pf._overflowDayOfYear = true;
@@ -7998,11 +8047,12 @@ if (typeof module !== 'undefined' && module.exports) {
7998
8047
  config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
7999
8048
  }
8000
8049
 
8001
- // add the offsets to the time to be parsed so that we can have a clean array for checking isValid
8002
- input[HOUR] += toInt((config._tzm || 0) / 60);
8003
- input[MINUTE] += toInt((config._tzm || 0) % 60);
8004
-
8005
8050
  config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
8051
+ // Apply timezone offset from input. The actual zone can be changed
8052
+ // with parseZone.
8053
+ if (config._tzm != null) {
8054
+ config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
8055
+ }
8006
8056
  }
8007
8057
 
8008
8058
  function dateFromObject(config) {
@@ -8042,6 +8092,11 @@ if (typeof module !== 'undefined' && module.exports) {
8042
8092
  // date from string and format string
8043
8093
  function makeDateFromStringAndFormat(config) {
8044
8094
 
8095
+ if (config._f === moment.ISO_8601) {
8096
+ parseISO(config);
8097
+ return;
8098
+ }
8099
+
8045
8100
  config._a = [];
8046
8101
  config._pf.empty = true;
8047
8102
 
@@ -8154,7 +8209,7 @@ if (typeof module !== 'undefined' && module.exports) {
8154
8209
  }
8155
8210
 
8156
8211
  // date from iso format
8157
- function makeDateFromString(config) {
8212
+ function parseISO(config) {
8158
8213
  var i, l,
8159
8214
  string = config._i,
8160
8215
  match = isoRegex.exec(string);
@@ -8178,8 +8233,16 @@ if (typeof module !== 'undefined' && module.exports) {
8178
8233
  config._f += "Z";
8179
8234
  }
8180
8235
  makeDateFromStringAndFormat(config);
8236
+ } else {
8237
+ config._isValid = false;
8181
8238
  }
8182
- else {
8239
+ }
8240
+
8241
+ // date from iso format or fallback
8242
+ function makeDateFromString(config) {
8243
+ parseISO(config);
8244
+ if (config._isValid === false) {
8245
+ delete config._isValid;
8183
8246
  moment.createFromInputFallback(config);
8184
8247
  }
8185
8248
  }
@@ -8260,15 +8323,15 @@ if (typeof module !== 'undefined' && module.exports) {
8260
8323
  hours = round(minutes / 60),
8261
8324
  days = round(hours / 24),
8262
8325
  years = round(days / 365),
8263
- args = seconds < 45 && ['s', seconds] ||
8326
+ args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
8264
8327
  minutes === 1 && ['m'] ||
8265
- minutes < 45 && ['mm', minutes] ||
8328
+ minutes < relativeTimeThresholds.m && ['mm', minutes] ||
8266
8329
  hours === 1 && ['h'] ||
8267
- hours < 22 && ['hh', hours] ||
8330
+ hours < relativeTimeThresholds.h && ['hh', hours] ||
8268
8331
  days === 1 && ['d'] ||
8269
- days <= 25 && ['dd', days] ||
8270
- days <= 45 && ['M'] ||
8271
- days < 345 && ['MM', round(days / 30)] ||
8332
+ days <= relativeTimeThresholds.dd && ['dd', days] ||
8333
+ days <= relativeTimeThresholds.dm && ['M'] ||
8334
+ days < relativeTimeThresholds.dy && ['MM', round(days / 30)] ||
8272
8335
  years === 1 && ['y'] || ['yy', years];
8273
8336
  args[2] = withoutSuffix;
8274
8337
  args[3] = milliseconds > 0;
@@ -8314,6 +8377,7 @@ if (typeof module !== 'undefined' && module.exports) {
8314
8377
  function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
8315
8378
  var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
8316
8379
 
8380
+ d = d === 0 ? 7 : d;
8317
8381
  weekday = weekday != null ? weekday : firstDayOfWeek;
8318
8382
  daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
8319
8383
  dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
@@ -8389,6 +8453,40 @@ if (typeof module !== 'undefined' && module.exports) {
8389
8453
  config._d = new Date(config._i);
8390
8454
  });
8391
8455
 
8456
+ // Pick a moment m from moments so that m[fn](other) is true for all
8457
+ // other. This relies on the function fn to be transitive.
8458
+ //
8459
+ // moments should either be an array of moment objects or an array, whose
8460
+ // first element is an array of moment objects.
8461
+ function pickBy(fn, moments) {
8462
+ var res, i;
8463
+ if (moments.length === 1 && isArray(moments[0])) {
8464
+ moments = moments[0];
8465
+ }
8466
+ if (!moments.length) {
8467
+ return moment();
8468
+ }
8469
+ res = moments[0];
8470
+ for (i = 1; i < moments.length; ++i) {
8471
+ if (moments[i][fn](res)) {
8472
+ res = moments[i];
8473
+ }
8474
+ }
8475
+ return res;
8476
+ }
8477
+
8478
+ moment.min = function () {
8479
+ var args = [].slice.call(arguments, 0);
8480
+
8481
+ return pickBy('isBefore', args);
8482
+ };
8483
+
8484
+ moment.max = function () {
8485
+ var args = [].slice.call(arguments, 0);
8486
+
8487
+ return pickBy('isAfter', args);
8488
+ };
8489
+
8392
8490
  // creating with utc
8393
8491
  moment.utc = function (input, format, lang, strict) {
8394
8492
  var c;
@@ -8485,6 +8583,9 @@ if (typeof module !== 'undefined' && module.exports) {
8485
8583
  // default format
8486
8584
  moment.defaultFormat = isoFormat;
8487
8585
 
8586
+ // constant that refers to the ISO standard
8587
+ moment.ISO_8601 = function () {};
8588
+
8488
8589
  // Plugins that add properties should also add the key here (null value),
8489
8590
  // so we can properly clone ourselves.
8490
8591
  moment.momentProperties = momentProperties;
@@ -8493,6 +8594,15 @@ if (typeof module !== 'undefined' && module.exports) {
8493
8594
  // It is intended to keep the offset in sync with the timezone.
8494
8595
  moment.updateOffset = function () {};
8495
8596
 
8597
+ // This function allows you to set a threshold for relative time strings
8598
+ moment.relativeTimeThreshold = function(threshold, limit) {
8599
+ if (relativeTimeThresholds[threshold] === undefined) {
8600
+ return false;
8601
+ }
8602
+ relativeTimeThresholds[threshold] = limit;
8603
+ return true;
8604
+ };
8605
+
8496
8606
  // This function will load languages and then set the global language. If
8497
8607
  // no arguments are passed in, it will simply return the current global
8498
8608
  // language key.
@@ -8648,7 +8758,9 @@ if (typeof module !== 'undefined' && module.exports) {
8648
8758
  add : function (input, val) {
8649
8759
  var dur;
8650
8760
  // switch args to support add('s', 1) and add(1, 's')
8651
- if (typeof input === 'string') {
8761
+ if (typeof input === 'string' && typeof val === 'string') {
8762
+ dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
8763
+ } else if (typeof input === 'string') {
8652
8764
  dur = moment.duration(+val, input);
8653
8765
  } else {
8654
8766
  dur = moment.duration(input, val);
@@ -8660,7 +8772,9 @@ if (typeof module !== 'undefined' && module.exports) {
8660
8772
  subtract : function (input, val) {
8661
8773
  var dur;
8662
8774
  // switch args to support subtract('s', 1) and subtract(1, 's')
8663
- if (typeof input === 'string') {
8775
+ if (typeof input === 'string' && typeof val === 'string') {
8776
+ dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
8777
+ } else if (typeof input === 'string') {
8664
8778
  dur = moment.duration(+val, input);
8665
8779
  } else {
8666
8780
  dur = moment.duration(input, val);
@@ -8711,10 +8825,11 @@ if (typeof module !== 'undefined' && module.exports) {
8711
8825
  return this.from(moment(), withoutSuffix);
8712
8826
  },
8713
8827
 
8714
- calendar : function () {
8828
+ calendar : function (time) {
8715
8829
  // We want to compare the start of today, vs this.
8716
8830
  // Getting start-of-today depends on whether we're zone'd or not.
8717
- var sod = makeAs(moment(), this).startOf('day'),
8831
+ var now = time || moment(),
8832
+ sod = makeAs(now, this).startOf('day'),
8718
8833
  diff = this.diff(sod, 'days', true),
8719
8834
  format = diff < -6 ? 'sameElse' :
8720
8835
  diff < -1 ? 'lastWeek' :
@@ -8809,15 +8924,21 @@ if (typeof module !== 'undefined' && module.exports) {
8809
8924
  return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
8810
8925
  },
8811
8926
 
8812
- min: function (other) {
8813
- other = moment.apply(null, arguments);
8814
- return other < this ? this : other;
8815
- },
8816
-
8817
- max: function (other) {
8818
- other = moment.apply(null, arguments);
8819
- return other > this ? this : other;
8820
- },
8927
+ min: deprecate(
8928
+ "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
8929
+ function (other) {
8930
+ other = moment.apply(null, arguments);
8931
+ return other < this ? this : other;
8932
+ }
8933
+ ),
8934
+
8935
+ max: deprecate(
8936
+ "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
8937
+ function (other) {
8938
+ other = moment.apply(null, arguments);
8939
+ return other > this ? this : other;
8940
+ }
8941
+ ),
8821
8942
 
8822
8943
  // keepTime = true means only change the timezone, without affecting
8823
8944
  // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200
@@ -9485,6 +9606,16 @@ helpers = helpers || Handlebars.helpers; data = data || {};
9485
9606
 
9486
9607
  function program1(depth0,data) {
9487
9608
 
9609
+ var buffer = "", stack1;
9610
+ buffer += "scrivito_";
9611
+ if (stack1 = helpers.color) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9612
+ else { stack1 = depth0.color; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9613
+ buffer += escapeExpression(stack1);
9614
+ return buffer;
9615
+ }
9616
+
9617
+ function program3(depth0,data) {
9618
+
9488
9619
  var buffer = "", stack1;
9489
9620
  buffer += "\n <p class=\"scrivito_description\">";
9490
9621
  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9494,11 +9625,10 @@ function program1(depth0,data) {
9494
9625
  return buffer;
9495
9626
  }
9496
9627
 
9497
- buffer += "<div class=\"scrivito_confirmation_dialog scrivito_modal_prompt scrivito_center_dialog scrivito_";
9498
- if (stack1 = helpers.color) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9499
- else { stack1 = depth0.color; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9500
- buffer += escapeExpression(stack1)
9501
- + "\">\n <div class=\"scrivito_modal_header\">\n <i class=\"scrivito_icon\">";
9628
+ buffer += "<div class=\"scrivito_confirmation_dialog scrivito_modal_prompt scrivito_center_dialog\n ";
9629
+ stack1 = helpers['if'].call(depth0, depth0.color, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9630
+ if(stack1 || stack1 === 0) { buffer += stack1; }
9631
+ buffer += "\">\n <div class=\"scrivito_modal_header\">\n <i class=\"scrivito_icon\">";
9502
9632
  if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9503
9633
  else { stack1 = depth0.icon; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9504
9634
  if(stack1 || stack1 === 0) { buffer += stack1; }
@@ -9507,7 +9637,7 @@ function program1(depth0,data) {
9507
9637
  else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9508
9638
  buffer += escapeExpression(stack1)
9509
9639
  + "</h3>\n ";
9510
- stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9640
+ stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
9511
9641
  if(stack1 || stack1 === 0) { buffer += stack1; }
9512
9642
  buffer += "\n </div>\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_";
9513
9643
  if (stack1 = helpers.cancel_button_color) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9535,8 +9665,13 @@ function program1(depth0,data) {
9535
9665
  this.ScrivitoHandlebarsTemplates["details_dialog"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9536
9666
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9537
9667
  helpers = helpers || Handlebars.helpers; data = data || {};
9538
- var buffer = "", stack1, options, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
9668
+ var buffer = "", stack1, stack2, options, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
9539
9669
 
9670
+ function program1(depth0,data) {
9671
+
9672
+
9673
+ return "\n <div class=\"scrivito_button_bar scrivito_obj_menu\"></div>\n ";
9674
+ }
9540
9675
 
9541
9676
  buffer += "<div class=\"scrivito_details_dialog scrivito_modal_medium scrivito_adjust_dialog\">\n\n <div class=\"scrivito_modal_header\">\n <h3><i class=\"scrivito_icon\">";
9542
9677
  if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9545,7 +9680,10 @@ helpers = helpers || Handlebars.helpers; data = data || {};
9545
9680
  buffer += "</i>";
9546
9681
  options = {hash:{},data:data};
9547
9682
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "details_dialog.title", depth0.title, options) : helperMissing.call(depth0, "translate", "details_dialog.title", depth0.title, options)))
9548
- + "</h3>\n <div class=\"scrivito_details_dialog_saving_indicator\"></div>\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\">\n <i class=\"scrivito_icon scrivito_spinning\">&#xf023;</i>\n <div class=\"scrivito_details_dialog_markup\"></div>\n </div>\n\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_cancel scrivito_green\">";
9683
+ + "</h3>\n <div class=\"scrivito_details_dialog_saving_indicator\"></div>\n ";
9684
+ stack2 = helpers['if'].call(depth0, depth0.obj, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9685
+ if(stack2 || stack2 === 0) { buffer += stack2; }
9686
+ buffer += "\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\">\n <i class=\"scrivito_icon scrivito_spinning\">&#xf023;</i>\n <div class=\"scrivito_details_dialog_markup\"></div>\n </div>\n\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_cancel scrivito_green\">";
9549
9687
  options = {hash:{},data:data};
9550
9688
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "done", options) : helperMissing.call(depth0, "translate", "done", options)))
9551
9689
  + "</a>\n </div>\n\n</div>\n";
@@ -9723,29 +9861,45 @@ function program1(depth0,data) {
9723
9861
  this.ScrivitoHandlebarsTemplates["menu"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9724
9862
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9725
9863
  helpers = helpers || Handlebars.helpers; data = data || {};
9726
- var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression, self=this;
9864
+ var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
9727
9865
 
9728
9866
  function program1(depth0,data) {
9729
9867
 
9868
+ var buffer = "", stack1;
9869
+ buffer += "scrivito_";
9870
+ if (stack1 = helpers.align) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9871
+ else { stack1 = depth0.align; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9872
+ buffer += escapeExpression(stack1);
9873
+ return buffer;
9874
+ }
9875
+
9876
+ function program3(depth0,data) {
9877
+
9878
+
9879
+ return "scrivito_right";
9880
+ }
9881
+
9882
+ function program5(depth0,data) {
9883
+
9730
9884
  var buffer = "", stack1;
9731
9885
  buffer += "\n ";
9732
- stack1 = helpers['if'].call(depth0, depth0.is_present, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
9886
+ stack1 = helpers['if'].call(depth0, depth0.is_present, {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
9733
9887
  if(stack1 || stack1 === 0) { buffer += stack1; }
9734
9888
  buffer += "\n ";
9735
9889
  return buffer;
9736
9890
  }
9737
- function program2(depth0,data) {
9891
+ function program6(depth0,data) {
9738
9892
 
9739
9893
  var buffer = "", stack1;
9740
- buffer += "\n <li class=\"scrivito_menu_item ";
9894
+ buffer += "\n <li class=\"scrivito_menu_item scrivito_";
9741
9895
  if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9742
9896
  else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9743
9897
  buffer += escapeExpression(stack1)
9744
9898
  + " ";
9745
- stack1 = helpers['if'].call(depth0, depth0.is_disabled, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
9899
+ stack1 = helpers['if'].call(depth0, depth0.is_disabled, {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
9746
9900
  if(stack1 || stack1 === 0) { buffer += stack1; }
9747
9901
  buffer += "\">\n <span title=\"";
9748
- stack1 = helpers['if'].call(depth0, depth0.is_enabled, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
9902
+ stack1 = helpers['if'].call(depth0, depth0.is_enabled, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
9749
9903
  if(stack1 || stack1 === 0) { buffer += stack1; }
9750
9904
  buffer += "\">\n <i class=\"scrivito_icon\">";
9751
9905
  if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9758,13 +9912,13 @@ function program2(depth0,data) {
9758
9912
  + "\n </span>\n </li>\n ";
9759
9913
  return buffer;
9760
9914
  }
9761
- function program3(depth0,data) {
9915
+ function program7(depth0,data) {
9762
9916
 
9763
9917
 
9764
- return "disabled";
9918
+ return "scrivito_disabled";
9765
9919
  }
9766
9920
 
9767
- function program5(depth0,data) {
9921
+ function program9(depth0,data) {
9768
9922
 
9769
9923
  var stack1;
9770
9924
  if (stack1 = helpers.tooltip) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9772,7 +9926,7 @@ function program5(depth0,data) {
9772
9926
  return escapeExpression(stack1);
9773
9927
  }
9774
9928
 
9775
- function program7(depth0,data) {
9929
+ function program11(depth0,data) {
9776
9930
 
9777
9931
  var stack1;
9778
9932
  if (stack1 = helpers.reason_for_being_disabled) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -9780,13 +9934,12 @@ function program7(depth0,data) {
9780
9934
  return escapeExpression(stack1);
9781
9935
  }
9782
9936
 
9783
- buffer += "<div class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box scrivito_"
9784
- + escapeExpression(((stack1 = ((stack1 = depth0.options),stack1 == null || stack1 === false ? stack1 : stack1.align)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9785
- + " "
9786
- + escapeExpression(((stack1 = ((stack1 = depth0.options),stack1 == null || stack1 === false ? stack1 : stack1.css_class)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9787
- + "\">\n ";
9788
- stack2 = helpers.each.call(depth0, depth0.commands, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9789
- if(stack2 || stack2 === 0) { buffer += stack2; }
9937
+ buffer += "<div class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box ";
9938
+ stack1 = helpers['if'].call(depth0, depth0.align, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
9939
+ if(stack1 || stack1 === 0) { buffer += stack1; }
9940
+ buffer += "\">\n ";
9941
+ stack1 = helpers.each.call(depth0, depth0.commands, {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
9942
+ if(stack1 || stack1 === 0) { buffer += stack1; }
9790
9943
  buffer += "\n </ul>\n</div>\n";
9791
9944
  return buffer;
9792
9945
  });
@@ -9800,13 +9953,46 @@ helpers = helpers || Handlebars.helpers; data = data || {};
9800
9953
 
9801
9954
 
9802
9955
 
9803
- return "<div class=\"scrivito_topbar\">\n <div class=\"scrivito_first_level\">\n <div id=\"scrivito_menu_bar_toggle\" class=\"scrivito_viewmodes_wrapper\"></div>\n <div class=\"scrivito_button_bar scrivito_app scrivito_no_hover\"><span class=\"scrivito_logo\"></span></div>\n <div id=\"scrivito_select_workspace\" class=\"scrivito_button_bar\"></div>\n <div id=\"scrivito_menu_bar_dropdown\" class=\"scrivito_button_bar scrivito_right\"></div>\n <div id=\"scrivito_menu_bar_saving_indicator\"></div>\n </div>\n</div>\n";
9956
+ return "<div class=\"scrivito_topbar\">\n <div class=\"scrivito_first_level\">\n <div id=\"scrivito_menu_bar_toggle\" class=\"scrivito_viewmodes_wrapper\"></div>\n <div class=\"scrivito_button_bar scrivito_app scrivito_no_hover\"><span class=\"scrivito_logo\"></span></div>\n <div id=\"scrivito_select_workspace\" class=\"scrivito_button_bar\"></div>\n <div id=\"scrivito_current_page_menu\" class=\"scrivito_button_bar scrivito_right\"></div>\n <div id=\"scrivito_menu_bar_saving_indicator\"></div>\n </div>\n</div>\n";
9804
9957
  });
9805
9958
  return this.ScrivitoHandlebarsTemplates["menu_bar"];
9806
9959
  }).call(this);
9807
9960
  (function() {
9808
9961
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9809
- this.ScrivitoHandlebarsTemplates["menu_bar_dropdown"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9962
+ this.ScrivitoHandlebarsTemplates["menu_bar_toggle"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9963
+ this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9964
+ helpers = helpers || Handlebars.helpers; data = data || {};
9965
+ var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression;
9966
+
9967
+
9968
+ buffer += "<div class=\"scrivito_viewmodes scrivito_viewmode_";
9969
+ if (stack1 = helpers.mode) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9970
+ else { stack1 = depth0.mode; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9971
+ buffer += escapeExpression(stack1)
9972
+ + "_active\">\n <span class=\"scrivito_viewmode_pill\"></span>\n\n <div class=\"scrivito_viewmode_view\">\n <span class=\"scrivito_viewmode_icon "
9973
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_view_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9974
+ + "\"></span>\n <span class=\"scrivito_viewmode_label\">"
9975
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_view_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9976
+ + "</span>\n </div>\n\n <div class=\"scrivito_viewmode_editing\">\n <span class=\"scrivito_viewmode_icon "
9977
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_editing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9978
+ + "\"></span>\n <span class=\"scrivito_viewmode_label\">"
9979
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_editing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9980
+ + "</span>\n </div>\n\n <div class=\"scrivito_viewmode_";
9981
+ if (stack2 = helpers.comparing_mode) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
9982
+ else { stack2 = depth0.comparing_mode; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
9983
+ buffer += escapeExpression(stack2)
9984
+ + "\">\n <span class=\"scrivito_viewmode_icon "
9985
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_comparing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9986
+ + "\"></span>\n <span class=\"scrivito_viewmode_label scrivito_comparing_mode_toggle\">\n "
9987
+ + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_comparing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9988
+ + " <i class=\"scrivito_icon\">&#xf025;</i>\n </span>\n </div>\n</div>\n";
9989
+ return buffer;
9990
+ });
9991
+ return this.ScrivitoHandlebarsTemplates["menu_bar_toggle"];
9992
+ }).call(this);
9993
+ (function() {
9994
+ this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9995
+ this.ScrivitoHandlebarsTemplates["obj_menu"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9810
9996
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9811
9997
  helpers = helpers || Handlebars.helpers; data = data || {};
9812
9998
  var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression, self=this;
@@ -9835,98 +10021,24 @@ function program7(depth0,data) {
9835
10021
  return "\n scrivito_conflict\n ";
9836
10022
  }
9837
10023
 
9838
- function program9(depth0,data) {
9839
-
9840
- var buffer = "", stack1;
9841
- buffer += "\n ";
9842
- stack1 = helpers['if'].call(depth0, depth0.is_present, {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});
9843
- if(stack1 || stack1 === 0) { buffer += stack1; }
9844
- buffer += "\n ";
9845
- return buffer;
9846
- }
9847
- function program10(depth0,data) {
9848
-
9849
- var buffer = "", stack1;
9850
- buffer += "\n <li id=\"scrivito_";
9851
- if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9852
- else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9853
- buffer += escapeExpression(stack1)
9854
- + "\" class=\"scrivito_menu_item ";
9855
- stack1 = helpers['if'].call(depth0, depth0.is_disabled, {hash:{},inverse:self.noop,fn:self.program(11, program11, data),data:data});
9856
- if(stack1 || stack1 === 0) { buffer += stack1; }
9857
- buffer += "\"\n title=\"";
9858
- if (stack1 = helpers.reason_for_being_disabled) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9859
- else { stack1 = depth0.reason_for_being_disabled; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9860
- buffer += escapeExpression(stack1)
9861
- + "\">\n <span><i class=\"scrivito_icon\">";
9862
- if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9863
- else { stack1 = depth0.icon; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9864
- if(stack1 || stack1 === 0) { buffer += stack1; }
9865
- buffer += "</i>";
9866
- if (stack1 = helpers.title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9867
- else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9868
- buffer += escapeExpression(stack1)
9869
- + "</span>\n </li>\n ";
9870
- return buffer;
9871
- }
9872
- function program11(depth0,data) {
9873
-
9874
-
9875
- return "disabled";
9876
- }
9877
-
9878
- buffer += "<i class=\"scrivito_icon\n ";
9879
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.current_page),stack1 == null || stack1 === false ? stack1 : stack1.is_new), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
10024
+ buffer += "<i title=\""
10025
+ + escapeExpression(((stack1 = ((stack1 = depth0.obj),stack1 == null || stack1 === false ? stack1 : stack1.tooltip)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
10026
+ + "\" class=\"scrivito_icon\n ";
10027
+ stack2 = helpers['if'].call(depth0, ((stack1 = depth0.obj),stack1 == null || stack1 === false ? stack1 : stack1.is_new), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9880
10028
  if(stack2 || stack2 === 0) { buffer += stack2; }
9881
10029
  buffer += "\n\n ";
9882
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.current_page),stack1 == null || stack1 === false ? stack1 : stack1.is_edited), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
10030
+ stack2 = helpers['if'].call(depth0, ((stack1 = depth0.obj),stack1 == null || stack1 === false ? stack1 : stack1.is_edited), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
9883
10031
  if(stack2 || stack2 === 0) { buffer += stack2; }
9884
10032
  buffer += "\n\n ";
9885
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.current_page),stack1 == null || stack1 === false ? stack1 : stack1.is_deleted), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
10033
+ stack2 = helpers['if'].call(depth0, ((stack1 = depth0.obj),stack1 == null || stack1 === false ? stack1 : stack1.is_deleted), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
9886
10034
  if(stack2 || stack2 === 0) { buffer += stack2; }
9887
10035
  buffer += "\n\n ";
9888
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.current_page),stack1 == null || stack1 === false ? stack1 : stack1.has_conflict), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
10036
+ stack2 = helpers['if'].call(depth0, ((stack1 = depth0.obj),stack1 == null || stack1 === false ? stack1 : stack1.has_conflict), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
9889
10037
  if(stack2 || stack2 === 0) { buffer += stack2; }
9890
- buffer += "\n\">&#xf087;</i>\n\n<ul class=\"scrivito_menu_box scrivito_right\" style=\"display: none;\">\n ";
9891
- stack2 = helpers.each.call(depth0, depth0.commands, {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
9892
- if(stack2 || stack2 === 0) { buffer += stack2; }
9893
- buffer += "\n</ul>\n";
9894
- return buffer;
9895
- });
9896
- return this.ScrivitoHandlebarsTemplates["menu_bar_dropdown"];
9897
- }).call(this);
9898
- (function() {
9899
- this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9900
- this.ScrivitoHandlebarsTemplates["menu_bar_toggle"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9901
- this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9902
- helpers = helpers || Handlebars.helpers; data = data || {};
9903
- var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression;
9904
-
9905
-
9906
- buffer += "<div class=\"scrivito_viewmodes scrivito_viewmode_";
9907
- if (stack1 = helpers.mode) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9908
- else { stack1 = depth0.mode; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9909
- buffer += escapeExpression(stack1)
9910
- + "_active\">\n <span class=\"scrivito_viewmode_pill\"></span>\n\n <div class=\"scrivito_viewmode_view\">\n <span class=\"scrivito_viewmode_icon "
9911
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_view_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9912
- + "\"></span>\n <span class=\"scrivito_viewmode_label\">"
9913
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_view_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9914
- + "</span>\n </div>\n\n <div class=\"scrivito_viewmode_editing\">\n <span class=\"scrivito_viewmode_icon "
9915
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_editing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9916
- + "\"></span>\n <span class=\"scrivito_viewmode_label\">"
9917
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_editing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9918
- + "</span>\n </div>\n\n <div class=\"scrivito_viewmode_";
9919
- if (stack2 = helpers.comparing_mode) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
9920
- else { stack2 = depth0.comparing_mode; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
9921
- buffer += escapeExpression(stack2)
9922
- + "\">\n <span class=\"scrivito_viewmode_icon "
9923
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_comparing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9924
- + "\"></span>\n <span class=\"scrivito_viewmode_label scrivito_comparing_mode_toggle\">\n "
9925
- + escapeExpression(((stack1 = ((stack1 = depth0.switch_to_comparing_mode_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
9926
- + " <i class=\"scrivito_icon\">&#xf025;</i>\n </span>\n </div>\n</div>\n";
10038
+ buffer += "\n\">&#xf087;</i>\n";
9927
10039
  return buffer;
9928
10040
  });
9929
- return this.ScrivitoHandlebarsTemplates["menu_bar_toggle"];
10041
+ return this.ScrivitoHandlebarsTemplates["obj_menu"];
9930
10042
  }).call(this);
9931
10043
  (function() {
9932
10044
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
@@ -9956,7 +10068,7 @@ function program1(depth0,data) {
9956
10068
  if(stack1 || stack1 === 0) { buffer += stack1; }
9957
10069
  buffer += "</i>";
9958
10070
  options = {hash:{},data:data};
9959
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "inplace_marker.sort_items", options) : helperMissing.call(depth0, "translate", "inplace_marker.sort_items", options)))
10071
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "obj_sorting_dialog.title", options) : helperMissing.call(depth0, "translate", "obj_sorting_dialog.title", options)))
9960
10072
  + "</h3>\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\">\n <ul id=\"scrivito_obj_sorting_sortable\">\n ";
9961
10073
  stack2 = helpers.each.call(depth0, depth0.child_list, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9962
10074
  if(stack2 || stack2 === 0) { buffer += stack2; }
@@ -9992,6 +10104,16 @@ helpers = helpers || Handlebars.helpers; data = data || {};
9992
10104
 
9993
10105
  function program1(depth0,data) {
9994
10106
 
10107
+ var buffer = "", stack1;
10108
+ buffer += "scrivito_";
10109
+ if (stack1 = helpers.color) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
10110
+ else { stack1 = depth0.color; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
10111
+ buffer += escapeExpression(stack1);
10112
+ return buffer;
10113
+ }
10114
+
10115
+ function program3(depth0,data) {
10116
+
9995
10117
  var buffer = "", stack1;
9996
10118
  buffer += "\n <p class=\"scrivito_description\">";
9997
10119
  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -10001,7 +10123,10 @@ function program1(depth0,data) {
10001
10123
  return buffer;
10002
10124
  }
10003
10125
 
10004
- buffer += "<div class=\"scrivito_prompt_dialog scrivito_center_dialog scrivito_modal_prompt\">\n <div class=\"scrivito_modal_header\">\n <i class=\"scrivito_icon\">";
10126
+ buffer += "<div class=\"scrivito_prompt_dialog scrivito_center_dialog scrivito_modal_prompt\n ";
10127
+ stack1 = helpers['if'].call(depth0, depth0.color, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
10128
+ if(stack1 || stack1 === 0) { buffer += stack1; }
10129
+ buffer += "\">\n <div class=\"scrivito_modal_header\">\n <i class=\"scrivito_icon\">";
10005
10130
  if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
10006
10131
  else { stack1 = depth0.icon; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
10007
10132
  if(stack1 || stack1 === 0) { buffer += stack1; }
@@ -10010,7 +10135,7 @@ function program1(depth0,data) {
10010
10135
  else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
10011
10136
  buffer += escapeExpression(stack1)
10012
10137
  + "</h3>\n ";
10013
- stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
10138
+ stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
10014
10139
  if(stack1 || stack1 === 0) { buffer += stack1; }
10015
10140
  buffer += "\n </div>\n <div class=\"scrivito_modal_body\">\n <input type=\"text\" value=\"";
10016
10141
  if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -10151,36 +10276,44 @@ function program8(depth0,data) {
10151
10276
  this.ScrivitoHandlebarsTemplates["workspace_select_menu_bar_item"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
10152
10277
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
10153
10278
  helpers = helpers || Handlebars.helpers; data = data || {};
10154
- var buffer = "", stack1, stack2, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType="function", self=this;
10279
+ var buffer = "", stack1, stack2, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType="function";
10155
10280
 
10156
10281
  function program1(depth0,data) {
10157
10282
 
10158
- var buffer = "", stack1, options;
10159
- buffer += "\n <li id=\"scrivito_changes_list_toggle\" class=\"scrivito_menu_item\">\n <span>\n <i class=\"scrivito_icon\" title=\"";
10283
+ var buffer = "", stack1, stack2, options;
10284
+ buffer += "\n <li class=\"scrivito_menu_separator\"></li>\n <li id=\"scrivito_changes_list_toggle\" class=\"scrivito_menu_item\">\n <span>\n <i class=\"scrivito_icon\" title=\"";
10160
10285
  options = {hash:{},data:data};
10161
10286
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_list.menu_item", options) : helperMissing.call(depth0, "translate", "changes_list.menu_item", options)))
10162
10287
  + "\">&#xf080;</i>\n ";
10163
10288
  options = {hash:{},data:data};
10164
10289
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_list.menu_item", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "changes_list.menu_item", depth0.current_short_title, options)))
10165
- + "\n </span>\n </li>\n <li class=\"scrivito_menu_separator\"></li>\n <li class=\"scrivito_menu_item\">\n <span id='ip-publish-current-ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10166
- options = {hash:{},data:data};
10167
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.publish_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.publish_working_copy", depth0.current_short_title, options)))
10168
- + " \">\n &#xf064;\n </i>\n ";
10169
- options = {hash:{},data:data};
10170
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.publish_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.publish_working_copy", depth0.current_short_title, options)))
10171
- + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='ip-rename-current-ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10290
+ + "\n </span>\n </li>\n <li class=\"scrivito_menu_item ";
10291
+ stack2 = helpers['if'].call(depth0, ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.is_disabled), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
10292
+ if(stack2 || stack2 === 0) { buffer += stack2; }
10293
+ buffer += "\">\n <span id='"
10294
+ + escapeExpression(((stack1 = ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.id)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
10295
+ + "' title='"
10296
+ + escapeExpression(((stack1 = ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.reason_for_being_disabled)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
10297
+ + "'>\n <i class=\"scrivito_icon\" title=\""
10298
+ + escapeExpression(((stack1 = ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.tooltip)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
10299
+ + "\">\n ";
10300
+ stack2 = ((stack1 = ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.icon)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1);
10301
+ if(stack2 || stack2 === 0) { buffer += stack2; }
10302
+ buffer += "\n </i>\n "
10303
+ + escapeExpression(((stack1 = ((stack1 = depth0.publish_command),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
10304
+ + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='scrivito_rename_current_ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10172
10305
  options = {hash:{},data:data};
10173
10306
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.rename_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.rename_working_copy", depth0.current_short_title, options)))
10174
10307
  + " \">&#61519;</i>\n ";
10175
10308
  options = {hash:{},data:data};
10176
10309
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.rename_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.rename_working_copy", depth0.current_short_title, options)))
10177
- + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='ip-rebase-current-ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10310
+ + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='scrivito_rebase_current_ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10178
10311
  options = {hash:{},data:data};
10179
10312
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.rebase_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.rebase_working_copy", depth0.current_short_title, options)))
10180
10313
  + " \">\n &#xf023;\n </i>\n ";
10181
10314
  options = {hash:{},data:data};
10182
10315
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.rebase_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.rebase_working_copy", depth0.current_short_title, options)))
10183
- + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='ip-delete-current-ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10316
+ + "\n </span>\n </li>\n <li class=\"scrivito_menu_item\">\n <span id='scrivito_delete_current_ws'>\n <i class=\"scrivito_icon\"\n title=\"";
10184
10317
  options = {hash:{},data:data};
10185
10318
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.delete_working_copy", depth0.current_short_title, options) : helperMissing.call(depth0, "translate", "menu_bar.delete_working_copy", depth0.current_short_title, options)))
10186
10319
  + " \">&#61464;</i>\n ";
@@ -10189,12 +10322,17 @@ function program1(depth0,data) {
10189
10322
  + "\n </span>\n </li>\n ";
10190
10323
  return buffer;
10191
10324
  }
10325
+ function program2(depth0,data) {
10326
+
10327
+
10328
+ return "scrivito_disabled";
10329
+ }
10192
10330
 
10193
10331
  buffer += "<i class=\"scrivito_icon\">&#xf011;</i>\n<span class=\"scrivito_button_label\">";
10194
10332
  if (stack1 = helpers.current_long_title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
10195
10333
  else { stack1 = depth0.current_long_title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
10196
10334
  buffer += escapeExpression(stack1)
10197
- + "</span>\n\n<ul class=\"scrivito_menu_box\" style=\"display: none;\">\n <li class=\"scrivito_menu_item\">\n <span id='ip-create-new-ws'>\n <i class=\"scrivito_icon\" title=\"";
10335
+ + "</span>\n\n<ul class=\"scrivito_menu_box\" style=\"display: none;\">\n <li class=\"scrivito_menu_item\">\n <span id='scrivito_create_new_ws'>\n <i class=\"scrivito_icon\" title=\"";
10198
10336
  options = {hash:{},data:data};
10199
10337
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "menu_bar.create_new_working_copy", options) : helperMissing.call(depth0, "translate", "menu_bar.create_new_working_copy", options)))
10200
10338
  + "\">&#61474;</i>\n ";
@@ -10225,7 +10363,6 @@ $.i18n().load({
10225
10363
  'done': 'Fertig',
10226
10364
  'loading': 'Lade...',
10227
10365
  'current_page': 'Aktuelle Seite',
10228
- 'resource': 'Ressource',
10229
10366
 
10230
10367
  'obj.tooltip.is_new': 'Diese Seite ist neu.',
10231
10368
  'obj.tooltip.is_edited': 'Diese Seite wurde geändert.',
@@ -10246,14 +10383,29 @@ $.i18n().load({
10246
10383
 
10247
10384
  'details_dialog.title': '$1 bearbeiten',
10248
10385
 
10386
+ 'resource_dialog.title': 'Ressource',
10387
+
10388
+ 'resource_dialog.commands.revert_obj.title': 'Änderungen an Ressource verwerfen',
10389
+ 'resource_dialog.commands.revert_obj.rtc_workspace': 'Diese Ressource ist Teil der "rtc"-Arbeitskopie, bei der Änderungen nicht verworfen werden können.',
10390
+ 'resource_dialog.commands.revert_obj.new_obj': 'Dies ist eine neue Ressource. Um die Erstellung dieser Ressource rückgängig zu machen, löschen Sie sie bitte.',
10391
+ 'resource_dialog.commands.revert_obj.not_modified_obj': 'Diese Ressource wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
10392
+ 'resource_dialog.commands.revert_obj.dialog.title': 'Wirklich Änderungen an dieser Ressource verwerfen?',
10393
+
10394
+ 'resource_dialog.commands.restore_obj.title': 'Ressource wiederherstellen',
10395
+ 'resource_dialog.commands.restore_obj.rtc_workspace': 'Diese Ressource ist Teil der "rtc"-Arbeitskopie, bei der gelöschte Seiten nicht wiederhergestellt werden können.',
10396
+
10397
+ 'resource_dialog.commands.mark_resolved_obj.title': 'Parallele Änderungen an der Ressource überschreiben',
10398
+ 'resource_dialog.commands.mark_resolved_obj.dialog.description': 'Diese Ressource wurde in einer anderen, inzwischen veröffentlichten Arbeitskopie geändert. Bitte bestätigen Sie, dass Ihre Änderungen erhalten und die parallel durchgeführten Änderungen verworfen werden.',
10399
+
10400
+ 'resource_dialog.commands.delete_obj.title': 'Ressource löschen',
10401
+ 'resource_dialog.commands.delete_obj.dialog.title': 'Wirklich diese Ressource löschen?',
10402
+ 'resource_dialog.commands.delete_obj.dialog.description': 'Änderungen an einer gelöschten Ressource können nicht wiederhergestellt werden.',
10403
+
10249
10404
  'menu_bar.working_copy': 'Arbeitskopie',
10250
10405
  'menu_bar.empty_workspace_title': '<leerer Titel>',
10251
10406
  'menu_bar.published_workspace_title': 'Veröffentlichte Inhalte',
10252
10407
  'menu_bar.loading_workspaces': 'Lade Arbeitskopien',
10253
10408
  'menu_bar.select_working_copy': '"$1" auswählen',
10254
- 'menu_bar.publish_working_copy': '"$1" veröffentlichen',
10255
- 'menu_bar.publish_ws_confirmation': '"$1" veröffentlichen?',
10256
- 'menu_bar.publish_ws_confirmation_desc': 'Eine Arbeitskopie zu veröffentlichen ist endgültig. Dieser Vorgang kann nicht rückgängig gemacht werden.',
10257
10409
  'menu_bar.rebase_working_copy': '"$1" aktualisieren',
10258
10410
  'menu_bar.rename_working_copy': '"$1" umbenennen',
10259
10411
  'menu_bar.rename_working_copy_desc': 'Bitte geben Sie den neuen Titel der Arbeitskopie ein.',
@@ -10265,7 +10417,6 @@ $.i18n().load({
10265
10417
  'menu_bar.move': 'Verschieben',
10266
10418
  'menu_bar.copy': 'Kopieren',
10267
10419
  'menu_bar.create': 'Anlegen',
10268
- 'menu_bar.publish': 'Veröffentlichen',
10269
10420
  'menu_bar.create_new_working_copy': 'Arbeitskopie anlegen',
10270
10421
  'menu_bar.create_new_ws_confirmation': 'Arbeitskopie anlegen',
10271
10422
  'menu_bar.create_new_ws_confirmation_desc': 'Bitte geben Sie den Titel der neuen Arbeitskopie ein.',
@@ -10274,13 +10425,13 @@ $.i18n().load({
10274
10425
  'saving_indicator_item.saving': 'Wird gespeichert...',
10275
10426
  'saving_indicator_item.saved': 'Änderungen gespeichert',
10276
10427
 
10277
- 'widget_menus.widget_is_new': 'Widget ist neu',
10278
- 'widget_menus.widget_is_edited': 'Widget wurde geändert',
10279
- 'widget_menus.widget_is_edited_and_dragged_here': 'Widget wurde geändert und hierher gezogen',
10280
- 'widget_menus.widget_is_edited_and_dragged_away': 'Widget wurde geändert und von hier weggezogen',
10281
- 'widget_menus.widget_is_deleted': 'Widget wurde gelöscht',
10282
- 'widget_menus.widget_is_dragged_here': 'Widget wurde hierher gezogen',
10283
- 'widget_menus.widget_is_dragged_away': 'Widget wurde von hier weggezogen',
10428
+ 'widget_marker.widget_is_new': 'Widget ist neu',
10429
+ 'widget_marker.widget_is_edited': 'Widget wurde geändert',
10430
+ 'widget_marker.widget_is_edited_and_dragged_here': 'Widget wurde geändert und hierher gezogen',
10431
+ 'widget_marker.widget_is_edited_and_dragged_away': 'Widget wurde geändert und von hier weggezogen',
10432
+ 'widget_marker.widget_is_deleted': 'Widget wurde gelöscht',
10433
+ 'widget_marker.widget_is_dragged_here': 'Widget wurde hierher gezogen',
10434
+ 'widget_marker.widget_is_dragged_away': 'Widget wurde von hier weggezogen',
10284
10435
 
10285
10436
  'child_list_menu.description': 'Elemente von $1',
10286
10437
 
@@ -10310,12 +10461,14 @@ $.i18n().load({
10310
10461
  'commands.revert_obj.rtc_workspace': 'Diese Seite ist Teil der "rtc"-Arbeitskopie, bei der Änderungen nicht verworfen werden können.',
10311
10462
  'commands.revert_obj.new_obj': 'Dies ist eine neue Seite. Um die Erstellung dieser Seite rückgängig zu machen, löschen Sie sie bitte.',
10312
10463
  'commands.revert_obj.not_modified_obj': 'Diese Seite wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
10464
+ 'commands.revert_obj.is_binary': 'Verwerfen von Änderungen ist nicht verfügbar für binäre Daten.',
10313
10465
  'commands.revert_obj.dialog.title': 'Wirklich Änderungen an dieser Seite verwerfen?',
10314
10466
  'commands.revert_obj.dialog.description': 'Verworfene Änderungen können nicht wiederhergestellt werden.',
10315
10467
  'commands.revert_obj.dialog.confirm': 'Verwerfen',
10316
10468
 
10317
10469
  'commands.restore_obj.title': 'Seite wiederherstellen',
10318
10470
  'commands.restore_obj.rtc_workspace': 'Diese Seite ist Teil der "rtc"-Arbeitskopie, bei der gelöschte Seiten nicht wiederhergestellt werden können.',
10471
+ 'commands.restore_obj.is_binary': 'Wiederherstellen ist nicht verfügbar für binäre Daten.',
10319
10472
 
10320
10473
  'commands.mark_resolved_obj.title': 'Parallele Änderungen an der Seite überschreiben',
10321
10474
  'commands.mark_resolved_obj.dialog.title': 'Wirklich parallele Änderungen an der Seite überschreiben?',
@@ -10342,6 +10495,8 @@ $.i18n().load({
10342
10495
 
10343
10496
  'commands.add_widget.title': 'Widget einfügen',
10344
10497
 
10498
+ 'obj_sorting_dialog.title': 'Elemente sortieren',
10499
+
10345
10500
  'commands.widget_details.title': 'Widget-Eigenschaften',
10346
10501
  'commands.widget_details.no_details_view': 'Dieses Widget hat keine Eigenschaften',
10347
10502
 
@@ -10362,6 +10517,12 @@ $.i18n().load({
10362
10517
  'commands.switch_mode.deleted': 'Gelöscht',
10363
10518
  'commands.switch_mode.disabled': 'Aktuell ausgewählter Anzeigemodus',
10364
10519
 
10520
+ 'commands.publish_workspace.title': '"$1" veröffentlichen',
10521
+ 'commands.publish_workspace.permission_denied': 'Die Arbeitskopie kann aufgrund fehlender Benutzerrechte nicht veröffentlicht werden.',
10522
+ 'commands.publish_workspace.dialog.confirm': 'Veröffentlichen',
10523
+ 'commands.publish_workspace.dialog.title': '"$1" veröffentlichen?',
10524
+ 'commands.publish_workspace.dialog.description': 'Eine Arbeitskopie zu veröffentlichen ist endgültig. Dieser Vorgang kann nicht rückgängig gemacht werden.',
10525
+
10365
10526
  'image_upload.too_many_files': 'Nur eine Datei erlaubt.',
10366
10527
 
10367
10528
  'warn_before_unloading': 'Sie haben nicht gespeicherte Änderungen! Sind Sie sicher, dass sie schließen wollen?'
@@ -10377,7 +10538,6 @@ $.i18n().load({
10377
10538
  'done': 'Done',
10378
10539
  'loading': 'Loading...',
10379
10540
  'current_page': 'current page',
10380
- 'resource': 'resource',
10381
10541
 
10382
10542
  'obj.tooltip.is_new': 'This page is new.',
10383
10543
  'obj.tooltip.is_edited': 'This page has been modified.',
@@ -10398,14 +10558,29 @@ $.i18n().load({
10398
10558
 
10399
10559
  'details_dialog.title': 'Edit $1',
10400
10560
 
10561
+ 'resource_dialog.title': 'resource',
10562
+
10563
+ 'resource_dialog.commands.revert_obj.title': 'Discard changes to resource',
10564
+ 'resource_dialog.commands.revert_obj.rtc_workspace': 'This resource is part of the "rtc" working copy, for which discarding changes is not supported.',
10565
+ 'resource_dialog.commands.revert_obj.new_obj': 'This is a new resource. To discard the creation of this resource, please delete it.',
10566
+ 'resource_dialog.commands.revert_obj.not_modified_obj': 'This resource has not been modified. Therefore, nothing can be discarded.',
10567
+ 'resource_dialog.commands.revert_obj.dialog.title': 'Really discard changes to this resource?',
10568
+
10569
+ 'resource_dialog.commands.restore_obj.title': 'Restore resource',
10570
+ 'resource_dialog.commands.restore_obj.rtc_workspace': 'This resource is part of the "rtc" working copy, for which restoring resources is not supported.',
10571
+
10572
+ 'resource_dialog.commands.mark_resolved_obj.title': 'Override concurrent changes to resource',
10573
+ 'resource_dialog.commands.mark_resolved_obj.dialog.description': 'This resource was altered in a different working copy that has been published. Please confirm that you want to keep your changes and discard the ones concurrently made by others.',
10574
+
10575
+ 'resource_dialog.commands.delete_obj.title': 'Delete resource',
10576
+ 'resource_dialog.commands.delete_obj.dialog.title': 'Really delete this resource?',
10577
+ 'resource_dialog.commands.delete_obj.dialog.description': 'Changes to a deleted resource cannot be restored.',
10578
+
10401
10579
  'menu_bar.working_copy': 'Working copy',
10402
10580
  'menu_bar.empty_workspace_title': '<empty title>',
10403
10581
  'menu_bar.published_workspace_title': 'Published content',
10404
10582
  'menu_bar.loading_workspaces': 'Loading working copies',
10405
10583
  'menu_bar.select_working_copy': 'Select "$1"',
10406
- 'menu_bar.publish_working_copy': 'Publish "$1"',
10407
- 'menu_bar.publish_ws_confirmation': 'Publish "$1"?',
10408
- 'menu_bar.publish_ws_confirmation_desc': 'Publishing a working copy is final. This action cannot be undone.',
10409
10584
  'menu_bar.rebase_working_copy': 'Update "$1"',
10410
10585
  'menu_bar.rename_working_copy': 'Rename "$1"',
10411
10586
  'menu_bar.rename_working_copy_desc': 'Please enter the new title of the working copy.',
@@ -10417,7 +10592,6 @@ $.i18n().load({
10417
10592
  'menu_bar.create': 'Create',
10418
10593
  'menu_bar.move': 'Move',
10419
10594
  'menu_bar.copy': 'Copy',
10420
- 'menu_bar.publish': 'Publish',
10421
10595
  'menu_bar.create_new_working_copy': 'Create working copy',
10422
10596
  'menu_bar.create_new_ws_confirmation': 'Create a working copy',
10423
10597
  'menu_bar.create_new_ws_confirmation_desc': 'Please enter the title of the new working copy.',
@@ -10426,13 +10600,13 @@ $.i18n().load({
10426
10600
  'saving_indicator_item.saving': 'Saving...',
10427
10601
  'saving_indicator_item.saved': 'Changes saved',
10428
10602
 
10429
- 'widget_menus.widget_is_new': 'Widget is new',
10430
- 'widget_menus.widget_is_edited': 'Widget has been modified',
10431
- 'widget_menus.widget_is_edited_and_dragged_here': 'Widget has been modified and dragged here',
10432
- 'widget_menus.widget_is_edited_and_dragged_away': 'Widget has been modified and dragged away from here',
10433
- 'widget_menus.widget_is_deleted': 'Widget has been deleted',
10434
- 'widget_menus.widget_is_dragged_here': 'Widget has been dragged here',
10435
- 'widget_menus.widget_is_dragged_away': 'Widget has been dragged away from here',
10603
+ 'widget_marker.widget_is_new': 'Widget is new',
10604
+ 'widget_marker.widget_is_edited': 'Widget has been modified',
10605
+ 'widget_marker.widget_is_edited_and_dragged_here': 'Widget has been modified and dragged here',
10606
+ 'widget_marker.widget_is_edited_and_dragged_away': 'Widget has been modified and dragged away from here',
10607
+ 'widget_marker.widget_is_deleted': 'Widget has been deleted',
10608
+ 'widget_marker.widget_is_dragged_here': 'Widget has been dragged here',
10609
+ 'widget_marker.widget_is_dragged_away': 'Widget has been dragged away from here',
10436
10610
 
10437
10611
  'child_list_menu.description': 'Items of $1',
10438
10612
 
@@ -10461,6 +10635,7 @@ $.i18n().load({
10461
10635
  'commands.revert_obj.published_workspace': 'Since this is the published content, nothing has been modified. Therefore, nothing can be discarded.',
10462
10636
  'commands.revert_obj.rtc_workspace': 'This page is part of the "rtc" working copy, for which discarding changes is not supported.',
10463
10637
  'commands.revert_obj.new_obj': 'This is a new page. To discard the creation of this page, please delete it.',
10638
+ 'commands.revert_obj.is_binary': 'Discarding changes is not available for binary content.',
10464
10639
  'commands.revert_obj.not_modified_obj': 'This page has not been modified. Therefore, nothing can be discarded.',
10465
10640
  'commands.revert_obj.dialog.title': 'Really discard changes to this page?',
10466
10641
  'commands.revert_obj.dialog.description': 'Discarded changes cannot be restored.',
@@ -10468,6 +10643,7 @@ $.i18n().load({
10468
10643
 
10469
10644
  'commands.restore_obj.title': 'Restore page',
10470
10645
  'commands.restore_obj.rtc_workspace': 'This page is part of the "rtc" working copy, for which restoring pages is not supported.',
10646
+ 'commands.restore_obj.is_binary': 'Restoring ist not available for binary content.',
10471
10647
 
10472
10648
  'commands.mark_resolved_obj.title': 'Override concurrent changes to page',
10473
10649
  'commands.mark_resolved_obj.dialog.confirm': 'Override changes',
@@ -10492,6 +10668,8 @@ $.i18n().load({
10492
10668
  'commands.sort_items.auto_sort': 'This navigation is sorted automatically.',
10493
10669
  'commands.sort_items.too_less_children': 'This navigation cannot be sorted because it consists of less than two items.',
10494
10670
 
10671
+ 'obj_sorting_dialog.title': 'Sort items',
10672
+
10495
10673
  'commands.add_widget.title': 'Insert widget',
10496
10674
 
10497
10675
  'commands.widget_details.title': 'Widget properties',
@@ -10514,6 +10692,12 @@ $.i18n().load({
10514
10692
  'commands.switch_mode.deleted': 'Deletions',
10515
10693
  'commands.switch_mode.disabled': 'Currently selected display mode',
10516
10694
 
10695
+ 'commands.publish_workspace.title': 'Publish "$1"',
10696
+ 'commands.publish_workspace.permission_denied': 'The working copy can not be published due to missing user permissions.',
10697
+ 'commands.publish_workspace.dialog.confirm': 'Publish',
10698
+ 'commands.publish_workspace.dialog.title': 'Publish "$1"?',
10699
+ 'commands.publish_workspace.dialog.description': 'Publishing a working copy is final. This action cannot be undone.',
10700
+
10517
10701
  'image_upload.too_many_files': 'Only one file allowed.',
10518
10702
 
10519
10703
  'warn_before_unloading': 'You have unsaved changes. Are you sure you want to quit?',
@@ -10550,6 +10734,12 @@ var scrivito = {};
10550
10734
  }
10551
10735
  },
10552
10736
 
10737
+ log_error: function(message, exception) {
10738
+ if (window.console) {
10739
+ window.console.error(message, exception);
10740
+ }
10741
+ },
10742
+
10553
10743
  change_location: function(location) {
10554
10744
  // this is a proxy method, so we can stub it easier.
10555
10745
  window.location = location;
@@ -10657,6 +10847,11 @@ var scrivito = {};
10657
10847
  return hex;
10658
10848
  },
10659
10849
 
10850
+ // 16 chars hex string
10851
+ random_id: function() {
10852
+ return scrivito.random_hex() + scrivito.random_hex();
10853
+ },
10854
+
10660
10855
  deprecation_warning: function(subject, alternative) {
10661
10856
  var message = 'DEPRECATION WARNING: "' + subject + '" is deprecated.';
10662
10857
 
@@ -10664,7 +10859,9 @@ var scrivito = {};
10664
10859
  message += ' Please use "' + alternative + '" instead.';
10665
10860
  }
10666
10861
 
10667
- window.console.warn(message);
10862
+ if (window.console) {
10863
+ window.console.warn(message);
10864
+ }
10668
10865
  },
10669
10866
 
10670
10867
  on: function(event, callback) {
@@ -10744,21 +10941,29 @@ var scrivito = {};
10744
10941
  scrivito.config = config;
10745
10942
 
10746
10943
  scrivito.editing_context.init(config.editing_context);
10944
+ scrivito.user_permissions.init(config.user_permissions);
10747
10945
  scrivito.i18n.init(config.i18n);
10748
10946
  scrivito.obj.init(config.obj);
10749
- scrivito.resource_dialog.init(config.open_resource_dialog);
10947
+ scrivito.resource_dialog.init(config.resource_dialog);
10750
10948
 
10751
10949
  scrivito.inplace_marker.init();
10752
10950
  scrivito.menu_bar_saving_indicator.init();
10753
10951
  scrivito.menu_bar_toggle.init();
10754
- scrivito.menu_bar_dropdown.init();
10952
+ scrivito.current_page_menu.init();
10755
10953
  scrivito.workspace_select.init();
10756
10954
  scrivito.menu_bar.init();
10757
- scrivito.widget_menus.init();
10758
- scrivito.widget_reloading.init();
10759
- scrivito.widget_sorting.init();
10955
+
10956
+ scrivito.child_list_commands.init();
10957
+ scrivito.widget_commands.init();
10958
+ scrivito.widget_field_commands.init();
10959
+
10960
+ scrivito.child_list_marker.init();
10961
+ scrivito.widget_field_marker.init();
10962
+ scrivito.widget_marker.init();
10963
+
10964
+ scrivito.widget_reloading.init();
10965
+ scrivito.widget_sorting.init();
10760
10966
  scrivito.image_upload.init();
10761
- scrivito.child_list_menus.init();
10762
10967
  scrivito.reloading.init();
10763
10968
 
10764
10969
  window.onbeforeunload = scrivito.warn_before_unloading;
@@ -10820,68 +11025,93 @@ var scrivito = {};
10820
11025
  }());
10821
11026
  (function() {
10822
11027
  var assert_valid_dom_element = function(dom_element) {
10823
- if (dom_element.length > 0) {
10824
- if (dom_element.length === 1) {
10825
- return true;
10826
- } else {
10827
- $.error('Can not call "scrivito" method on more than one tag');
10828
- }
11028
+ if (dom_element.length < 1) {
11029
+ $.error('Can not call "scrivito" method on an empty element');
11030
+ }
11031
+ if (dom_element.length > 1) {
11032
+ $.error('Can not call "scrivito" method on more than one tag');
10829
11033
  }
10830
11034
  };
10831
11035
 
10832
- var build_cms_field_element = function(dom_element) {
10833
- var cms_field_element = scrivito.cms_element.from_dom_element(dom_element);
10834
- if (cms_field_element) {
10835
- return cms_field_element;
11036
+ var build_cms_element = function(dom_element) {
11037
+ var cms_element = scrivito.cms_element.from_dom_element(dom_element);
11038
+ if (cms_element) {
11039
+ return cms_element;
10836
11040
  } else {
10837
11041
  $.error('Can not call "scrivito" method on a non-cms tag');
10838
11042
  }
10839
11043
  };
10840
11044
 
10841
11045
  var save_content = function(dom_element, content) {
10842
- if (assert_valid_dom_element(dom_element)) {
10843
- if (content === undefined) {
10844
- $.error('Can not call "save" with no content');
11046
+ if (dom_element.length > 0) {
11047
+ if (dom_element.length === 1) {
11048
+ if (content === undefined) {
11049
+ $.error('Can not call "save" with no content');
11050
+ } else {
11051
+ var cms_element = build_cms_element(dom_element);
11052
+ return cms_element.save(content).then(function() {
11053
+ cms_element.set_original_content(content);
11054
+ });
11055
+ }
10845
11056
  } else {
10846
- var cms_field_element = build_cms_field_element(dom_element);
10847
- return cms_field_element.save(content).then(function() {
10848
- cms_field_element.set_original_content(content);
10849
- });
11057
+ $.error('Can not call "scrivito" method on more than one tag');
10850
11058
  }
10851
11059
  }
10852
11060
  };
10853
11061
 
10854
11062
  var get_original_content = function(dom_element) {
10855
- if (assert_valid_dom_element(dom_element)) {
10856
- return build_cms_field_element(dom_element).original_content();
10857
- } else {
10858
- $.error('Can not call "scrivito" method on an empty element');
10859
- }
11063
+ assert_valid_dom_element(dom_element);
11064
+ return build_cms_element(dom_element).original_content();
11065
+ };
11066
+
11067
+ var get_menu = function(dom_element) {
11068
+ assert_valid_dom_element(dom_element);
11069
+ var cms_element = build_cms_element(dom_element);
11070
+ return {
11071
+ add: function(command_options) {
11072
+ var menu = cms_element.menu();
11073
+ menu.push(scrivito.command.create_instance(command_options));
11074
+ cms_element.set_menu(menu);
11075
+ }
11076
+ };
10860
11077
  };
10861
11078
 
10862
11079
  $.fn.scrivito = function(method, content) {
10863
- if (method === 'save') {
10864
- return save_content($(this), content);
10865
- } else if (method === 'content') {
10866
- return get_original_content($(this));
10867
- } else {
10868
- $.error('Unknown method "' + method + '"');
11080
+ switch (method) {
11081
+ case 'save':
11082
+ return save_content($(this), content);
11083
+ case 'content':
11084
+ return get_original_content($(this));
11085
+ case 'menu':
11086
+ return get_menu($(this));
11087
+ default:
11088
+ $.error('Unknown method "' + method + '"');
10869
11089
  }
10870
11090
  };
10871
11091
  }());
10872
11092
  (function() {
10873
11093
  var callbacks = {};
10874
11094
 
11095
+ // The callback has to be function that takes no arguments
11096
+ var log_exception_in_callback = function(event_name, callback) {
11097
+ try {
11098
+ callback();
11099
+ } catch(exception) {
11100
+ var text = "'"+event_name+"' callback threw exception: ";
11101
+ scrivito.log_error(text, exception);
11102
+ }
11103
+ };
11104
+
10875
11105
  var run_open_callbacks = function() {
10876
11106
  if (callbacks.open) {
10877
11107
  _.each(callbacks.open, function(callback) {
10878
- callback();
11108
+ log_exception_in_callback('open', callback);
10879
11109
  });
10880
11110
  }
10881
11111
 
10882
11112
  if (scrivito.editing_context.is_editing_mode() && callbacks.editing) {
10883
11113
  _.each(callbacks.editing, function(callback) {
10884
- callback();
11114
+ log_exception_in_callback('editing', callback);
10885
11115
  });
10886
11116
  }
10887
11117
  };
@@ -10890,7 +11120,9 @@ var scrivito = {};
10890
11120
  if (scrivito.editing_context.is_editing_mode() && callbacks.new_content) {
10891
11121
  _.each(callbacks.new_content, function(callback) {
10892
11122
  if (dom_element) {
10893
- callback(dom_element);
11123
+ log_exception_in_callback('new_content', function() {
11124
+ callback(dom_element);
11125
+ });
10894
11126
  }
10895
11127
  });
10896
11128
  }
@@ -10898,7 +11130,9 @@ var scrivito = {};
10898
11130
  if (callbacks.content) {
10899
11131
  _.each(callbacks.content, function(callback) {
10900
11132
  if (dom_element) {
10901
- callback(dom_element);
11133
+ log_exception_in_callback('content', function() {
11134
+ callback(dom_element);
11135
+ });
10902
11136
  }
10903
11137
  });
10904
11138
  }
@@ -10908,7 +11142,7 @@ var scrivito = {};
10908
11142
  gui: {
10909
11143
  start: function() {
10910
11144
  $('body').attr('data-scrivito-display-mode', scrivito.editing_context.display_mode);
10911
- $('body').append('<div id="ip-editing"></div>');
11145
+ $('body').append('<div id="scrivito_editing"></div>');
10912
11146
  run_open_callbacks();
10913
11147
  },
10914
11148
 
@@ -11022,6 +11256,21 @@ var scrivito = {};
11022
11256
  });
11023
11257
  };
11024
11258
  }());
11259
+ (function() {
11260
+ $.extend(scrivito, {
11261
+ user_permissions: {
11262
+ permissions_hash: {},
11263
+
11264
+ init: function(permissions_hash) {
11265
+ scrivito.user_permissions.permissions_hash = permissions_hash;
11266
+ },
11267
+
11268
+ can: function(permission_key) {
11269
+ return !!scrivito.user_permissions.permissions_hash[permission_key];
11270
+ }
11271
+ }
11272
+ });
11273
+ }());
11025
11274
  (function() {
11026
11275
  var handle_task = function(task) {
11027
11276
  switch (task.status) {
@@ -11336,11 +11585,11 @@ var scrivito = {};
11336
11585
  });
11337
11586
 
11338
11587
  menu_bar_toggle.find('.scrivito_comparing_mode_toggle').on('click', function() {
11339
- scrivito.menus.toggle($(this), [
11588
+ scrivito.inline_menus.toggle($(this), [
11340
11589
  scrivito.switch_mode_command('diff'),
11341
11590
  scrivito.switch_mode_command('added'),
11342
11591
  scrivito.switch_mode_command('deleted')
11343
- ], {align: 'left', css_class: 'scrivito_switch_mode_menu'});
11592
+ ], 'left');
11344
11593
  return false;
11345
11594
  });
11346
11595
  });
@@ -11350,44 +11599,35 @@ var scrivito = {};
11350
11599
  }());
11351
11600
  (function() {
11352
11601
  $.extend(scrivito, {
11353
- menu_bar_dropdown: {
11602
+ obj_menu: {
11603
+ create: function(dom_element, obj, commands, options) {
11604
+ dom_element.append(scrivito.template.render('obj_menu', {obj: obj}));
11605
+ dom_element.on('click', function() {
11606
+ scrivito.inline_menus.toggle(dom_element, commands, options);
11607
+ return false;
11608
+ });
11609
+ }
11610
+ }
11611
+ });
11612
+ }());
11613
+ (function() {
11614
+ $.extend(scrivito, {
11615
+ current_page_menu: {
11354
11616
  init: function() {
11355
- scrivito.menu_bar.register_item_renderer(function(menu_bar) {
11356
- var current_page = scrivito.obj.current_page;
11357
-
11358
- var commands = [
11359
- scrivito.obj_details_command(current_page),
11360
- scrivito.save_obj_to_clipboard_command(current_page),
11361
- scrivito.delete_obj_command(current_page),
11362
- scrivito.revert_obj_command(current_page),
11363
- scrivito.restore_obj_command(current_page),
11364
- scrivito.mark_resolved_obj_command(current_page),
11365
- scrivito.duplicate_obj_command(current_page)
11366
- ];
11367
-
11368
- var view = scrivito.template.render('menu_bar_dropdown', {
11369
- current_page: current_page,
11370
- commands: commands
11371
- });
11372
-
11373
- var menu_bar_dropdown = menu_bar.find('#scrivito_menu_bar_dropdown').html(view);
11374
-
11375
- if (current_page) {
11376
- menu_bar_dropdown.attr('title', current_page.tooltip());
11377
- }
11378
-
11379
- menu_bar_dropdown.click(function() {
11380
- menu_bar_dropdown.toggleClass('active');
11381
- menu_bar_dropdown.find('.scrivito_menu_box').fadeToggle('50');
11382
- return false;
11383
- });
11384
-
11385
- _.each(commands, function(command) {
11386
- menu_bar_dropdown.find('#scrivito_' + command.id()).click(function() {
11387
- return command.execute();
11388
- });
11617
+ if (scrivito.obj.current_page) {
11618
+ scrivito.menu_bar.register_item_renderer(function(menu_bar) {
11619
+ var current_page = scrivito.obj.current_page;
11620
+ scrivito.obj_menu.create(menu_bar.find('#scrivito_current_page_menu'), current_page, [
11621
+ scrivito.obj_details_command(current_page),
11622
+ scrivito.save_obj_to_clipboard_command(current_page),
11623
+ scrivito.delete_obj_command(current_page),
11624
+ scrivito.revert_obj_command(current_page),
11625
+ scrivito.restore_obj_command(current_page),
11626
+ scrivito.mark_resolved_obj_command(current_page),
11627
+ scrivito.duplicate_obj_command(current_page)
11628
+ ]);
11389
11629
  });
11390
- });
11630
+ }
11391
11631
  }
11392
11632
  }
11393
11633
  });
@@ -11424,10 +11664,12 @@ var scrivito = {};
11424
11664
 
11425
11665
  var renderer = function(view) {
11426
11666
  var workspace = scrivito.editing_context.selected_workspace;
11667
+
11427
11668
  var select_menu_view = $(scrivito.template.render('workspace_select_menu_bar_item', {
11428
11669
  current_workspace: workspace,
11429
11670
  current_short_title: workspace_title_short(workspace),
11430
- current_long_title: workspace_title_long(workspace)
11671
+ current_long_title: workspace_title_long(workspace),
11672
+ publish_command: scrivito.publish_workspace_command(workspace)
11431
11673
  }));
11432
11674
 
11433
11675
  view.find('#scrivito_select_workspace').append(select_menu_view);
@@ -11436,10 +11678,10 @@ var scrivito = {};
11436
11678
  var default_click_action = function(e) {
11437
11679
  e.preventDefault();
11438
11680
  e.stopPropagation();
11439
- $('#scrivito_select_workspace .scrivito_menu_box').fadeToggle('50');
11681
+ scrivito.workspace_select.close_menu();
11440
11682
  };
11441
11683
 
11442
- $(document).on("click.ip-toggle-ws-select", "#scrivito_select_workspace", function(e) {
11684
+ $(document).on("click.scrivito_toggle_ws_select", "#scrivito_select_workspace", function(e) {
11443
11685
  default_click_action(e);
11444
11686
 
11445
11687
  var replace_with_real_ws = $('#scrivito_select_workspace #scrivito_replace_with_real_ws');
@@ -11478,10 +11720,11 @@ var scrivito = {};
11478
11720
  }
11479
11721
  });
11480
11722
 
11481
- $(document).on("click.ip-create-ws", "#ip-create-new-ws", function(e) {
11723
+ $(document).on("click.scrivito_create_ws", "#scrivito_create_new_ws", function(e) {
11482
11724
  default_click_action(e);
11483
11725
  scrivito.prompt_dialog({
11484
11726
  icon: '&#xf022;',
11727
+ color: 'green',
11485
11728
  title: t('menu_bar.create_new_ws_confirmation'),
11486
11729
  description: t('menu_bar.create_new_ws_confirmation_desc'),
11487
11730
  placeholder: t('menu_bar.create_new_ws_confirmation_placeholder'),
@@ -11500,28 +11743,18 @@ var scrivito = {};
11500
11743
  });
11501
11744
  });
11502
11745
 
11503
- $(document).on("click.ip-publish-ws", "#ip-publish-current-ws", function(e) {
11504
- default_click_action(e);
11505
- scrivito.confirmation_dialog({
11506
- icon: '&#xf064;',
11507
- confirm_button_text: t('menu_bar.publish'),
11508
- confirm_button_color: 'green',
11509
- title: t('menu_bar.publish_ws_confirmation', workspace_title_short(
11510
- scrivito.editing_context.selected_workspace)),
11511
- description: t('menu_bar.publish_ws_confirmation_desc')
11512
- }).done(function() {
11513
- scrivito.with_saving_overlay(
11514
- scrivito.editing_context.selected_workspace.publish().then(function() {
11515
- return scrivito.redirect_to('?_scrivito_workspace_id=published');
11516
- })
11517
- );
11518
- });
11746
+ $(document).on("click.scrivito_publish_ws", "#scrivito_publish_current_ws", function(e) {
11747
+ scrivito.publish_workspace_command(scrivito.editing_context.selected_workspace).
11748
+ execute();
11749
+
11750
+ return false;
11519
11751
  });
11520
11752
 
11521
- $(document).on("click.ip-rename-ws", "#ip-rename-current-ws", function(e) {
11753
+ $(document).on("click.scrivito_rename_ws", "#scrivito_rename_current_ws", function(e) {
11522
11754
  default_click_action(e);
11523
11755
  scrivito.prompt_dialog({
11524
11756
  icon: '&#xf04f;',
11757
+ color: 'green',
11525
11758
  title: t('menu_bar.rename_working_copy', scrivito.editing_context.selected_workspace.title()),
11526
11759
  description: t('menu_bar.rename_working_copy_desc'),
11527
11760
  value: scrivito.editing_context.selected_workspace.title(),
@@ -11536,7 +11769,7 @@ var scrivito = {};
11536
11769
  });
11537
11770
  });
11538
11771
 
11539
- $(document).on("click.ip-rebase-ws", "#ip-rebase-current-ws", function(e) {
11772
+ $(document).on("click.scrivito_rebase_ws", "#scrivito_rebase_current_ws", function(e) {
11540
11773
  default_click_action(e);
11541
11774
  scrivito.with_saving_overlay(
11542
11775
  scrivito.editing_context.selected_workspace.rebase().then(function() {
@@ -11545,7 +11778,7 @@ var scrivito = {};
11545
11778
  );
11546
11779
  });
11547
11780
 
11548
- $(document).on("click.ip-delete-ws", "#ip-delete-current-ws", function(e) {
11781
+ $(document).on("click.scrivito_delete_ws", "#scrivito_delete_current_ws", function(e) {
11549
11782
  default_click_action(e);
11550
11783
  scrivito.confirmation_dialog({
11551
11784
  color: 'red',
@@ -11573,6 +11806,9 @@ var scrivito = {};
11573
11806
  workspace_select: {
11574
11807
  init: function() {
11575
11808
  scrivito.menu_bar.register_item_renderer(renderer);
11809
+ },
11810
+ close_menu: function() {
11811
+ $('#scrivito_select_workspace .scrivito_menu_box').fadeToggle('50');
11576
11812
  }
11577
11813
  }
11578
11814
  });
@@ -11589,7 +11825,7 @@ var scrivito = {};
11589
11825
  selected_workspace_title: scrivito.editing_context.selected_workspace.title()
11590
11826
  }));
11591
11827
 
11592
- $('#ip-editing').append(view);
11828
+ $('#scrivito_editing').append(view);
11593
11829
  var next_loader = view.find('.scrivito_load_more');
11594
11830
 
11595
11831
  target = view.find('#scrivito_changes_table_loaded');
@@ -11637,7 +11873,16 @@ var scrivito = {};
11637
11873
  'data-scrivito-private-changes-list-obj-modification');
11638
11874
  var obj_is_binary = element.attr('data-scrivito-private-changes-list-obj-is-binary');
11639
11875
 
11640
- scrivito.changes_dialog.redirect_to_obj(obj_id, obj_modification, obj_is_binary);
11876
+ if (can_use_resource_dialog_directly(obj_modification, obj_is_binary)) {
11877
+ var loaded_obj = _.find(loaded_objs, function(obj) {
11878
+ return obj.id === obj_id;
11879
+ });
11880
+
11881
+ scrivito.resource_dialog.open(scrivito.obj.create_instance(loaded_obj));
11882
+ } else {
11883
+ scrivito.changes_dialog.redirect_to_obj(obj_id, obj_modification, obj_is_binary);
11884
+ }
11885
+
11641
11886
  return false;
11642
11887
  });
11643
11888
  });
@@ -11663,7 +11908,7 @@ var scrivito = {};
11663
11908
  scrivito.dialog.adjust(view);
11664
11909
  });
11665
11910
 
11666
- return scrivito.with_dialog_behaviour(deferred, {escape: cancel});
11911
+ return scrivito.with_dialog_behaviour(view, deferred, {escape: cancel});
11667
11912
  },
11668
11913
 
11669
11914
  redirect_to_obj: function(obj_id, modification, is_binary) {
@@ -11698,13 +11943,20 @@ var scrivito = {};
11698
11943
  var load_markup;
11699
11944
  var loading_in_progress;
11700
11945
 
11946
+ var can_use_resource_dialog_directly = function(modification, is_binary) {
11947
+ return is_binary && (
11948
+ modification === 'edited' ||
11949
+ modification === 'deleted' && scrivito.editing_context.is_deleted_mode() ||
11950
+ modification === 'new' && !scrivito.editing_context.is_deleted_mode());
11951
+ };
11952
+
11701
11953
  var basic_batch = function() {
11702
11954
  return scrivito.
11703
11955
  obj_where('_modification', 'equals', ['new', 'edited', 'deleted']).
11704
11956
  batch_size(100).
11705
11957
  order('_last_changed').
11706
11958
  reverse_order().
11707
- format('_changes_list').
11959
+ format('_default').
11708
11960
  include_deleted();
11709
11961
  };
11710
11962
 
@@ -11820,11 +12072,6 @@ var scrivito = {};
11820
12072
  if (cms_element.dom_element().attr('data-scrivito-private-child-list-path')) {
11821
12073
  var that = cms_element;
11822
12074
 
11823
- var generate_path = function(){
11824
- var name = scrivito.random_hex();
11825
- return that.path() + '/' + name;
11826
- };
11827
-
11828
12075
  $.extend(that, {
11829
12076
  path: function() {
11830
12077
  return that.dom_element().attr('data-scrivito-private-child-list-path');
@@ -11849,19 +12096,17 @@ var scrivito = {};
11849
12096
  },
11850
12097
 
11851
12098
  create_child: function(obj_class) {
11852
- var path = generate_path();
11853
-
12099
+ var id = scrivito.random_id();
11854
12100
  return scrivito.obj.create({
11855
- _path: path,
12101
+ _id: id,
12102
+ _path: that.path() + '/' + id,
11856
12103
  _obj_class: obj_class
11857
12104
  });
11858
12105
  },
11859
12106
 
11860
12107
  add_child: function(child) {
11861
- var path = generate_path();
11862
-
11863
12108
  return child.save({
11864
- _path: path
12109
+ _path: that.path() + '/' + child.id()
11865
12110
  });
11866
12111
  },
11867
12112
 
@@ -11901,10 +12146,9 @@ var scrivito = {};
11901
12146
  return that;
11902
12147
  }
11903
12148
  },
11904
- all: function() {
11905
- return _.map($('[data-scrivito-private-child-list-path]'), function(dom_element) {
11906
- return scrivito.cms_element.from_dom_element($(dom_element));
11907
- });
12149
+
12150
+ all: function(root_element) {
12151
+ return scrivito.cms_element.all('[data-scrivito-private-child-list-path]', root_element);
11908
12152
  }
11909
12153
  }
11910
12154
  });
@@ -11955,7 +12199,14 @@ $(function() {
11955
12199
  return instance;
11956
12200
  },
11957
12201
 
11958
- definitions: []
12202
+ definitions: [],
12203
+
12204
+ all: function(selector, root_element) {
12205
+ var dom_elements = (root_element || $('body')).find(selector).addBack(selector);
12206
+ return _.map(dom_elements, function(dom_element) {
12207
+ return scrivito.cms_element.from_dom_element($(dom_element));
12208
+ });
12209
+ }
11959
12210
  }
11960
12211
  });
11961
12212
  }());
@@ -12273,6 +12524,11 @@ $(function() {
12273
12524
  return scrivito.ajax('DELETE', 'objs/' + that.id());
12274
12525
  },
12275
12526
 
12527
+ destroy_widget: function(widget_id) {
12528
+ return scrivito.ajax('PUT',
12529
+ 'objs/' + that.id() + '/destroy_widget?widget_id=' + widget_id);
12530
+ },
12531
+
12276
12532
  revert: function() {
12277
12533
  return scrivito.ajax('PUT', 'objs/' + that.id() + '/revert');
12278
12534
  },
@@ -12513,6 +12769,7 @@ $(function() {
12513
12769
  var field_types = [
12514
12770
  'binary',
12515
12771
  'enum',
12772
+ 'link',
12516
12773
  'linklist',
12517
12774
  'multienum',
12518
12775
  'reference',
@@ -12602,7 +12859,7 @@ $(function() {
12602
12859
  },
12603
12860
 
12604
12861
  destroy: function() {
12605
- return that.obj().save(build_obj_attributes(null));
12862
+ return that.obj().destroy_widget(that.id());
12606
12863
  },
12607
12864
 
12608
12865
  fetch_details_markup: function() {
@@ -12678,6 +12935,10 @@ $(function() {
12678
12935
 
12679
12936
  return that;
12680
12937
  }
12938
+ },
12939
+
12940
+ all: function(root_element) {
12941
+ return scrivito.cms_element.all('[data-scrivito-private-widget-id]', root_element);
12681
12942
  }
12682
12943
  }
12683
12944
  });
@@ -12707,6 +12968,10 @@ $(function() {
12707
12968
  return widget_elements;
12708
12969
  },
12709
12970
 
12971
+ is_empty: function() {
12972
+ return that.widget_elements().length === 0;
12973
+ },
12974
+
12710
12975
  create_widget: function(widget_class, widget_element) {
12711
12976
  var widget_spec = {create: {_obj_class: widget_class}};
12712
12977
  return add_widget(widget_spec, widget_element);
@@ -12776,10 +13041,8 @@ $(function() {
12776
13041
  }
12777
13042
  },
12778
13043
 
12779
- all: function() {
12780
- return _.map($('[data-scrivito-field-type="widget"]'), function(dom_element) {
12781
- return scrivito.cms_element.from_dom_element($(dom_element));
12782
- });
13044
+ all: function(root_element) {
13045
+ return scrivito.cms_element.all('[data-scrivito-field-type="widget"]', root_element);
12783
13046
  }
12784
13047
  }
12785
13048
  });
@@ -12931,13 +13194,13 @@ $(function() {
12931
13194
  var target_height_for = function(elem, dont_store_height) {
12932
13195
  var parent = elem.parent();
12933
13196
  var heightOfParent = parent.innerHeight();
12934
- if (!dont_store_height) { parent.data("ip-last_inner_height", heightOfParent); }
13197
+ if (!dont_store_height) { parent.data("scrivito_last_inner_height", heightOfParent); }
12935
13198
  var heightOfAllSiblings = _(relevant_siblings_for(elem))
12936
13199
  .chain()
12937
13200
  .map($)
12938
13201
  .reduce(function(sum, sibling) {
12939
13202
  var height = sibling.outerHeight(true);
12940
- if (!dont_store_height) { sibling.data("ip-last_outer_height", height); }
13203
+ if (!dont_store_height) { sibling.data("scrivito_last_outer_height", height); }
12941
13204
  return sum + height;
12942
13205
  }, 0).value()
12943
13206
  ;
@@ -12952,7 +13215,7 @@ $(function() {
12952
13215
  var sibling_height_changes = function(elem) {
12953
13216
  return _(relevant_siblings_for(elem)).map(function(sibling) {
12954
13217
  sibling = $(sibling);
12955
- var last = sibling.data("ip-last_outer_height");
13218
+ var last = sibling.data("scrivito_last_outer_height");
12956
13219
  var actual = sibling.outerHeight(true);
12957
13220
  if (last !== actual) {
12958
13221
  return scrivito.describe_element(sibling) +
@@ -12964,7 +13227,7 @@ $(function() {
12964
13227
 
12965
13228
  var parent_height_changes = function(elem) {
12966
13229
  var parent = elem.parent();
12967
- var last = parent.data("ip-last_inner_height");
13230
+ var last = parent.data("scrivito_last_inner_height");
12968
13231
  var actual = parent.innerHeight();
12969
13232
  if (last !== actual) {
12970
13233
  return scrivito.describe_element(parent) +
@@ -13055,43 +13318,43 @@ $(function() {
13055
13318
  });
13056
13319
  }());
13057
13320
  (function() {
13058
- var view;
13059
-
13060
13321
  $.extend(scrivito, {
13061
- with_overlay: function(promise) {
13062
- scrivito.overlay.show();
13322
+ with_dialog_overlay: function(dom_element, promise) {
13323
+ var overlay = scrivito.dialog_overlay.create(dom_element);
13063
13324
  return promise.always(function() {
13064
- scrivito.overlay.hide();
13325
+ scrivito.dialog_overlay.destroy(overlay);
13065
13326
  });
13066
13327
  },
13067
13328
 
13068
- overlay: {
13069
- show: function() {
13070
- if (!view) {
13071
- view = $(scrivito.template.render('overlay'));
13072
- $('#ip-editing').append(view);
13073
- }
13329
+ dialog_overlay: {
13330
+ create: function(dom_element) {
13331
+ $('.scrivito_overlay').removeClass('scrivito_show');
13074
13332
 
13075
- scrivito.transition(view, function() {
13076
- view.addClass('scrivito_show');
13333
+ var overlay = $(scrivito.template.render('overlay'));
13334
+ dom_element.before(overlay);
13335
+
13336
+ scrivito.transition(overlay, function() {
13337
+ overlay.addClass('scrivito_show');
13077
13338
  });
13339
+
13340
+ return overlay;
13078
13341
  },
13079
13342
 
13080
- hide: function() {
13081
- if (view) {
13082
- scrivito.transition(view, function() {
13083
- view.removeClass('scrivito_show');
13084
- }).then(function() {
13085
- view.remove();
13086
- view = null;
13087
- });
13088
- }
13343
+ destroy: function(overlay) {
13344
+ scrivito.transition(overlay, function() {
13345
+ overlay.removeClass('scrivito_show');
13346
+ }).then(function() {
13347
+ overlay.remove();
13348
+ var last_overlay = $('.scrivito_overlay').last();
13349
+ if (last_overlay.length) {
13350
+ last_overlay.addClass('scrivito_show');
13351
+ }
13352
+ });
13089
13353
  },
13090
13354
 
13091
13355
  // Test purpose only.
13092
13356
  remove_all: function() {
13093
13357
  $('.scrivito_overlay').remove();
13094
- view = null;
13095
13358
  }
13096
13359
  }
13097
13360
  });
@@ -13111,7 +13374,7 @@ $(function() {
13111
13374
  show: function() {
13112
13375
  if (!view) {
13113
13376
  view = $(scrivito.template.render('saving_overlay'));
13114
- $('#ip-editing').append(view);
13377
+ $('#scrivito_editing').append(view);
13115
13378
  }
13116
13379
 
13117
13380
  scrivito.transition(view, function() {
@@ -13227,7 +13490,7 @@ $(function() {
13227
13490
  confirm_button_text: scrivito.i18n.translate('confirm')
13228
13491
  }, options || {})));
13229
13492
 
13230
- $('#ip-editing').append(view);
13493
+ $('#scrivito_editing').append(view);
13231
13494
 
13232
13495
  var deferred = $.Deferred();
13233
13496
 
@@ -13261,7 +13524,7 @@ $(function() {
13261
13524
  scrivito.center(view);
13262
13525
  });
13263
13526
 
13264
- return scrivito.with_dialog_behaviour(deferred, {enter: accept, escape: cancel});
13527
+ return scrivito.with_dialog_behaviour(view, deferred, {enter: accept, escape: cancel});
13265
13528
  },
13266
13529
 
13267
13530
  // Test purpose only.
@@ -13285,7 +13548,7 @@ $(function() {
13285
13548
  cancel_button_text: scrivito.i18n.translate('cancel')
13286
13549
  }, options || {})));
13287
13550
 
13288
- $('#ip-editing').append(view);
13551
+ $('#scrivito_editing').append(view);
13289
13552
 
13290
13553
  var deferred = $.Deferred();
13291
13554
 
@@ -13323,7 +13586,7 @@ $(function() {
13323
13586
  scrivito.center(view);
13324
13587
  });
13325
13588
 
13326
- return scrivito.with_dialog_behaviour(deferred, {enter: accept, escape: cancel});
13589
+ return scrivito.with_dialog_behaviour(view, deferred, {enter: accept, escape: cancel});
13327
13590
  }
13328
13591
  });
13329
13592
  }());
@@ -13398,7 +13661,7 @@ $(function() {
13398
13661
  });
13399
13662
  });
13400
13663
 
13401
- $('#ip-editing').append(view);
13664
+ $('#scrivito_editing').append(view);
13402
13665
 
13403
13666
  var cancel_action = function(e) {
13404
13667
  e.preventDefault();
@@ -13414,20 +13677,24 @@ $(function() {
13414
13677
 
13415
13678
  scrivito.dialog.adjust(view);
13416
13679
 
13417
- return scrivito.with_dialog_behaviour(deferred, {escape: cancel_action});
13680
+ return scrivito.with_dialog_behaviour(view, deferred, {escape: cancel_action});
13418
13681
  }
13419
13682
  });
13420
13683
  }());
13421
13684
  (function() {
13422
13685
  $.extend(scrivito, {
13423
13686
  details_dialog: {
13424
- open: function(title, fetch_markup, icon) {
13687
+ open: function(options) {
13425
13688
  var deferred = $.Deferred();
13426
13689
 
13427
13690
  var view = $(scrivito.template.render('details_dialog',
13428
- {icon: icon || '&#xf030;', title: title}));
13691
+ $.extend({icon: '&#xf030;'}, options || {})));
13692
+
13693
+ if (options.obj) {
13694
+ scrivito.obj_menu.create(view.find('.scrivito_obj_menu'), options.obj, options.commands);
13695
+ }
13429
13696
 
13430
- $('#ip-editing').append(view);
13697
+ $('#scrivito_editing').append(view);
13431
13698
 
13432
13699
  var saving_indicator = scrivito.saving_indicator.create(
13433
13700
  view.find('.scrivito_details_dialog_saving_indicator'));
@@ -13439,7 +13706,7 @@ $(function() {
13439
13706
  target.hide();
13440
13707
  spinner.show();
13441
13708
 
13442
- fetch_markup().then(function(markup) {
13709
+ options.fetch_markup().then(function(markup) {
13443
13710
  target.html(markup);
13444
13711
 
13445
13712
  var size_attr = 'data-scrivito-modal-size';
@@ -13476,9 +13743,9 @@ $(function() {
13476
13743
  };
13477
13744
 
13478
13745
  var cancel = function(e) {
13479
- e.preventDefault();
13480
13746
  saving_indicator.destroy();
13481
13747
  close();
13748
+ return false;
13482
13749
  };
13483
13750
 
13484
13751
  view.find('.scrivito_cancel').on('click', cancel);
@@ -13489,7 +13756,7 @@ $(function() {
13489
13756
  scrivito.dialog.adjust(view);
13490
13757
  });
13491
13758
 
13492
- return scrivito.with_dialog_behaviour(deferred, {escape: cancel});
13759
+ return scrivito.with_dialog_behaviour(view, deferred, {escape: cancel});
13493
13760
  }
13494
13761
  }
13495
13762
  });
@@ -13497,21 +13764,27 @@ $(function() {
13497
13764
  (function() {
13498
13765
  $.extend(scrivito, {
13499
13766
  menus: {
13500
- open: function(dom_element, commands, options) {
13501
- scrivito.menus.close_all();
13767
+ open: function(dom_element, commands) {
13768
+ scrivito.close_all_menus();
13502
13769
 
13503
- var menu = $(scrivito.template.render('menu', {
13504
- commands: commands,
13505
- options: $.extend({align: 'right'}, options || {})
13506
- }));
13770
+ var menu = $(scrivito.template.render('menu', {commands: commands}));
13771
+ dom_element.data('scrivito-private-menu', menu);
13507
13772
 
13508
- menu.data('scrivito-private-menus-target', dom_element);
13509
- dom_element.data('scrivito-private-menus-menu', menu);
13773
+ menu.data('scrivito-menu-close', function() {
13774
+ dom_element.removeData('scrivito-private-menu');
13775
+ menu.fadeOut(500, function() {
13776
+ menu.remove();
13777
+ });
13778
+ });
13779
+
13780
+ menu.data('scrivito-menu-update-position', function() {
13781
+ menu.offset(dom_element.offset());
13782
+ });
13510
13783
 
13511
13784
  _.each(commands, function(command) {
13512
- menu.find('.scrivito_menu_item.' + command.id()).on('click', function() {
13785
+ menu.find('.scrivito_' + command.id()).on('click', function() {
13513
13786
  if (command.is_enabled()) {
13514
- close(menu);
13787
+ menu.data('scrivito-menu-close')();
13515
13788
  }
13516
13789
  command.execute();
13517
13790
  return false;
@@ -13519,54 +13792,86 @@ $(function() {
13519
13792
  });
13520
13793
 
13521
13794
  menu.appendTo($('body'));
13522
- menu.offset(dom_element.offset()); // Bugfix IE: offset can not be set before append.
13795
+ menu.data('scrivito-menu-update-position')(); // Bugfix IE: can't set offset before append.
13523
13796
  menu.find('.scrivito_menu_box').fadeIn(500);
13524
13797
  },
13525
13798
 
13526
- toggle: function(dom_element, commands, options) {
13527
- var menu = dom_element.data('scrivito-private-menus-menu');
13799
+ toggle: function(dom_element, commands) {
13800
+ var menu = dom_element.data('scrivito-private-menu');
13528
13801
  if (menu) {
13529
- close(menu);
13802
+ menu.data('scrivito-menu-close')();
13530
13803
  } else {
13531
- scrivito.menus.open(dom_element, commands, options);
13804
+ scrivito.menus.open(dom_element, commands);
13532
13805
  }
13533
13806
  },
13534
13807
 
13535
- close_all: function() {
13536
- each_menu(function(menu) {
13537
- close(menu);
13538
- });
13539
- },
13540
-
13541
- refresh_positions: function() {
13542
- each_menu(function(menu) {
13543
- menu.offset(menu.data('scrivito-private-menus-target').offset());
13808
+ update_positions: function() {
13809
+ _.each($('.scrivito_editing_marker_menu'), function(menu) {
13810
+ var update_position = $(menu).data('scrivito-menu-update-position');
13811
+ if (update_position) {
13812
+ update_position();
13813
+ }
13544
13814
  });
13545
13815
  }
13546
13816
  }
13547
13817
  });
13548
-
13549
- var each_menu = function(callback) {
13550
- _.each($('.scrivito_editing_marker_menu'), function(menu) {
13551
- callback($(menu));
13552
- });
13553
- };
13554
-
13555
- var close = function(menu) {
13556
- menu.data('scrivito-private-menus-target').removeData('scrivito-private-menus-menu');
13557
- menu.fadeOut(500, function() {
13558
- menu.remove();
13559
- });
13560
- };
13561
13818
  }());
13562
13819
 
13563
13820
  $(window).on('resize', function() {
13564
- scrivito.menus.refresh_positions();
13821
+ scrivito.menus.update_positions();
13565
13822
  });
13566
13823
 
13567
13824
  $(window).on('load', function() {
13568
- scrivito.menus.refresh_positions();
13825
+ scrivito.menus.update_positions();
13569
13826
  });
13827
+ (function() {
13828
+ $.extend(scrivito, {
13829
+ inline_menus: {
13830
+ toggle: function(dom_element, commands, align) {
13831
+ var menu = dom_element.find('.scrivito_editing_marker_menu');
13832
+ if (menu.length) {
13833
+ menu.data('scrivito-menu-close')();
13834
+ } else {
13835
+ open(dom_element, commands, align);
13836
+ }
13837
+ }
13838
+ }
13839
+ });
13840
+
13841
+ var open = function(dom_element, commands, align) {
13842
+ scrivito.close_all_menus();
13843
+
13844
+ var menu = $(scrivito.template.render('menu', {commands: commands, align: align}));
13845
+
13846
+ menu.data('scrivito-menu-close', function() {
13847
+ menu.find('.scrivito_menu_box').fadeOut(500, function() {
13848
+ menu.remove();
13849
+ });
13850
+ });
13851
+
13852
+ _.each(commands, function(command) {
13853
+ menu.find('.scrivito_menu_item.scrivito_' + command.id()).on('click', function() {
13854
+ if (command.is_enabled()) {
13855
+ menu.data('scrivito-menu-close')();
13856
+ }
13857
+ command.execute();
13858
+ return false;
13859
+ });
13860
+ });
13861
+
13862
+ menu.appendTo(dom_element);
13863
+ menu.find('.scrivito_menu_box').fadeIn(500);
13864
+ };
13865
+ }());
13866
+ (function() {
13867
+ $.extend(scrivito, {
13868
+ close_all_menus: function() {
13869
+ _.each($('.scrivito_editing_marker_menu'), function(menu) {
13870
+ $(menu).data('scrivito-menu-close')();
13871
+ });
13872
+ }
13873
+ });
13874
+ }());
13570
13875
  (function() {
13571
13876
  var callbacks = [];
13572
13877
 
@@ -13593,7 +13898,7 @@ $(window).on('load', function() {
13593
13898
  callback(builder);
13594
13899
  });
13595
13900
 
13596
- scrivito.menus.refresh_positions();
13901
+ scrivito.menus.update_positions();
13597
13902
  }
13598
13903
  },
13599
13904
 
@@ -13634,29 +13939,30 @@ $(window).on('load', function() {
13634
13939
  $.extend(scrivito, {
13635
13940
  resource_dialog: {
13636
13941
  init: function(config) {
13637
- if (config) {
13942
+ if (config.obj) {
13943
+ var obj = scrivito.obj.create_instance(config.obj);
13638
13944
  scrivito.gui.on('open', function() {
13639
- scrivito.resource_dialog.open_and_redirect_on_close(config.obj_id, config.redirect_to);
13945
+ scrivito.resource_dialog.open(obj).done(function() {
13946
+ return scrivito.redirect_to(config.return_to);
13947
+ });
13640
13948
  });
13641
13949
  }
13642
13950
  },
13643
13951
 
13644
- open: function(obj_id) {
13645
- var title = scrivito.i18n.translate('resource');
13646
-
13647
- var obj = scrivito.obj.create_instance({
13648
- id: obj_id
13649
- });
13650
- var fetch_markup = function() {
13651
- return obj.fetch_details_markup();
13652
- };
13653
-
13654
- return scrivito.details_dialog.open(title, fetch_markup, '&#xf03d;');
13655
- },
13656
-
13657
- open_and_redirect_on_close: function(obj_id, redirect_to) {
13658
- scrivito.resource_dialog.open(obj_id).done(function() {
13659
- return scrivito.redirect_to(redirect_to);
13952
+ open: function(obj) {
13953
+ return scrivito.details_dialog.open({
13954
+ title: scrivito.i18n.translate('resource_dialog.title'),
13955
+ icon: '&#xf03d;',
13956
+ fetch_markup: function() {
13957
+ return obj.fetch_details_markup();
13958
+ },
13959
+ obj: obj,
13960
+ commands: [
13961
+ scrivito.revert_obj_command(obj, 'resource_dialog.commands.revert_obj'),
13962
+ scrivito.restore_obj_command(obj, 'resource_dialog.commands.restore_obj'),
13963
+ scrivito.mark_resolved_obj_command(obj, 'resource_dialog.commands.mark_resolved_obj'),
13964
+ scrivito.delete_obj_command(obj, 'resource_dialog.commands.delete_obj')
13965
+ ]
13660
13966
  });
13661
13967
  }
13662
13968
  }
@@ -13805,10 +14111,14 @@ $(window).on('load', function() {
13805
14111
  }());
13806
14112
  (function() {
13807
14113
  $.extend(scrivito, {
13808
- delete_obj_command: function(obj) {
14114
+ delete_obj_command: function(obj, translations_namespace) {
14115
+ if (!translations_namespace) {
14116
+ translations_namespace = 'commands.delete_obj';
14117
+ }
14118
+
13809
14119
  return scrivito.command.create_instance({
13810
14120
  id: 'delete_obj',
13811
- title: scrivito.i18n.translate('commands.delete_obj.title'),
14121
+ title: scrivito.i18n.translate(translations_namespace + '.title'),
13812
14122
  icon: '&#xf018;',
13813
14123
 
13814
14124
  present: function() {
@@ -13826,8 +14136,8 @@ $(window).on('load', function() {
13826
14136
 
13827
14137
  execute: function() {
13828
14138
  return scrivito.confirmation_dialog({
13829
- title: scrivito.i18n.translate('commands.delete_obj.dialog.title'),
13830
- description: scrivito.i18n.translate('commands.delete_obj.dialog.description'),
14139
+ title: scrivito.i18n.translate(translations_namespace + '.dialog.title'),
14140
+ description: scrivito.i18n.translate(translations_namespace + '.dialog.description'),
13831
14141
  icon: '&#xf018;',
13832
14142
  color: 'red',
13833
14143
  confirm_button_text: scrivito.i18n.translate('commands.delete_obj.dialog.confirm'),
@@ -13876,13 +14186,11 @@ $(window).on('load', function() {
13876
14186
 
13877
14187
  scrivito.widget_sorting.update_placeholder(widget_field_element);
13878
14188
 
13879
- return widget_field_element.save().then(function() {
13880
- return widget.destroy().then(function() {
13881
- if (scrivito.widget_clipboard.is_present() &&
13882
- scrivito.widget_clipboard.widget().id() === widget.id()) {
13883
- scrivito.widget_clipboard.clear();
13884
- }
13885
- });
14189
+ return widget.destroy().then(function() {
14190
+ if (scrivito.widget_clipboard.is_present() &&
14191
+ scrivito.widget_clipboard.widget().id() === widget.id()) {
14192
+ scrivito.widget_clipboard.clear();
14193
+ }
13886
14194
  });
13887
14195
  });
13888
14196
  }
@@ -13922,10 +14230,14 @@ $(window).on('load', function() {
13922
14230
  }());
13923
14231
  (function() {
13924
14232
  $.extend(scrivito, {
13925
- mark_resolved_obj_command: function(obj) {
14233
+ mark_resolved_obj_command: function(obj, translations_namespace) {
14234
+ if (!translations_namespace) {
14235
+ translations_namespace = 'commands.mark_resolved_obj';
14236
+ }
14237
+
13926
14238
  return scrivito.command.create_instance({
13927
14239
  id: 'mark_resolved_obj',
13928
- title: scrivito.i18n.translate('commands.mark_resolved_obj.title'),
14240
+ title: scrivito.i18n.translate(translations_namespace + '.title'),
13929
14241
  icon: '&#xf124;',
13930
14242
 
13931
14243
  present: function() {
@@ -13935,7 +14247,7 @@ $(window).on('load', function() {
13935
14247
  execute: function() {
13936
14248
  return scrivito.confirmation_dialog({
13937
14249
  title: scrivito.i18n.translate('commands.mark_resolved_obj.dialog.title'),
13938
- description: scrivito.i18n.translate('commands.mark_resolved_obj.dialog.description'),
14250
+ description: scrivito.i18n.translate(translations_namespace + '.dialog.description'),
13939
14251
  icon: '&#xf124;',
13940
14252
  color: 'red',
13941
14253
  confirm_button_text: scrivito.i18n.translate('commands.mark_resolved_obj.dialog.confirm'),
@@ -13994,13 +14306,14 @@ $(window).on('load', function() {
13994
14306
  },
13995
14307
 
13996
14308
  execute: function() {
13997
- var title = scrivito.i18n.translate('current_page');
13998
- var fetch_markup = function() {
13999
- return obj.fetch_details_markup();
14000
- };
14001
-
14002
14309
  return scrivito.write_monitor.track_changes(function() {
14003
- return scrivito.details_dialog.open(title, fetch_markup, '&#xf03d;');
14310
+ return scrivito.details_dialog.open({
14311
+ title: scrivito.i18n.translate('current_page'),
14312
+ icon: '&#xf03d;',
14313
+ fetch_markup: function() {
14314
+ return obj.fetch_details_markup();
14315
+ }
14316
+ });
14004
14317
  }, function() {
14005
14318
  return scrivito.with_saving_overlay(scrivito.reload());
14006
14319
  });
@@ -14011,10 +14324,56 @@ $(window).on('load', function() {
14011
14324
  }());
14012
14325
  (function() {
14013
14326
  $.extend(scrivito, {
14014
- restore_obj_command: function(obj) {
14327
+ publish_workspace_command: function(workspace) {
14328
+ var t = scrivito.i18n.translate;
14329
+ var workspace_title = workspace.title() ||
14330
+ t('menu_bar.empty_workspace_title');
14331
+
14332
+ return scrivito.command.create_instance({
14333
+ id: 'scrivito_publish_current_ws',
14334
+ title: t('commands.publish_workspace.title', workspace_title),
14335
+ icon: '&#xf064;',
14336
+ tooltip: t('commands.publish_workspace.title', workspace_title),
14337
+ disabled: function() {
14338
+ if (!scrivito.user_permissions.can("publish_workspace")) {
14339
+ return t('commands.publish_workspace.permission_denied');
14340
+ }
14341
+ },
14342
+ execute: function() {
14343
+ if (scrivito.user_permissions.can("publish_workspace")) {
14344
+ scrivito.workspace_select.close_menu();
14345
+
14346
+ scrivito.confirmation_dialog({
14347
+ icon: '&#xf064;',
14348
+ color: 'green',
14349
+ confirm_button_text: t('commands.publish_workspace.dialog.confirm'),
14350
+ confirm_button_color: 'green',
14351
+ title: t('commands.publish_workspace.dialog.title', workspace_title),
14352
+ description: t('commands.publish_workspace.dialog.description')
14353
+ }).done(function() {
14354
+ scrivito.with_saving_overlay(
14355
+ workspace.publish().then(function() {
14356
+ return scrivito.redirect_to('?_scrivito_workspace_id=published');
14357
+ })
14358
+ );
14359
+ });
14360
+ }
14361
+ return false;
14362
+ }
14363
+ });
14364
+ }
14365
+ });
14366
+ }());
14367
+ (function() {
14368
+ $.extend(scrivito, {
14369
+ restore_obj_command: function(obj, translations_namespace) {
14370
+ if (!translations_namespace) {
14371
+ translations_namespace = 'commands.restore_obj';
14372
+ }
14373
+
14015
14374
  return scrivito.command.create_instance({
14016
14375
  id: 'restore_obj',
14017
- title: scrivito.i18n.translate('commands.restore_obj.title'),
14376
+ title: scrivito.i18n.translate(translations_namespace + '.title'),
14018
14377
  icon: '&#xf032;',
14019
14378
 
14020
14379
  present: function() {
@@ -14023,7 +14382,10 @@ $(window).on('load', function() {
14023
14382
 
14024
14383
  disabled: function() {
14025
14384
  if (scrivito.editing_context.selected_workspace.is_rtc()) {
14026
- return scrivito.i18n.translate('commands.restore_obj.rtc_workspace');
14385
+ return scrivito.i18n.translate(translations_namespace + '.rtc_workspace');
14386
+ }
14387
+ if (obj.is_binary()) {
14388
+ return scrivito.i18n.translate('commands.restore_obj.is_binary');
14027
14389
  }
14028
14390
  },
14029
14391
 
@@ -14038,10 +14400,14 @@ $(window).on('load', function() {
14038
14400
  }());
14039
14401
  (function() {
14040
14402
  $.extend(scrivito, {
14041
- revert_obj_command: function(obj) {
14403
+ revert_obj_command: function(obj, translations_namespace) {
14404
+ if (!translations_namespace) {
14405
+ translations_namespace = 'commands.revert_obj';
14406
+ }
14407
+
14042
14408
  return scrivito.command.create_instance({
14043
14409
  id: 'revert_obj',
14044
- title: scrivito.i18n.translate('commands.revert_obj.title'),
14410
+ title: scrivito.i18n.translate(translations_namespace + '.title'),
14045
14411
  icon: '&#xf032;',
14046
14412
 
14047
14413
  present: function() {
@@ -14053,19 +14419,22 @@ $(window).on('load', function() {
14053
14419
  return scrivito.i18n.translate('commands.revert_obj.published_workspace');
14054
14420
  }
14055
14421
  if (scrivito.editing_context.selected_workspace.is_rtc()) {
14056
- return scrivito.i18n.translate('commands.revert_obj.rtc_workspace');
14422
+ return scrivito.i18n.translate(translations_namespace + '.rtc_workspace');
14057
14423
  }
14058
14424
  if (!obj.modification()) {
14059
- return scrivito.i18n.translate('commands.revert_obj.not_modified_obj');
14425
+ return scrivito.i18n.translate(translations_namespace + '.not_modified_obj');
14060
14426
  }
14061
14427
  if (obj.is_new()) {
14062
- return scrivito.i18n.translate('commands.revert_obj.new_obj');
14428
+ return scrivito.i18n.translate(translations_namespace + '.new_obj');
14429
+ }
14430
+ if (obj.is_binary()) {
14431
+ return scrivito.i18n.translate('commands.revert_obj.is_binary');
14063
14432
  }
14064
14433
  },
14065
14434
 
14066
14435
  execute: function() {
14067
14436
  return scrivito.confirmation_dialog({
14068
- title: scrivito.i18n.translate('commands.revert_obj.dialog.title'),
14437
+ title: scrivito.i18n.translate(translations_namespace + '.dialog.title'),
14069
14438
  description: scrivito.i18n.translate('commands.revert_obj.dialog.description'),
14070
14439
  icon: '&#xf032;',
14071
14440
  color: 'red',
@@ -14228,13 +14597,13 @@ $(window).on('load', function() {
14228
14597
  },
14229
14598
 
14230
14599
  execute: function() {
14231
- var dialog_title = widget_element.widget().widget_class_name();
14232
- var fetch_markup = function() {
14233
- return widget_element.fetch_details_markup();
14234
- };
14235
-
14236
14600
  return scrivito.write_monitor.track_changes(function() {
14237
- return scrivito.details_dialog.open(dialog_title, fetch_markup);
14601
+ return scrivito.details_dialog.open({
14602
+ title: widget_element.widget().widget_class_name(),
14603
+ fetch_markup: function() {
14604
+ return widget_element.fetch_details_markup();
14605
+ }
14606
+ });
14238
14607
  }, function() {
14239
14608
  widget_element.dom_element().trigger('scrivito_reload');
14240
14609
  });
@@ -14245,34 +14614,110 @@ $(window).on('load', function() {
14245
14614
  }());
14246
14615
  (function() {
14247
14616
  $.extend(scrivito, {
14248
- widget_menus: {
14617
+ child_list_commands: {
14249
14618
  init: function() {
14250
- scrivito.inplace_marker.define(function(inplace_marker) {
14251
- if (scrivito.editing_context.selected_workspace.is_editable()) {
14252
- _.each(scrivito.widget_field_element.all(), function(widget_field_element) {
14619
+ if (scrivito.editing_context.is_editing_mode()) {
14620
+ scrivito.on('content', function(content) {
14621
+ _.each(scrivito.child_list_element.all($(content)), function(child_list_element) {
14622
+ child_list_element.set_menu([
14623
+ scrivito.add_subpage_command(child_list_element),
14624
+ scrivito.copy_page_from_clipboard_command(child_list_element),
14625
+ scrivito.move_page_from_clipboard_command(child_list_element),
14626
+ scrivito.sort_items_command(child_list_element)
14627
+ ].concat(child_list_element.menu()));
14628
+ });
14629
+ });
14630
+ }
14631
+ }
14632
+ }
14633
+ });
14634
+ }());
14635
+ (function() {
14636
+ $.extend(scrivito, {
14637
+ widget_commands: {
14638
+ init: function() {
14639
+ if (!scrivito.editing_context.is_view_mode()) {
14640
+ scrivito.on('content', function(content) {
14641
+ _.each(scrivito.widget_element.all($(content)), function(widget_element) {
14642
+ var widget_field_element = widget_element.widget_field();
14643
+ widget_element.set_menu([
14644
+ scrivito.add_widget_command(widget_field_element, widget_element),
14645
+ scrivito.widget_details_command(widget_element),
14646
+ scrivito.save_widget_to_clipboard_command(widget_element),
14647
+ scrivito.copy_widget_from_clipboard_command(widget_field_element, widget_element),
14648
+ scrivito.delete_widget_command(widget_field_element, widget_element)
14649
+ ].concat(widget_element.menu()));
14650
+ });
14651
+ });
14652
+ }
14653
+ }
14654
+ }
14655
+ });
14656
+ }());
14657
+ (function() {
14658
+ $.extend(scrivito, {
14659
+ widget_field_commands: {
14660
+ init: function() {
14661
+ if (scrivito.editing_context.is_editing_mode()) {
14662
+ scrivito.on('content', function(content) {
14663
+ _.each(scrivito.widget_field_element.all($(content)), function(widget_field_element) {
14253
14664
  widget_field_element.set_menu([
14254
14665
  scrivito.add_widget_command(widget_field_element),
14255
14666
  scrivito.copy_widget_from_clipboard_command(widget_field_element)
14256
- ]);
14257
-
14258
- if (scrivito.editing_context.is_editing_mode() &&
14259
- widget_field_element.widget_elements().length === 0) {
14667
+ ].concat(widget_field_element.menu()));
14668
+ });
14669
+ });
14670
+ }
14671
+ }
14672
+ }
14673
+ });
14674
+ }());
14675
+ (function() {
14676
+ $.extend(scrivito, {
14677
+ child_list_marker: {
14678
+ init: function() {
14679
+ scrivito.inplace_marker.define(function(inplace_marker) {
14680
+ if (scrivito.editing_context.is_editing_mode()) {
14681
+ _.each(scrivito.child_list_element.all(), function(child_list_element) {
14682
+ var description = scrivito.i18n.translate('child_list_menu.description',
14683
+ child_list_element.obj().description_for_editor());
14684
+ inplace_marker.activate_for(child_list_element, {description: description});
14685
+ });
14686
+ }
14687
+ });
14688
+ }
14689
+ }
14690
+ });
14691
+ }());
14692
+ (function() {
14693
+ $.extend(scrivito, {
14694
+ widget_field_marker: {
14695
+ init: function() {
14696
+ scrivito.inplace_marker.define(function(inplace_marker) {
14697
+ if (scrivito.editing_context.is_editing_mode()) {
14698
+ _.each(scrivito.widget_field_element.all(), function(widget_field_element) {
14699
+ if (widget_field_element.is_empty()) {
14260
14700
  inplace_marker.activate_for(widget_field_element);
14261
14701
  }
14262
-
14702
+ });
14703
+ }
14704
+ });
14705
+ }
14706
+ }
14707
+ });
14708
+ }());
14709
+ (function() {
14710
+ $.extend(scrivito, {
14711
+ widget_marker: {
14712
+ init: function() {
14713
+ scrivito.inplace_marker.define(function(inplace_marker) {
14714
+ if (scrivito.editing_context.selected_workspace.is_editable()) {
14715
+ _.each(scrivito.widget_field_element.all(), function(widget_field_element) {
14263
14716
  _.each(widget_field_element.widget_elements(), function(widget_element) {
14264
- widget_element.set_menu([
14265
- scrivito.add_widget_command(widget_field_element, widget_element),
14266
- scrivito.widget_details_command(widget_element),
14267
- scrivito.save_widget_to_clipboard_command(widget_element),
14268
- scrivito.copy_widget_from_clipboard_command(widget_field_element, widget_element),
14269
- scrivito.delete_widget_command(widget_field_element, widget_element)
14270
- ]);
14271
-
14272
- var modification = widget_element.widget().modification() ||
14717
+ var is_modified = widget_element.widget().modification() ||
14273
14718
  widget_element.widget().container_modification();
14274
14719
  if (scrivito.editing_context.is_editing_mode() ||
14275
- scrivito.editing_context.is_comparing_mode() && !!modification) {
14720
+ scrivito.editing_context.is_comparing_mode() && is_modified) {
14276
14721
  inplace_marker.activate_for(widget_element,
14277
14722
  inplace_marker_options(widget_element));
14278
14723
  }
@@ -14329,7 +14774,7 @@ $(window).on('load', function() {
14329
14774
  }
14330
14775
 
14331
14776
  if (tooltip_translation_key) {
14332
- options.tooltip = scrivito.i18n.translate('widget_menus.' + tooltip_translation_key);
14777
+ options.tooltip = scrivito.i18n.translate('widget_marker.' + tooltip_translation_key);
14333
14778
  }
14334
14779
  }
14335
14780
 
@@ -14394,7 +14839,7 @@ $(window).on('load', function() {
14394
14839
  start: function(event, ui) {
14395
14840
  $('body').addClass('scrivito_widget_dragging_active');
14396
14841
 
14397
- scrivito.menus.close_all();
14842
+ scrivito.close_all_menus();
14398
14843
 
14399
14844
  var widget_element = scrivito.cms_element.from_dom_element(ui.item);
14400
14845
  var widget_class_name = widget_element.widget().widget_class_name();
@@ -14508,31 +14953,6 @@ $(window).on('load', function() {
14508
14953
  }
14509
14954
  };
14510
14955
  }());
14511
- (function() {
14512
- $.extend(scrivito, {
14513
- child_list_menus: {
14514
- init: function() {
14515
- scrivito.inplace_marker.define(function(inplace_marker) {
14516
- if (scrivito.editing_context.visible_workspace.is_editable() &&
14517
- scrivito.editing_context.is_editing_mode()) {
14518
- _.each(scrivito.child_list_element.all(), function(child_list_element) {
14519
- child_list_element.set_menu([
14520
- scrivito.add_subpage_command(child_list_element),
14521
- scrivito.copy_page_from_clipboard_command(child_list_element),
14522
- scrivito.move_page_from_clipboard_command(child_list_element),
14523
- scrivito.sort_items_command(child_list_element)
14524
- ]);
14525
-
14526
- var description = scrivito.i18n.translate('child_list_menu.description',
14527
- child_list_element.obj().description_for_editor());
14528
- inplace_marker.activate_for(child_list_element, {description: description});
14529
- });
14530
- }
14531
- });
14532
- }
14533
- }
14534
- });
14535
- }());
14536
14956
  (function() {
14537
14957
  $.extend(scrivito, {
14538
14958
  hotkeys: {
@@ -14558,10 +14978,9 @@ $(window).on('load', function() {
14558
14978
  }());
14559
14979
  (function() {
14560
14980
  $.extend(scrivito, {
14561
- with_dialog_behaviour: function(promise, key_map) {
14562
- return scrivito.with_overlay(
14563
- scrivito.hotkeys.add_actions_while(promise, key_map)
14564
- );
14981
+ with_dialog_behaviour: function(dom_element, promise, key_map) {
14982
+ return scrivito.with_dialog_overlay(dom_element,
14983
+ scrivito.hotkeys.add_actions_while(promise, key_map));
14565
14984
  }
14566
14985
  });
14567
14986
  }());
@@ -14574,6 +14993,7 @@ $(window).on('load', function() {
14574
14993
  if (scrivito.in_editable_view()) {
14575
14994
  activate_for_field_type('linklist');
14576
14995
  activate_for_field_type('reference');
14996
+ activate_for_field_type('link');
14577
14997
  }
14578
14998
  });
14579
14999
 
@@ -14606,12 +15026,18 @@ $(window).on('load', function() {
14606
15026
 
14607
15027
  scrivito.with_saving_overlay(create_image(file).then(function(obj) {
14608
15028
  var field_value;
14609
- if (field_type === 'reference') {
14610
- field_value = obj.id;
14611
- } else if (field_type === 'linklist') {
14612
- field_value = [{obj_id: obj.id}];
14613
- } else {
14614
- $.error('Field type must be "reference" or "linklist".');
15029
+ switch(field_type) {
15030
+ case 'reference':
15031
+ field_value = obj.id;
15032
+ break;
15033
+ case 'linklist':
15034
+ field_value = [{obj_id: obj.id}];
15035
+ break;
15036
+ case 'link':
15037
+ field_value = {obj_id: obj.id};
15038
+ break;
15039
+ default:
15040
+ $.error('Field type must be "reference", "linklist" or "link".');
14615
15041
  }
14616
15042
 
14617
15043
  return dom_element.scrivito('save', field_value).then(function() {
@@ -14656,7 +15082,7 @@ $(window).on('load', function() {
14656
15082
  workspaces: workspaces
14657
15083
  }));
14658
15084
 
14659
- $('#ip-editing').append(view);
15085
+ $('#scrivito_editing').append(view);
14660
15086
 
14661
15087
  var create_new_ws = false;
14662
15088
 
@@ -14715,7 +15141,7 @@ $(window).on('load', function() {
14715
15141
  view.find('#scrivito_list_of_ws').focus();
14716
15142
  }
14717
15143
 
14718
- return scrivito.with_dialog_behaviour(deferred, {
15144
+ return scrivito.with_dialog_behaviour(view, deferred, {
14719
15145
  enter: confirm_action,
14720
15146
  escape: cancel_action
14721
15147
  });
@@ -14733,7 +15159,7 @@ $(window).on('load', function() {
14733
15159
  child_list: child_list
14734
15160
  }));
14735
15161
 
14736
- $('#ip-editing').append(view);
15162
+ $('#scrivito_editing').append(view);
14737
15163
  $('#scrivito_obj_sorting_sortable').sortable({
14738
15164
  placeholder: 'scrivito_obj_sorting_placeholder'
14739
15165
  });
@@ -14771,7 +15197,7 @@ $(window).on('load', function() {
14771
15197
  scrivito.dialog.adjust(view);
14772
15198
  });
14773
15199
 
14774
- return scrivito.with_dialog_behaviour(deferred, {
15200
+ return scrivito.with_dialog_behaviour(view, deferred, {
14775
15201
  enter: confirm_action,
14776
15202
  escape: cancel_action
14777
15203
  });
@@ -14910,13 +15336,23 @@ $(window).on('load', function() {
14910
15336
 
14911
15337
 
14912
15338
 
15339
+
15340
+
15341
+
15342
+
15343
+
15344
+ //
14913
15345
 
14914
15346
  //
14915
15347
 
15348
+
15349
+
14916
15350
  //
14917
15351
 
14918
15352
 
14919
15353
 
15354
+ //
15355
+
14920
15356
 
14921
15357
 
14922
15358