scrivito_sdk 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abac40ae69e81dc3a8ecf001f3a66513a901b015
4
- data.tar.gz: 41b484f12f8c90c59f2a7a0c36c7926f2545a07b
3
+ metadata.gz: c8722f05fe458cb8118c945e6339e5c50861e578
4
+ data.tar.gz: d11c45d1627e15cd80fbd57fd7bbe9998855a4c3
5
5
  SHA512:
6
- metadata.gz: aa5bf142baaf78af044daf72e8ee08f7787ca994ba6aed1ca9047cbe9790ea39c6240f3d3efe3f61b59921d830134630aeb0b55a98e6255b61c40bc1a3897c20
7
- data.tar.gz: c5e24dae5899d8b36f4e2c761aac54ffd46cefea2518bf8263c5161e6a34ea36b37e78fc16a29be0546a4aeed22698c0109a7f93454d1b6767b3a98425f6cda3
6
+ metadata.gz: d7a0c55860da5ab22465f953c460353e7379b6510000fa6031e1a3d6d008eb5854a15f68c82999352fe37b580a82fb83511d5622199ac6d6e3b92bf38452f8d3
7
+ data.tar.gz: 54143fff9ba90c9e52ac45c38c7e7baf73be78f4e61b8db6fd9ab03b3b8a2f9bdeb36f5629e71d210759599dcf3dd75ff07ef47860c046976ac404eaa976a583
@@ -9,7 +9,7 @@ module Scrivito
9
9
  include CmsAccessible
10
10
 
11
11
  before_filter :load_object
12
- before_filter :authorize_editor, only: [:show_widget, :widget_details]
12
+ before_filter :authorize_editor, only: [:show_widget, :widget_details, :details_page]
13
13
 
14
14
  # Default Action. Delivers files directly if {BasicObj#binary?}.
15
15
  # Otherwise the view is rendered.
@@ -29,6 +29,13 @@ module Scrivito
29
29
  render template_path, layout: false, locals: {widget: widget}
30
30
  end
31
31
 
32
+ def details_page
33
+ @scrivito_open_details_page = true
34
+ @scrivito_binary_id = params[:binary_id]
35
+ @scrivito_return_to = params[:return_to]
36
+ render text: '', layout: true
37
+ end
38
+
32
39
  # This method indicates if this controller should be used automatically when an Obj is
33
40
  # requested via the Scrivito's standard routes. It returns true by default.
34
41
  #
@@ -194,6 +194,7 @@ module Scrivito
194
194
  if inplace_editing_allowed?
195
195
  options['data-scrivito-private-widget-id'] = widget.id
196
196
  options['data-scrivito-widget-obj-class'] = widget.obj_class_name
197
+ options['data-scrivito-private-widget-description-for-editor'] = widget.description_for_editor
197
198
 
198
199
  if has_widget_details_view?(widget)
199
200
  options['data-scrivito-private-widget-has-details-view'] = true
@@ -19,7 +19,11 @@ module Scrivito
19
19
  end
20
20
 
21
21
  def scrivito_client_config
22
- ClientConfig.new(@obj, cms_editing_context, lookup_context).to_json.html_safe
22
+ client_config = ClientConfig.new(@obj, cms_editing_context, lookup_context)
23
+ if @scrivito_open_details_page
24
+ client_config.open_resource_dialog(@scrivito_binary_id, @scrivito_return_to);
25
+ end
26
+ client_config.to_json.html_safe
23
27
  end
24
28
  end
25
29
 
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## /mnt/dcc/Scrival_SDK__Kris__117/repos/scrivito/config/ca-bundle.crt -- Bundle of CA Root Certificates
3
3
  ##
4
- ## Converted at: Wed May 28 09:37:50 2014 UTC
4
+ ## Converted at: Wed Jun 4 15:54:47 2014 UTC
5
5
  ##
6
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
@@ -1,7 +1,10 @@
1
1
  Rails.application.routes.draw do
2
2
  root to: 'scrivito/cms_dispatch#index'
3
3
 
4
- match '__scrivito/render_widget/:id/:action/:widget_id' => 'scrivito/cms_dispatch', via: :get
4
+ get '__scrivito/render_widget/:id/show_widget/:widget_id' => 'scrivito/cms_dispatch#show_widget'
5
+ get '__scrivito/render_widget/:id/widget_details/:widget_id' => 'scrivito/cms_dispatch#widget_details'
6
+
7
+ get '/__scrivito/details_page/:binary_id' => 'scrivito/cms_dispatch#details_page'
5
8
 
6
9
  match ':id(/*slug)',
7
10
  to: 'scrivito/cms_dispatch#index',
@@ -9682,7 +9682,45 @@ helpers = helpers || Handlebars.helpers; data = data || {};
9682
9682
  }).call(this);
9683
9683
  (function() {
9684
9684
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9685
- this.ScrivitoHandlebarsTemplates["inplace_menu"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9685
+ this.ScrivitoHandlebarsTemplates["inplace_marker"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9686
+ this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9687
+ helpers = helpers || Handlebars.helpers; data = data || {};
9688
+ var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
9689
+
9690
+ function program1(depth0,data) {
9691
+
9692
+ var buffer = "", stack1;
9693
+ buffer += "\n <span class=\"scrivito_editing_marker_title\">";
9694
+ if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9695
+ else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9696
+ buffer += escapeExpression(stack1)
9697
+ + "</span>\n ";
9698
+ return buffer;
9699
+ }
9700
+
9701
+ buffer += "<span class=\"scrivito_editing_marker ";
9702
+ if (stack1 = helpers.css_classes) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9703
+ else { stack1 = depth0.css_classes; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9704
+ buffer += escapeExpression(stack1)
9705
+ + "\" title=\"";
9706
+ if (stack1 = helpers.tooltip) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9707
+ else { stack1 = depth0.tooltip; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9708
+ buffer += escapeExpression(stack1)
9709
+ + "\">\n <i class=\"scrivito_icon\">";
9710
+ if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9711
+ else { stack1 = depth0.icon; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9712
+ buffer += escapeExpression(stack1)
9713
+ + "</i>\n ";
9714
+ stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9715
+ if(stack1 || stack1 === 0) { buffer += stack1; }
9716
+ buffer += "\n</span>\n";
9717
+ return buffer;
9718
+ });
9719
+ return this.ScrivitoHandlebarsTemplates["inplace_marker"];
9720
+ }).call(this);
9721
+ (function() {
9722
+ this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9723
+ this.ScrivitoHandlebarsTemplates["menu"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9686
9724
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9687
9725
  helpers = helpers || Handlebars.helpers; data = data || {};
9688
9726
  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
@@ -9742,59 +9780,13 @@ function program7(depth0,data) {
9742
9780
  return escapeExpression(stack1);
9743
9781
  }
9744
9782
 
9745
- buffer += "<div id=\"";
9746
- if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9747
- else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9748
- buffer += escapeExpression(stack1)
9749
- + "\" class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box scrivito_right\">\n ";
9783
+ buffer += "<div class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box scrivito_right\">\n ";
9750
9784
  stack1 = helpers.each.call(depth0, depth0.commands, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9751
9785
  if(stack1 || stack1 === 0) { buffer += stack1; }
9752
9786
  buffer += "\n </ul>\n</div>\n";
9753
9787
  return buffer;
9754
9788
  });
9755
- return this.ScrivitoHandlebarsTemplates["inplace_menu"];
9756
- }).call(this);
9757
- (function() {
9758
- this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
9759
- this.ScrivitoHandlebarsTemplates["inplace_menu_marker"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
9760
- this.compilerInfo = [3,'>= 1.0.0-rc.4'];
9761
- helpers = helpers || Handlebars.helpers; data = data || {};
9762
- var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
9763
-
9764
- function program1(depth0,data) {
9765
-
9766
- var buffer = "", stack1;
9767
- buffer += "\n <span class=\"scrivito_editing_marker_title\">";
9768
- if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9769
- else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9770
- buffer += escapeExpression(stack1)
9771
- + "</span>\n ";
9772
- return buffer;
9773
- }
9774
-
9775
- buffer += "<span class=\"scrivito_editing_marker ";
9776
- if (stack1 = helpers.css_classes) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9777
- else { stack1 = depth0.css_classes; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9778
- buffer += escapeExpression(stack1)
9779
- + "\" id=\"";
9780
- if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9781
- else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9782
- buffer += escapeExpression(stack1)
9783
- + "\" title=\"";
9784
- if (stack1 = helpers.tooltip) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9785
- else { stack1 = depth0.tooltip; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9786
- buffer += escapeExpression(stack1)
9787
- + "\">\n <i class=\"scrivito_icon\">";
9788
- if (stack1 = helpers.icon) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
9789
- else { stack1 = depth0.icon; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
9790
- buffer += escapeExpression(stack1)
9791
- + "</i>\n ";
9792
- stack1 = helpers['if'].call(depth0, depth0.description, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9793
- if(stack1 || stack1 === 0) { buffer += stack1; }
9794
- buffer += "\n</span>\n";
9795
- return buffer;
9796
- });
9797
- return this.ScrivitoHandlebarsTemplates["inplace_menu_marker"];
9789
+ return this.ScrivitoHandlebarsTemplates["menu"];
9798
9790
  }).call(this);
9799
9791
  (function() {
9800
9792
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
@@ -9959,7 +9951,7 @@ function program1(depth0,data) {
9959
9951
  if(stack1 || stack1 === 0) { buffer += stack1; }
9960
9952
  buffer += "</i>";
9961
9953
  options = {hash:{},data:data};
9962
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "inplace_menus.sort_items", options) : helperMissing.call(depth0, "translate", "inplace_menus.sort_items", options)))
9954
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "inplace_marker.sort_items", options) : helperMissing.call(depth0, "translate", "inplace_marker.sort_items", options)))
9963
9955
  + "</h3>\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\">\n <ul id=\"scrivito_obj_sorting_sortable\">\n ";
9964
9956
  stack2 = helpers.each.call(depth0, depth0.child_list, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
9965
9957
  if(stack2 || stack2 === 0) { buffer += stack2; }
@@ -10351,7 +10343,10 @@ $.i18n().load({
10351
10343
  'commands.sort_items.too_less_children': 'Die Navigation kann nicht sortiert werden, weil sie weniger als zwei Elemente enthält.',
10352
10344
 
10353
10345
  'commands.add_widget.title': 'Widget einfügen',
10346
+
10354
10347
  'commands.widget_details.title': 'Widget-Eigenschaften',
10348
+ 'commands.widget_details.no_details_view': 'Dieses Widget hat keine Eigenschaften',
10349
+
10355
10350
  'commands.save_widget_to_clipboard.title': 'Widget zum Kopieren markieren',
10356
10351
 
10357
10352
  'commands.copy_widget_from_clipboard.title': 'Markiertes Widget hierher kopieren',
@@ -10500,7 +10495,10 @@ $.i18n().load({
10500
10495
  'commands.sort_items.too_less_children': 'This navigation cannot be sorted because it consists of less than two items.',
10501
10496
 
10502
10497
  'commands.add_widget.title': 'Insert widget',
10498
+
10503
10499
  'commands.widget_details.title': 'Widget properties',
10500
+ 'commands.widget_details.no_details_view': 'This widget has no properties',
10501
+
10504
10502
  'commands.save_widget_to_clipboard.title': 'Mark widget for copying',
10505
10503
 
10506
10504
  'commands.copy_widget_from_clipboard.title': 'Copy marked widget here',
@@ -10666,16 +10664,34 @@ var scrivito = {};
10666
10664
 
10667
10665
  on: function(event, callback) {
10668
10666
  if (event === 'editing') {
10667
+ scrivito.deprecation_warning('scrivito.on("editing", ...)',
10668
+ 'scrivito.on("load", ...) && scrivito.in_editable_view()');
10669
10669
  scrivito.gui.on('editing', function() {
10670
10670
  if (scrivito.editing_context.visible_workspace.is_editable()) {
10671
10671
  callback();
10672
10672
  }
10673
10673
  });
10674
10674
  } else if (event === 'new_content') {
10675
+ scrivito.deprecation_warning('scrivito.on("new_content", ...)',
10676
+ 'scrivito.on("content", ...)');
10675
10677
  scrivito.gui.on('new_content', function(dom_element) {
10676
- if (dom_element) {
10677
- callback(dom_element);
10678
- }
10678
+ callback(dom_element);
10679
+ });
10680
+ } else if (event === 'load') {
10681
+ scrivito.gui.on('open', function() {
10682
+ callback();
10683
+ });
10684
+
10685
+ if (scrivito.gui.is_started()) {
10686
+ callback();
10687
+ }
10688
+ } else if (event === 'content') {
10689
+ scrivito.on('load', function() {
10690
+ callback(window.document);
10691
+ });
10692
+
10693
+ scrivito.gui.on('content', function(dom_element) {
10694
+ callback(dom_element);
10679
10695
  });
10680
10696
  } else {
10681
10697
  $.error('Unknown event "' + event + '"');
@@ -10710,17 +10726,13 @@ var scrivito = {};
10710
10726
  }
10711
10727
  },
10712
10728
 
10713
- open_resource_dialog: function(obj_id) {
10714
- var title = scrivito.i18n.translate('resource');
10715
-
10716
- var obj = scrivito.obj.create_instance({
10717
- id: obj_id
10718
- });
10719
- var fetch_markup = function() {
10720
- return obj.fetch_details_markup();
10721
- };
10729
+ in_editable_view: function() {
10730
+ return scrivito.editing_context.display_mode === 'editing' &&
10731
+ scrivito.editing_context.visible_workspace.is_editable();
10732
+ },
10722
10733
 
10723
- return scrivito.details_dialog.open(title, fetch_markup, '&#xf03d;');
10734
+ open_resource_dialog: function(obj_id) {
10735
+ return scrivito.resource_dialog.open(obj_id);
10724
10736
  },
10725
10737
 
10726
10738
  init: function(config) {
@@ -10729,8 +10741,9 @@ var scrivito = {};
10729
10741
  scrivito.editing_context.init(config.editing_context);
10730
10742
  scrivito.i18n.init(config.i18n);
10731
10743
  scrivito.obj.init(config.obj);
10744
+ scrivito.resource_dialog.init(config.open_resource_dialog);
10732
10745
 
10733
- scrivito.inplace_menus.init();
10746
+ scrivito.inplace_marker.init();
10734
10747
  scrivito.menu_bar_saving_indicator.init();
10735
10748
  scrivito.menu_bar_toggle.init();
10736
10749
  scrivito.menu_bar_dropdown.init();
@@ -10876,16 +10889,22 @@ var scrivito = {};
10876
10889
  }
10877
10890
  });
10878
10891
  }
10892
+
10893
+ if (callbacks.content) {
10894
+ _.each(callbacks.content, function(callback) {
10895
+ if (dom_element) {
10896
+ callback(dom_element);
10897
+ }
10898
+ });
10899
+ }
10879
10900
  };
10880
10901
 
10881
10902
  $.extend(scrivito, {
10882
10903
  gui: {
10883
10904
  start: function() {
10884
10905
  $('body').attr('data-scrivito-display-mode', scrivito.editing_context.display_mode);
10885
-
10886
- run_open_callbacks();
10887
-
10888
10906
  $('body').append('<div id="ip-editing"></div>');
10907
+ run_open_callbacks();
10889
10908
  },
10890
10909
 
10891
10910
  new_content: function(dom_element) {
@@ -10903,6 +10922,10 @@ var scrivito = {};
10903
10922
  // for testing purposes only
10904
10923
  reset_callbacks: function() {
10905
10924
  callbacks = {};
10925
+ },
10926
+
10927
+ is_started: function() {
10928
+ return !!$('body').attr('data-scrivito-display-mode');
10906
10929
  }
10907
10930
  }
10908
10931
  });
@@ -11591,18 +11614,7 @@ var scrivito = {};
11591
11614
  'data-scrivito-private-changes-list-obj-modification');
11592
11615
  var obj_is_binary = element.attr('data-scrivito-private-changes-list-obj-is-binary');
11593
11616
 
11594
- if (!!obj_is_binary) {
11595
- scrivito.open_resource_dialog(obj_id);
11596
- } else {
11597
- if (obj_modification === 'deleted') {
11598
- scrivito.change_location('/' + obj_id + '?_scrivito_display_mode=deleted');
11599
- } else if (obj_modification === 'new' &&
11600
- scrivito.editing_context.is_deleted_mode()) {
11601
- scrivito.change_location('/' + obj_id + '?_scrivito_display_mode=added');
11602
- } else {
11603
- scrivito.change_location('/' + obj_id);
11604
- }
11605
- }
11617
+ scrivito.changes_dialog.redirect_to_obj(obj_id, obj_modification, obj_is_binary);
11606
11618
  return false;
11607
11619
  });
11608
11620
  });
@@ -11629,6 +11641,26 @@ var scrivito = {};
11629
11641
  });
11630
11642
 
11631
11643
  return scrivito.with_dialog_behaviour(deferred, {escape: cancel});
11644
+ },
11645
+
11646
+ redirect_to_obj: function(obj_id, modification, is_binary) {
11647
+ var base_url = '/';
11648
+ var query_params = {};
11649
+
11650
+ if (!!is_binary) {
11651
+ base_url = '/__scrivito/details_page/';
11652
+ query_params.return_to = document.URL;
11653
+ }
11654
+
11655
+ if (modification === 'deleted' && !scrivito.editing_context.is_deleted_mode()) {
11656
+ query_params._scrivito_display_mode = 'deleted';
11657
+ }
11658
+
11659
+ if (modification === 'new' && scrivito.editing_context.is_deleted_mode()) {
11660
+ query_params._scrivito_display_mode = 'added';
11661
+ }
11662
+
11663
+ scrivito.change_location(base_url + obj_id + '?' + $.param( query_params ));
11632
11664
  }
11633
11665
  }
11634
11666
  });
@@ -11869,6 +11901,19 @@ $(function() {
11869
11901
 
11870
11902
  equals: function(cms_element) {
11871
11903
  return cms_element.dom_element().get(0) === that.dom_element().get(0);
11904
+ },
11905
+
11906
+ menu: function() {
11907
+ var menu = dom_element.data('scrivito-menu');
11908
+ if (!menu) {
11909
+ menu = [];
11910
+ that.set_menu(menu);
11911
+ }
11912
+ return menu;
11913
+ },
11914
+
11915
+ set_menu: function(menu) {
11916
+ dom_element.data('scrivito-menu', menu);
11872
11917
  }
11873
11918
  };
11874
11919
 
@@ -12518,6 +12563,10 @@ $(function() {
12518
12563
  return options.container_modification;
12519
12564
  },
12520
12565
 
12566
+ description_for_editor: function() {
12567
+ return options.description_for_editor;
12568
+ },
12569
+
12521
12570
  is_modified: function() {
12522
12571
  return !!(that.modification() || that.container_modification());
12523
12572
  },
@@ -12569,13 +12618,16 @@ $(function() {
12569
12618
 
12570
12619
  $.extend(that, {
12571
12620
  widget: function() {
12621
+ var dom_element = that.dom_element();
12572
12622
  return scrivito.widget.create_instance(that.widget_field().obj(),
12573
- that.dom_element().attr('data-scrivito-private-widget-id'),
12574
- that.dom_element().attr('data-scrivito-widget-obj-class'),
12623
+ dom_element.attr('data-scrivito-private-widget-id'),
12624
+ dom_element.attr('data-scrivito-widget-obj-class'),
12575
12625
  {
12576
- modification: that.dom_element().attr('data-scrivito-private-widget-modification'),
12577
- container_modification: that.dom_element().attr(
12578
- 'data-scrivito-private-widget-container-modification')
12626
+ modification: dom_element.attr('data-scrivito-private-widget-modification'),
12627
+ container_modification: dom_element.attr(
12628
+ 'data-scrivito-private-widget-container-modification'),
12629
+ description_for_editor: dom_element.attr(
12630
+ 'data-scrivito-private-widget-description-for-editor')
12579
12631
  }
12580
12632
  );
12581
12633
  },
@@ -12624,7 +12676,8 @@ $(function() {
12624
12676
  },
12625
12677
 
12626
12678
  widget_elements: function() {
12627
- var widget_elements_dom = that.dom_element().children('[data-scrivito-private-widget-id]');
12679
+ var widget_elements_dom = that.dom_element()
12680
+ .children('[data-scrivito-private-widget-id]');
12628
12681
  var widget_elements = _.map(widget_elements_dom, function(widget_element_dom) {
12629
12682
  return scrivito.cms_element.from_dom_element($(widget_element_dom));
12630
12683
  });
@@ -12681,7 +12734,8 @@ $(function() {
12681
12734
  var add_widget = function(widget_spec, widget_element) {
12682
12735
  var position;
12683
12736
  if (widget_element) {
12684
- position = widget_element.dom_element().index() + 1;
12737
+ position = widget_element.dom_element()
12738
+ .prevAll('[data-scrivito-private-widget-id]').length + 1;
12685
12739
  } else {
12686
12740
  position = that.widget_elements().length;
12687
12741
  }
@@ -13364,11 +13418,17 @@ $(function() {
13364
13418
 
13365
13419
  fetch_markup().then(function(markup) {
13366
13420
  target.html(markup);
13367
- var modal_size = $(markup).attr('data-scrivito-modal-size');
13368
- var valid_sizes = ['small', 'medium', 'large'];
13369
- if ($.inArray(modal_size, valid_sizes) !== -1) {
13421
+
13422
+ var size_attr = 'data-scrivito-modal-size';
13423
+ var modal_size = $(markup).attr(size_attr) ||
13424
+ $(markup).find('[' + size_attr + ']').attr(size_attr);
13425
+ if (_.contains(['small', 'medium', 'large'], modal_size)) {
13370
13426
  view.removeClass('scrivito_modal_medium');
13371
- view.addClass('scrivito_modal_' + modal_size);
13427
+ scrivito.transition(view, function() {
13428
+ view.addClass('scrivito_modal_' + modal_size);
13429
+ }).then(function() {
13430
+ scrivito.dialog.adjust(view);
13431
+ });
13372
13432
  }
13373
13433
 
13374
13434
  spinner.hide();
@@ -13412,180 +13472,158 @@ $(function() {
13412
13472
  });
13413
13473
  }());
13414
13474
  (function() {
13415
- var menu_define_callbacks = [];
13416
- var dom_elements_with_menus = [];
13417
- var dom_elements_with_marker = [];
13418
- var fade_time = 500;
13419
-
13420
13475
  $.extend(scrivito, {
13421
- inplace_menus: {
13422
- define: function(menu_define_callback) {
13423
- menu_define_callbacks.push(menu_define_callback);
13424
- },
13476
+ menus: {
13477
+ open: function(dom_element, commands) {
13478
+ scrivito.menus.close_all();
13425
13479
 
13426
- refresh_positions: function() {
13427
- _.each($('.scrivito_editing_marker_menu'), function(menu_dom) {
13428
- var menu = $(menu_dom);
13429
- var marker = $('#' + menu.data('scrivito-private-menu-marker-id'));
13430
- menu.offset(marker.offset());
13431
- });
13432
- },
13480
+ var menu = $(scrivito.template.render('menu', {commands: commands}));
13433
13481
 
13434
- reset_menu_define_callbacks: function() {
13435
- menu_define_callbacks = [];
13436
- },
13482
+ menu.data('scrivito-private-menus-target', dom_element);
13483
+ dom_element.data('scrivito-private-menus-menu', menu);
13437
13484
 
13438
- init: function() {
13439
- scrivito.gui.on('open', function() {
13440
- scrivito.inplace_menus.refresh();
13441
- });
13442
-
13443
- scrivito.gui.on('new_content', function() {
13444
- scrivito.inplace_menus.refresh();
13485
+ _.each(commands, function(command) {
13486
+ menu.find('.scrivito_menu_item.' + command.id()).on('click', function() {
13487
+ if (command.is_enabled()) {
13488
+ close(menu);
13489
+ }
13490
+ command.execute();
13491
+ return false;
13492
+ });
13445
13493
  });
13446
- },
13447
13494
 
13448
- close_all_menus: function() {
13449
- remove_menus();
13495
+ menu.appendTo($('body'));
13496
+ menu.offset(dom_element.offset()); // Bugfix IE: offset can not be set before append.
13497
+ menu.find('.scrivito_menu_box').fadeIn(500);
13450
13498
  },
13451
13499
 
13452
- refresh: function() {
13453
- if (!scrivito.editing_context.is_view_mode()) {
13454
- remove_markers_and_menus();
13455
- collect_menu_items();
13456
- render_menu_items();
13457
- scrivito.inplace_menus.refresh_positions();
13500
+ toggle: function(dom_element, commands) {
13501
+ var menu = dom_element.data('scrivito-private-menus-menu');
13502
+ if (menu) {
13503
+ close(menu);
13504
+ } else {
13505
+ scrivito.menus.open(dom_element, commands);
13458
13506
  }
13459
- }
13460
- }
13461
- });
13462
-
13463
- var collect_menu_items = function() {
13464
- var menu = {
13465
- add_item: function(dom_element, command) {
13466
- dom_element = $(dom_element);
13467
- var commands = dom_element.data('scrivito-private-menu-commands') || [];
13468
- commands.push(command);
13469
- dom_elements_with_menus.push(dom_element);
13470
- if (command.is_present()) {
13471
- dom_elements_with_marker.push(dom_element);
13472
- }
13473
- dom_element.data('scrivito-private-menu-commands', commands);
13474
- },
13475
-
13476
- set_icon: function(dom_element, icon) {
13477
- $(dom_element).attr('data-scrivito-private-menu-icon', icon);
13478
13507
  },
13479
13508
 
13480
- set_description: function(dom_element, description) {
13481
- $(dom_element).attr('data-scrivito-private-menu-description', description);
13482
- },
13483
-
13484
- set_tooltip: function(dom_element, tooltip) {
13485
- $(dom_element).attr('data-scrivito-private-menu-tooltip', tooltip);
13509
+ close_all: function() {
13510
+ each_menu(function(menu) {
13511
+ close(menu);
13512
+ });
13486
13513
  },
13487
13514
 
13488
- set_css_classes: function(dom_element, css_classes) {
13489
- $(dom_element).attr('data-scrivito-private-menu-css-classes', css_classes);
13515
+ refresh_positions: function() {
13516
+ each_menu(function(menu) {
13517
+ menu.offset(menu.data('scrivito-private-menus-target').offset());
13518
+ });
13490
13519
  }
13491
- };
13520
+ }
13521
+ });
13492
13522
 
13493
- _.each($(menu_define_callbacks), function(menu_define_callback) {
13494
- menu_define_callback(menu);
13523
+ var each_menu = function(callback) {
13524
+ _.each($('.scrivito_editing_marker_menu'), function(menu) {
13525
+ callback($(menu));
13495
13526
  });
13496
13527
  };
13497
13528
 
13498
- var fade_out_and_remove_menus = function(menus) {
13499
- menus.fadeOut(fade_time, function() {
13500
- menus.remove();
13529
+ var close = function(menu) {
13530
+ menu.data('scrivito-private-menus-target').removeData('scrivito-private-menus-menu');
13531
+ menu.fadeOut(500, function() {
13532
+ menu.remove();
13501
13533
  });
13502
13534
  };
13535
+ }());
13503
13536
 
13504
- var render_menu_items = function() {
13505
- _.each($(dom_elements_with_marker), function(dom_element, i) {
13506
- if (dom_element.children('.scrivito_editing_marker').length === 0) {
13507
- var menu_id = 'scrivito_private_menu_' + i;
13508
- var marker_id = 'scrivito_private_menu_marker_' + i;
13509
-
13510
- var icon = dom_element.attr('data-scrivito-private-menu-icon') || '\uf000';
13511
- var description = dom_element.attr('data-scrivito-private-menu-description');
13512
- var tooltip = dom_element.attr('data-scrivito-private-menu-tooltip');
13513
- var css_classes = dom_element.attr('data-scrivito-private-menu-css-classes');
13514
- var commands = dom_element.data('scrivito-private-menu-commands');
13515
-
13516
- var marker = $(scrivito.template.render('inplace_menu_marker', {
13517
- id: marker_id,
13518
- icon: icon,
13519
- description: description,
13520
- tooltip: tooltip,
13521
- css_classes: css_classes
13522
- }));
13523
-
13524
- marker.data('scrivito-private-menu-id', marker_id);
13537
+ $(window).on('resize', function() {
13538
+ scrivito.menus.refresh_positions();
13539
+ });
13525
13540
 
13526
- marker.on('click.ip-menu-open', function(e) {
13527
- e.preventDefault();
13541
+ $(window).on('load', function() {
13542
+ scrivito.menus.refresh_positions();
13543
+ });
13544
+ (function() {
13545
+ var callbacks = [];
13528
13546
 
13529
- var menu = $('#' + menu_id);
13547
+ $.extend(scrivito, {
13548
+ inplace_marker: {
13549
+ init: function() {
13550
+ scrivito.on('load', function() {
13551
+ scrivito.inplace_marker.refresh();
13552
+ });
13553
+ scrivito.on('content', function() {
13554
+ scrivito.inplace_marker.refresh();
13555
+ });
13556
+ },
13530
13557
 
13531
- var remove_menu = function() {
13532
- fade_out_and_remove_menus(menu);
13533
- };
13558
+ define: function(callback) {
13559
+ callbacks.push(callback);
13560
+ },
13534
13561
 
13535
- if (menu.length === 0) {
13536
- fade_out_and_remove_menus($('.scrivito_editing_marker_menu').not(menu));
13562
+ refresh: function() {
13563
+ if (!scrivito.editing_context.is_view_mode()) {
13564
+ $('.scrivito_editing_marker').remove();
13537
13565
 
13538
- menu = $(scrivito.template.render('inplace_menu', {id: menu_id, commands: commands}));
13566
+ _.each(callbacks, function(callback) {
13567
+ callback(builder);
13568
+ });
13539
13569
 
13540
- _.each(commands, function(command) {
13541
- menu.find('.scrivito_menu_item.' + command.id()).click(function() {
13542
- if (command.is_enabled()) {
13543
- remove_menu();
13544
- }
13545
- command.execute();
13546
- return false;
13547
- });
13548
- });
13570
+ scrivito.menus.refresh_positions();
13571
+ }
13572
+ },
13549
13573
 
13550
- menu.data('scrivito-private-menu-marker-id', marker_id);
13574
+ // For test purpose only.
13575
+ reset_callbacks: function() {
13576
+ callbacks = [];
13577
+ }
13578
+ }
13579
+ });
13551
13580
 
13552
- $('body').append(menu);
13581
+ var builder = {
13582
+ activate_for: function(cms_element, options) {
13583
+ var marker = $(scrivito.template.render('inplace_marker',
13584
+ $.extend({icon: '\uf000'}, options || {})));
13553
13585
 
13554
- // Bugfix IE: offset can not be set before append.
13555
- menu.offset(marker.offset());
13556
- menu.find('.scrivito_menu_box').fadeIn(fade_time);
13557
- } else {
13558
- remove_menu();
13559
- }
13560
- });
13586
+ marker.on('click', function() {
13587
+ scrivito.menus.toggle(marker, cms_element.menu());
13588
+ return false;
13589
+ });
13561
13590
 
13562
- dom_element.prepend(marker);
13563
- }
13564
- });
13591
+ marker.prependTo(cms_element.dom_element());
13592
+ }
13565
13593
  };
13594
+ }());
13595
+ (function() {
13596
+ $.extend(scrivito, {
13597
+ resource_dialog: {
13598
+ init: function(config) {
13599
+ if (config) {
13600
+ scrivito.gui.on('open', function() {
13601
+ scrivito.resource_dialog.open_and_redirect_on_close(config.obj_id, config.redirect_to);
13602
+ });
13603
+ }
13604
+ },
13566
13605
 
13567
- var remove_markers_and_menus = function() {
13568
- $('.scrivito_editing_marker').remove();
13569
- remove_menus();
13570
- };
13606
+ open: function(obj_id) {
13607
+ var title = scrivito.i18n.translate('resource');
13571
13608
 
13572
- var remove_menus = function() {
13573
- fade_out_and_remove_menus($('.scrivito_editing_marker_menu'));
13574
- _.each($(dom_elements_with_menus), function(element) {
13575
- element.removeData('scrivito-private-menu-commands');
13576
- });
13577
- dom_elements_with_menus = [];
13578
- dom_elements_with_marker = [];
13579
- };
13580
- }());
13609
+ var obj = scrivito.obj.create_instance({
13610
+ id: obj_id
13611
+ });
13612
+ var fetch_markup = function() {
13613
+ return obj.fetch_details_markup();
13614
+ };
13581
13615
 
13582
- $(window).on('resize', function() {
13583
- scrivito.inplace_menus.refresh_positions();
13584
- });
13616
+ return scrivito.details_dialog.open(title, fetch_markup, '&#xf03d;');
13617
+ },
13585
13618
 
13586
- $(window).on('load', function() {
13587
- scrivito.inplace_menus.refresh_positions();
13588
- });
13619
+ open_and_redirect_on_close: function(obj_id, redirect_to) {
13620
+ scrivito.resource_dialog.open(obj_id).done(function() {
13621
+ return scrivito.redirect_to(redirect_to);
13622
+ });
13623
+ }
13624
+ }
13625
+ });
13626
+ }());
13589
13627
  (function() {
13590
13628
  $.extend(scrivito, {
13591
13629
  add_subpage_command: function(child_list_element) {
@@ -13631,11 +13669,13 @@ $(window).on('load', function() {
13631
13669
 
13632
13670
  execute: function() {
13633
13671
  var selection = widget_field_element.fetch_widget_class_selection();
13634
- return scrivito.choose_obj_class_dialog(selection, 'add_widget').then(function(obj_class) {
13672
+ var choose_widget_obj_class = scrivito.choose_obj_class_dialog(selection, 'add_widget');
13673
+ return choose_widget_obj_class.then(function(obj_class) {
13635
13674
  return scrivito.with_saving_overlay(
13636
13675
  widget_field_element.create_widget(obj_class, widget_element).then(function(widget) {
13637
13676
  return widget.fetch_show_markup().then(function(widget_markup) {
13638
- var dom_element = widget_field_element.append_widget_markup(widget_markup);
13677
+ var dom_element = widget_field_element
13678
+ .append_widget_markup(widget_markup, widget_element);
13639
13679
  scrivito.ensure_fully_visible_within_window(dom_element);
13640
13680
  scrivito.widget_sorting.update_placeholder(widget_field_element);
13641
13681
  });
@@ -13713,10 +13753,11 @@ $(window).on('load', function() {
13713
13753
  var copy_widget = widget_field_element.copy_widget(obj_id, widget_id, widget_element);
13714
13754
  return scrivito.with_saving_overlay(copy_widget.then(function(widget) {
13715
13755
  return widget.fetch_show_markup().then(function(widget_markup) {
13716
- var dom_element = widget_field_element.append_widget_markup(widget_markup);
13756
+ var dom_element = widget_field_element
13757
+ .append_widget_markup(widget_markup, widget_element);
13717
13758
  scrivito.ensure_fully_visible_within_window(dom_element);
13718
13759
  scrivito.widget_sorting.update_placeholder(widget_field_element);
13719
- scrivito.inplace_menus.refresh();
13760
+ scrivito.inplace_marker.refresh();
13720
13761
  });
13721
13762
  }));
13722
13763
  }
@@ -13755,6 +13796,10 @@ $(window).on('load', function() {
13755
13796
  confirm_button_color: 'red'
13756
13797
  }).then(function() {
13757
13798
  return scrivito.with_saving_overlay(obj.destroy().then(function() {
13799
+ if (scrivito.obj_clipboard.is_present() &&
13800
+ scrivito.obj_clipboard.obj().id() === obj.id()) {
13801
+ scrivito.obj_clipboard.clear();
13802
+ }
13758
13803
  return scrivito.redirect_to('/');
13759
13804
  }));
13760
13805
  });
@@ -13788,13 +13833,18 @@ $(window).on('load', function() {
13788
13833
  widget_element.dom_element().remove();
13789
13834
 
13790
13835
  if (widget_field_element.widget_elements().length === 0) {
13791
- scrivito.inplace_menus.refresh();
13836
+ scrivito.inplace_marker.refresh();
13792
13837
  }
13793
13838
 
13794
13839
  scrivito.widget_sorting.update_placeholder(widget_field_element);
13795
13840
 
13796
13841
  return widget_field_element.save().then(function() {
13797
- return widget.destroy();
13842
+ return widget.destroy().then(function() {
13843
+ if (scrivito.widget_clipboard.is_present() &&
13844
+ scrivito.widget_clipboard.widget().id() === widget.id()) {
13845
+ scrivito.widget_clipboard.clear();
13846
+ }
13847
+ });
13798
13848
  });
13799
13849
  });
13800
13850
  }
@@ -14013,7 +14063,6 @@ $(window).on('load', function() {
14013
14063
 
14014
14064
  execute: function() {
14015
14065
  scrivito.obj_clipboard.save_obj(obj);
14016
- scrivito.inplace_menus.refresh();
14017
14066
  }
14018
14067
  });
14019
14068
  }
@@ -14033,7 +14082,6 @@ $(window).on('load', function() {
14033
14082
 
14034
14083
  execute: function() {
14035
14084
  scrivito.widget_clipboard.save_widget(widget_element.widget());
14036
- scrivito.inplace_menus.refresh();
14037
14085
  }
14038
14086
  });
14039
14087
  }
@@ -14081,8 +14129,14 @@ $(window).on('load', function() {
14081
14129
  icon: '&#xf030;',
14082
14130
 
14083
14131
  present: function() {
14084
- return widget_element.has_details_view() &&
14085
- (scrivito.editing_context.is_editing_mode() || widget_element.widget().is_modified());
14132
+ return scrivito.editing_context.is_editing_mode() ||
14133
+ widget_element.widget().is_modified();
14134
+ },
14135
+
14136
+ disabled: function() {
14137
+ if (!widget_element.has_details_view()) {
14138
+ return scrivito.i18n.translate('commands.widget_details.no_details_view');
14139
+ }
14086
14140
  },
14087
14141
 
14088
14142
  execute: function() {
@@ -14105,41 +14159,34 @@ $(window).on('load', function() {
14105
14159
  $.extend(scrivito, {
14106
14160
  widget_menus: {
14107
14161
  init: function() {
14108
- scrivito.inplace_menus.define(function(menu) {
14162
+ scrivito.inplace_marker.define(function(inplace_marker) {
14109
14163
  if (scrivito.editing_context.selected_workspace.is_editable()) {
14110
14164
  _.each(scrivito.widget_field_element.all(), function(widget_field_element) {
14111
- var widget_field_dom_element = widget_field_element.dom_element();
14112
- _.each([
14165
+ widget_field_element.set_menu([
14113
14166
  scrivito.add_widget_command(widget_field_element),
14114
14167
  scrivito.copy_widget_from_clipboard_command(widget_field_element)
14115
- ], function(command) {
14116
- menu.add_item(widget_field_dom_element, command);
14117
- });
14168
+ ]);
14169
+
14170
+ if (scrivito.editing_context.is_editing_mode() &&
14171
+ widget_field_element.widget_elements().length === 0) {
14172
+ inplace_marker.activate_for(widget_field_element);
14173
+ }
14118
14174
 
14119
14175
  _.each(widget_field_element.widget_elements(), function(widget_element) {
14120
- var widget_dom_element = widget_element.dom_element();
14121
- _.each([
14176
+ widget_element.set_menu([
14122
14177
  scrivito.add_widget_command(widget_field_element, widget_element),
14123
14178
  scrivito.widget_details_command(widget_element),
14124
14179
  scrivito.save_widget_to_clipboard_command(widget_element),
14125
14180
  scrivito.copy_widget_from_clipboard_command(widget_field_element, widget_element),
14126
14181
  scrivito.delete_widget_command(widget_field_element, widget_element)
14127
- ], function(command) {
14128
- menu.add_item(widget_dom_element, command);
14129
- });
14130
-
14131
- var description = widget_element.widget().widget_class_name();
14132
- menu.set_description(widget_dom_element, description);
14133
-
14134
- if (widget_element.has_details_view() &&
14135
- scrivito.editing_context.is_comparing_mode()) {
14136
- var options = menu_options(widget_element);
14137
- if (options) {
14138
- var tooltip = scrivito.i18n.translate('widget_menus.' + options.key);
14139
- menu.set_tooltip(widget_dom_element, tooltip);
14140
- menu.set_icon(widget_dom_element, options.icon);
14141
- menu.set_css_classes(widget_dom_element, options.css_class);
14142
- }
14182
+ ]);
14183
+
14184
+ var modification = widget_element.widget().modification() ||
14185
+ widget_element.widget().container_modification();
14186
+ if (scrivito.editing_context.is_editing_mode() ||
14187
+ scrivito.editing_context.is_comparing_mode() && !!modification) {
14188
+ inplace_marker.activate_for(widget_element,
14189
+ inplace_marker_options(widget_element));
14143
14190
  }
14144
14191
  });
14145
14192
  });
@@ -14149,69 +14196,81 @@ $(window).on('load', function() {
14149
14196
  }
14150
14197
  });
14151
14198
 
14152
- var menu_options = function(widget_element) {
14153
- var modification = widget_element.widget().modification();
14154
- var container_modification = widget_element.widget().container_modification();
14155
-
14156
- var icon;
14157
- switch (modification) {
14158
- case 'new':
14159
- return {icon: '\uf022', key: 'widget_is_new'};
14160
- case 'deleted':
14161
- return {icon: '\uf018', key: 'widget_is_deleted'};
14162
- case 'edited':
14163
- icon = '\uf035';
14164
- switch (container_modification) {
14165
- case 'new':
14166
- return {
14167
- icon: icon,
14168
- key: 'widget_is_edited_and_dragged_here',
14169
- css_class: 'scrivito_widget_moved_icon'
14170
- };
14171
- case 'deleted':
14172
- return {
14173
- icon: icon,
14174
- key: 'widget_is_edited_and_dragged_away',
14175
- css_class: 'scrivito_widget_moved_icon'
14176
- };
14177
- default:
14178
- return {icon: icon, key: 'widget_is_edited'};
14179
- }
14180
- break;
14181
- default:
14182
- icon = '\uf03c';
14183
- switch (container_modification) {
14184
- case 'new':
14185
- return {icon: icon, key: 'widget_is_dragged_here'};
14186
- case 'deleted':
14187
- return {icon: icon, key: 'widget_is_dragged_away'};
14188
- }
14199
+ var inplace_marker_options = function(widget_element) {
14200
+ var options = {};
14201
+
14202
+ if (scrivito.editing_context.is_comparing_mode()) {
14203
+ var tooltip_translation_key;
14204
+ var modification = widget_element.widget().modification();
14205
+ var container_modification = widget_element.widget().container_modification();
14206
+
14207
+ switch (modification) {
14208
+ case 'new':
14209
+ tooltip_translation_key = 'widget_is_new';
14210
+ options.icon = '\uf022';
14211
+ break;
14212
+ case 'deleted':
14213
+ tooltip_translation_key = 'widget_is_deleted';
14214
+ options.icon = '\uf018';
14215
+ break;
14216
+ case 'edited':
14217
+ options.icon = '\uf035';
14218
+ switch (container_modification) {
14219
+ case 'new':
14220
+ tooltip_translation_key = 'widget_is_edited_and_dragged_here';
14221
+ options.css_classes = 'scrivito_widget_moved_icon';
14222
+ break;
14223
+ case 'deleted':
14224
+ tooltip_translation_key = 'widget_is_edited_and_dragged_away';
14225
+ options.css_classes = 'scrivito_widget_moved_icon';
14226
+ break;
14227
+ default:
14228
+ tooltip_translation_key = 'widget_is_edited';
14229
+ }
14230
+ break;
14231
+ default:
14232
+ options.icon = '\uf03c';
14233
+ switch (container_modification) {
14234
+ case 'new':
14235
+ tooltip_translation_key = 'widget_is_dragged_here';
14236
+ break;
14237
+ case 'deleted':
14238
+ tooltip_translation_key = 'widget_is_dragged_away';
14239
+ break;
14240
+ }
14241
+ }
14242
+
14243
+ if (tooltip_translation_key) {
14244
+ options.tooltip = scrivito.i18n.translate('widget_menus.' + tooltip_translation_key);
14245
+ }
14189
14246
  }
14247
+
14248
+ options.description = widget_element.widget().description_for_editor();
14249
+
14250
+ return options;
14190
14251
  };
14191
14252
  }());
14192
14253
  (function() {
14193
14254
  $.extend(scrivito, {
14194
14255
  widget_reloading: {
14195
14256
  init: function() {
14196
- activate_for_all_beneath($('body'));
14257
+ scrivito.on('content', function(dom_element) {
14258
+ if (scrivito.in_editable_view()) {
14259
+ var jquery_object = $(dom_element);
14260
+
14261
+ if (jquery_object.attr('data-scrivito-private-widget-id')) {
14262
+ activate_for(jquery_object);
14263
+ }
14197
14264
 
14198
- scrivito.on('new_content', function(dom_element) {
14199
- var jquery_object = $(dom_element);
14200
- if (jquery_object.attr('data-scrivito-private-widget-id')) {
14201
- activate_for(jquery_object);
14265
+ _.each(jquery_object.find('[data-scrivito-private-widget-id]'), function(dom_element) {
14266
+ activate_for($(dom_element));
14267
+ });
14202
14268
  }
14203
- activate_for_all_beneath(jquery_object);
14204
14269
  });
14205
14270
  }
14206
14271
  }
14207
14272
  });
14208
14273
 
14209
- var activate_for_all_beneath = function(jquery_object) {
14210
- _.each(jquery_object.find('[data-scrivito-private-widget-id]'), function(dom_element) {
14211
- activate_for($(dom_element));
14212
- });
14213
- };
14214
-
14215
14274
  var activate_for = function(jquery_object) {
14216
14275
  jquery_object.on('scrivito_reload', function() {
14217
14276
  var widget_element = scrivito.cms_element.from_dom_element(jquery_object);
@@ -14232,15 +14291,21 @@ $(window).on('load', function() {
14232
14291
  $.extend(scrivito, {
14233
14292
  widget_sorting: {
14234
14293
  init: function() {
14235
- scrivito.gui.on('editing', create);
14236
- scrivito.gui.on('new_content', create);
14294
+ scrivito.on('load', function() {
14295
+ if (scrivito.in_editable_view()) {
14296
+ create();
14297
+ }
14298
+ });
14299
+ scrivito.on('content', function() {
14300
+ create();
14301
+ });
14237
14302
  },
14238
14303
 
14239
14304
  start: function(event, ui) {
14240
14305
  $('body').addClass('scrivito_widget_dragging_active');
14241
14306
 
14242
14307
  var marker = ui.item.find('.scrivito_editing_marker');
14243
- scrivito.inplace_menus.close_all_menus();
14308
+ scrivito.menus.close_all();
14244
14309
 
14245
14310
  var widget_element = scrivito.cms_element.from_dom_element(ui.item);
14246
14311
  var widget_class_name = widget_element.widget().widget_class_name();
@@ -14260,7 +14325,7 @@ $(window).on('load', function() {
14260
14325
  stop: function() {
14261
14326
  $('body').removeClass('scrivito_widget_dragging_active');
14262
14327
 
14263
- scrivito.inplace_menus.refresh();
14328
+ scrivito.inplace_marker.refresh();
14264
14329
 
14265
14330
  _.each(widget_field_dom_elements, function(dom_element) {
14266
14331
  dom_element.removeClass('scrivito_widget_drop_allowed');
@@ -14352,22 +14417,20 @@ $(window).on('load', function() {
14352
14417
  $.extend(scrivito, {
14353
14418
  child_list_menus: {
14354
14419
  init: function() {
14355
- scrivito.inplace_menus.define(function(menu) {
14420
+ scrivito.inplace_marker.define(function(inplace_marker) {
14356
14421
  if (scrivito.editing_context.visible_workspace.is_editable() &&
14357
14422
  scrivito.editing_context.is_editing_mode()) {
14358
14423
  _.each(scrivito.child_list_element.all(), function(child_list_element) {
14359
- var dom_element = child_list_element.dom_element();
14360
- var description = child_list_element.obj().description_for_editor();
14361
- menu.set_description(dom_element,
14362
- scrivito.i18n.translate('child_list_menu.description', description));
14363
- _.each([
14424
+ child_list_element.set_menu([
14364
14425
  scrivito.add_subpage_command(child_list_element),
14365
14426
  scrivito.copy_page_from_clipboard_command(child_list_element),
14366
14427
  scrivito.move_page_from_clipboard_command(child_list_element),
14367
14428
  scrivito.sort_items_command(child_list_element)
14368
- ], function(command) {
14369
- menu.add_item(dom_element, command);
14370
- });
14429
+ ]);
14430
+
14431
+ var description = scrivito.i18n.translate('child_list_menu.description',
14432
+ child_list_element.obj().description_for_editor());
14433
+ inplace_marker.activate_for(child_list_element, {description: description});
14371
14434
  });
14372
14435
  }
14373
14436
  });
@@ -14412,9 +14475,11 @@ $(window).on('load', function() {
14412
14475
  $.extend(scrivito, {
14413
14476
  image_upload: {
14414
14477
  init: function() {
14415
- scrivito.on('editing', function() {
14416
- activate_for_field_type('linklist');
14417
- activate_for_field_type('reference');
14478
+ scrivito.on('load', function() {
14479
+ if (scrivito.in_editable_view()) {
14480
+ activate_for_field_type('linklist');
14481
+ activate_for_field_type('reference');
14482
+ }
14418
14483
  });
14419
14484
 
14420
14485
  // Disable DnD for all elements by default to prevent the user
@@ -14746,6 +14811,8 @@ $(window).on('load', function() {
14746
14811
 
14747
14812
 
14748
14813
 
14814
+
14815
+
14749
14816
 
14750
14817
 
14751
14818
 
@@ -74,6 +74,8 @@ module AttributeContent
74
74
  end
75
75
 
76
76
  def modification_for_attribute(attribute_name, revision=Workspace.current.base_revision)
77
+ return Modification::UNMODIFIED unless revision
78
+
77
79
  if new?(revision)
78
80
  Modification::NEW
79
81
  elsif deleted?(revision)
@@ -470,15 +470,12 @@ module Scrivito
470
470
  end
471
471
 
472
472
  # This should be a SET, because it's faster in this particular case.
473
- OLD_INTERNAL_KEYS = Set.new(%w[
473
+ INTERNAL_KEYS = Set.new(%w[
474
474
  body
475
- id
476
- last_changed
477
- name
478
- obj_class_name
479
- path
480
- permalink
481
- text_links
475
+ _id
476
+ _last_changed
477
+ _path
478
+ _permalink
482
479
  title
483
480
  ])
484
481
 
@@ -487,11 +484,8 @@ module Scrivito
487
484
  # @api public
488
485
  def [](key)
489
486
  key = key.to_s
490
- if OLD_INTERNAL_KEYS.include?(key)
491
- send(key)
492
- elsif key.start_with?('_') && OLD_INTERNAL_KEYS.include?(internal_key = key[1..-1])
493
- # For backwards compatibility reasons
494
- send(internal_key)
487
+ if INTERNAL_KEYS.include?(key)
488
+ read_attribute(key)
495
489
  else
496
490
  super
497
491
  end
@@ -528,6 +522,8 @@ module Scrivito
528
522
  end
529
523
 
530
524
  def new?(revision=Workspace.current.base_revision)
525
+ return false unless revision
526
+
531
527
  if read_attribute('_modification') != 'deleted'
532
528
  cms_data_for_revision(revision).nil?
533
529
  else
@@ -536,12 +532,16 @@ module Scrivito
536
532
  end
537
533
 
538
534
  def deleted?(revision=Workspace.current.base_revision)
535
+ return false unless revision
536
+
539
537
  if read_attribute('_modification') == 'deleted'
540
538
  cms_data_for_revision(revision).present?
541
539
  end
542
540
  end
543
541
 
544
542
  def modification(revision=Workspace.current.base_revision)
543
+ return Modification::UNMODIFIED unless revision
544
+
545
545
  obj_data_from_revision = cms_data_for_revision(revision)
546
546
 
547
547
  if deleted?(revision)
@@ -608,7 +608,7 @@ module Scrivito
608
608
  if binary?
609
609
  nil
610
610
  else
611
- StringTagging.tag_as_html(read_attribute('body'))
611
+ read_attribute('body')
612
612
  end
613
613
  end
614
614
 
@@ -160,14 +160,18 @@ class BasicWidget
160
160
  end
161
161
 
162
162
  def new?(revision=Workspace.current.base_revision)
163
+ return false unless revision
163
164
  obj.new?(revision) || cms_data_for_revision(revision).nil?
164
165
  end
165
166
 
166
167
  def deleted?(revision=Workspace.current.base_revision)
168
+ return false unless revision
167
169
  obj.deleted?(revision)
168
170
  end
169
171
 
170
172
  def modification(revision=Workspace.current.base_revision)
173
+ return Modification::UNMODIFIED unless revision
174
+
171
175
  if deleted?(revision)
172
176
  Modification::DELETED
173
177
  elsif new?(revision)
@@ -233,6 +237,13 @@ class BasicWidget
233
237
  update_data(update_proc)
234
238
  end
235
239
 
240
+ # This method determines the description that is shown in the widget tooltips.
241
+ # It can be overriden by a custom value.
242
+ # @api public
243
+ def description_for_editor
244
+ obj_class_name
245
+ end
246
+
236
247
  private
237
248
 
238
249
  def data_from_cms
@@ -6,9 +6,17 @@ class ClientConfig < Struct.new(:obj, :editing_context, :lookup_context)
6
6
  config[:editing_context] = editing_context_config
7
7
  config[:i18n] = i18n_config
8
8
  config[:obj] = obj_config
9
+ config[:open_resource_dialog] = @resource_dialog_config
9
10
  config.to_json
10
11
  end
11
12
 
13
+ def open_resource_dialog(obj_id, redirect_to)
14
+ @resource_dialog_config = {
15
+ obj_id: obj_id,
16
+ redirect_to: redirect_to,
17
+ }
18
+ end
19
+
12
20
  private
13
21
 
14
22
  def editing_context_config
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrivito_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infopark AG
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-28 00:00:00.000000000 Z
11
+ date: 2014-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails