scrivito_sdk 0.70.2 → 0.71.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scrivito/binary_redirect_controller.rb +12 -9
  3. data/app/controllers/scrivito/blobs_controller.rb +1 -2
  4. data/app/controllers/scrivito/objs_controller.rb +16 -0
  5. data/app/helpers/scrivito_helper.rb +6 -2
  6. data/app/views/cms/index.html.erb +1 -1
  7. data/app/views/scrivito/blobs/activate_upload.json.jbuilder +1 -0
  8. data/app/views/scrivito/objs/obj.json.jbuilder +1 -1
  9. data/app/views/scrivito/objs/transfer_modifications.json.jbuilder +6 -0
  10. data/config/ca-bundle.crt +128 -81
  11. data/config/precedence_routes.rb +1 -0
  12. data/lib/assets/images/scrivito/source_invalid.png +0 -0
  13. data/lib/assets/images/scrivito/source_too_large.png +0 -0
  14. data/lib/assets/images/scrivito/source_type_invalid.png +0 -0
  15. data/lib/assets/javascripts/scrivito_ui.js +1043 -645
  16. data/lib/assets/stylesheets/scrivito.css +1 -1
  17. data/lib/assets/stylesheets/scrivito_ui.css +1 -1
  18. data/lib/generators/scrivito/page/templates/thumbnail.html.erb +1 -1
  19. data/lib/scrivito/attribute_content.rb +54 -17
  20. data/lib/scrivito/attribute_deserializer.rb +1 -1
  21. data/lib/scrivito/attribute_serializer.rb +6 -4
  22. data/lib/scrivito/backend/obj_query.rb +11 -2
  23. data/lib/scrivito/base_widget_tag.rb +77 -0
  24. data/lib/scrivito/basic_obj.rb +67 -67
  25. data/lib/scrivito/basic_widget.rb +11 -6
  26. data/lib/scrivito/binary.rb +50 -5
  27. data/lib/scrivito/binary_param_verifier.rb +4 -5
  28. data/lib/scrivito/client_attribute_serializer.rb +3 -3
  29. data/lib/scrivito/cms_backend.rb +12 -0
  30. data/lib/scrivito/cms_field_tag.rb +8 -6
  31. data/lib/scrivito/cms_rest_api.rb +28 -8
  32. data/lib/scrivito/cms_rest_api/rate_limit.rb +1 -0
  33. data/lib/scrivito/cms_routing.rb +7 -1
  34. data/lib/scrivito/configuration.rb +1 -1
  35. data/lib/scrivito/controller_actions.rb +38 -35
  36. data/lib/scrivito/date_attribute.rb +3 -7
  37. data/lib/scrivito/editing_context.rb +3 -3
  38. data/lib/scrivito/editing_context_middleware.rb +3 -3
  39. data/lib/scrivito/errored_widget_tag.rb +34 -0
  40. data/lib/scrivito/errors.rb +6 -0
  41. data/lib/scrivito/future_binary.rb +23 -0
  42. data/lib/scrivito/link_parser.rb +12 -1
  43. data/lib/scrivito/membership_collection.rb +8 -8
  44. data/lib/scrivito/obj_collection.rb +2 -2
  45. data/lib/scrivito/obj_create_params_parser.rb +2 -2
  46. data/lib/scrivito/obj_params_parser.rb +5 -1
  47. data/lib/scrivito/obj_search_builder.rb +2 -12
  48. data/lib/scrivito/obj_search_enumerator.rb +48 -43
  49. data/lib/scrivito/page_config.rb +2 -1
  50. data/lib/scrivito/type_computer.rb +6 -6
  51. data/lib/scrivito/user.rb +9 -10
  52. data/lib/scrivito/user_definition.rb +2 -2
  53. data/lib/scrivito/warning.rb +17 -0
  54. data/lib/scrivito/widget_garbage_collection.rb +1 -1
  55. data/lib/scrivito/widget_tag.rb +28 -53
  56. data/lib/scrivito/workspace.rb +32 -23
  57. metadata +10 -6
  58. data/app/views/scrivito/objs/copy_widget.html.erb +0 -1
  59. data/app/views/scrivito/objs/create_widget.html.erb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5de0afc60411add6269bc489d22afd5688e32bde
4
- data.tar.gz: 000332471e6c539c7676ea94772e56f05e1ec6ff
3
+ metadata.gz: c611fa81c9f2b51a64db9140e435110b44b03a11
4
+ data.tar.gz: 9743dcf7f7ba3ecc356ecb6ed87430b76ca3a7e2
5
5
  SHA512:
6
- metadata.gz: d1cf605fa35b457c57822065292d577ad85aeafc1943d7611ae5d6d9c1e504b94b1df0baf554bdb397139d5bc96497c5547dc2e3e46bef8e207dfc45825570f5
7
- data.tar.gz: ee692d8e479eb55db2dd9fe83df15b0f1c57259f70f451bc795efa5db6fdadf3f55575493c1e9653fce53e09f7e24db3b1f3c4d3d1301c09513769dbd73eac18
6
+ metadata.gz: 0d58ad5bfa71db40a3ca1048429cbad1165c631db9043c1b872662df64b6fc3435ad78524b6fb0bda00fcf1cf74989ca4aa0bbd5271f03be319d47e31adcc7c8
7
+ data.tar.gz: 5ac445953e2b5f2f40b3b66bbcb9f14f9b0ed25fedbdeab8e9fd876e7c9ab66eefb23ed5362dfb2c7d330b454608d0f85d8063dd3b9a46e1863a1760df2a2681
@@ -1,19 +1,22 @@
1
1
  module Scrivito
2
- class BinaryRedirectController < ApplicationController
2
+ class BinaryRedirectController < ActionController::Base
3
3
  def to_binary
4
4
  binary = BinaryParamVerifier.verify(params[:encrypted_params])
5
5
  redirect_to BinaryRewrite.call(request, binary.url)
6
6
  rescue BinaryParamVerifier::InvalidSignature
7
7
  head :precondition_failed
8
- rescue TransformationSourceError => e
9
- case e.code
10
- when 'binary.unprocessable.image.transform.source.type_invalid'
11
- redirect_to view_context.image_path('scrivito/source_type_invalid.png')
12
- when 'binary.unprocessable.image.transform.source.too_large'
13
- redirect_to view_context.image_path('scrivito/source_too_large.png')
14
- else
15
- redirect_to view_context.image_path('scrivito/source_invalid.png')
8
+ rescue TransformationSourceError => error
9
+ case error.code
10
+ when /transform.source.type_invalid/ then render_error('source_type_invalid')
11
+ when /transform.source.too_large/ then render_error('source_too_large')
12
+ else render_error('source_invalid')
16
13
  end
17
14
  end
15
+
16
+ private
17
+
18
+ def render_error(error_name)
19
+ redirect_to view_context.image_path("scrivito/#{error_name}.png")
20
+ end
18
21
  end
19
22
  end
@@ -6,8 +6,7 @@ class BlobsController < WebserviceController
6
6
  end
7
7
 
8
8
  def activate_upload
9
- CmsRestApi.activate_upload(params.slice(:upload, :obj_id, :filename, :content_type))
10
- render_empty_json
9
+ @blob = CmsRestApi.activate_upload(params.slice(:upload, :obj_id, :filename, :content_type))
11
10
  end
12
11
  end
13
12
 
@@ -104,6 +104,22 @@ module Scrivito
104
104
  render :obj
105
105
  end
106
106
 
107
+ def transfer_modifications
108
+ in_selected_workspace do
109
+ begin
110
+ obj = Obj.find_including_deleted(params[:id])
111
+ workspace = Workspace.find(params[:workspace_id])
112
+ authorize_workspace_access(:write, workspace) do
113
+ obj.transfer_modifications_to(workspace)
114
+ end
115
+ rescue TransferModificationsModifiedError
116
+ @error_reason = :modified
117
+ rescue TransferModificationsConflictError
118
+ @error_reason = :conflict
119
+ end
120
+ end
121
+ end
122
+
107
123
  def duplicate
108
124
  @obj = copy_obj(current_obj, current_obj.parent_path)
109
125
  render :obj
@@ -33,6 +33,10 @@ module ScrivitoHelper
33
33
  # @param html_options [Hash] HTML options to be passed to +content_tag+.
34
34
  # @param editing_options [Hash] Additional editing options for widgets (e.g. +:inner_tag+)
35
35
  # @option editing_options [Symbol] :inner_tag Wraps widgets inside specified tag
36
+ # @option editing_options [String, Symbol] :editor Name of the JavaScript editor to be used for
37
+ # this field. Normally, the name of the editor to be used for a field is determined by the
38
+ # +scrivito.select_editor+ JavaScript API. The option +:editor+ should only be used if setting
39
+ # the editor via the JavaScript API is not feasible.
36
40
  # @param block [Proc] Optional block to render inner HTML. If none given the value of attribute
37
41
  # will be rendered instead. +block+ is not allowed for fields of type +widget+.
38
42
  #
@@ -63,7 +67,7 @@ module ScrivitoHelper
63
67
  def scrivito_tag(tag_name, obj_or_widget, field_name,
64
68
  html_options = {}, editing_options = {}, &block)
65
69
  Scrivito::CmsFieldTag.new(self, tag_name, obj_or_widget, editing_options.merge(
66
- widget_template_name: @scrivito_default_widget_template || :show,
70
+ widget_render_context: @scrivito_widget_render_context,
67
71
  field_name: field_name.to_s
68
72
  )).render(html_options, &block)
69
73
  end
@@ -196,7 +200,7 @@ module ScrivitoHelper
196
200
  when String then h(value)
197
201
  when Time then h(l(value))
198
202
  when Scrivito::BasicWidget
199
- render(template: value.to_show_view_path, locals: {widget: value})
203
+ render(template: value.show_view_path, locals: {widget: value})
200
204
  else value
201
205
  end
202
206
  end
@@ -1,3 +1,3 @@
1
1
  <% if scrivito_user %>
2
- Missing Ruby model class for "<%= @obj.obj_class_name %>".
2
+ Missing Ruby model class for "<%= @obj.obj_class %>".
3
3
  <% end %>
@@ -1 +1 @@
1
- json.extract! @obj, :id, :obj_class_name
1
+ json.extract! @obj, :id, :obj_class
@@ -0,0 +1,6 @@
1
+ if @error_reason
2
+ json.status :error
3
+ json.reason @error_reason
4
+ else
5
+ json.status :success
6
+ end
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## Bundle of CA Root Certificates
3
3
  ##
4
- ## Certificate data from Mozilla as of: Mon Nov 2 23:30:50 2015
4
+ ## Certificate data from Mozilla as of: Tue Oct 13 08:13:13 2015
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
@@ -14,7 +14,7 @@
14
14
  ## Just configure this file as the SSLCACertificateFile.
15
15
  ##
16
16
  ## Conversion done with mk-ca-bundle.pl version 1.25.
17
- ## SHA1: 6d7d2f0a4fae587e7431be191a081ac1257d300a
17
+ ## SHA1: ed3c0bbfb7912bcc00cd2033b0cb85c98d10559c
18
18
  ##
19
19
 
20
20
 
@@ -1527,6 +1527,29 @@ vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1527
1527
  oKfN5XozNmr6mis=
1528
1528
  -----END CERTIFICATE-----
1529
1529
 
1530
+ TURKTRUST Certificate Services Provider Root 1
1531
+ ==============================================
1532
+ -----BEGIN CERTIFICATE-----
1533
+ MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1534
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
1535
+ MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
1536
+ acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
1537
+ MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
1538
+ U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
1539
+ TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
1540
+ aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
1541
+ AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
1542
+ yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
1543
+ Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
1544
+ 8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
1545
+ W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
1546
+ BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
1547
+ sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
1548
+ q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
1549
+ B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
1550
+ nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
1551
+ -----END CERTIFICATE-----
1552
+
1530
1553
  TURKTRUST Certificate Services Provider Root 2
1531
1554
  ==============================================
1532
1555
  -----BEGIN CERTIFICATE-----
@@ -2042,6 +2065,33 @@ RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
2042
2065
  Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
2043
2066
  -----END CERTIFICATE-----
2044
2067
 
2068
+ TC TrustCenter Class 2 CA II
2069
+ ============================
2070
+ -----BEGIN CERTIFICATE-----
2071
+ MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2072
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2073
+ IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
2074
+ MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2075
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
2076
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2077
+ AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
2078
+ IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
2079
+ xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
2080
+ Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
2081
+ SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
2082
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
2083
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2084
+ Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2085
+ cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2086
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2087
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
2088
+ dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
2089
+ KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
2090
+ TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
2091
+ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
2092
+ vQ==
2093
+ -----END CERTIFICATE-----
2094
+
2045
2095
  TC TrustCenter Class 3 CA II
2046
2096
  ============================
2047
2097
  -----BEGIN CERTIFICATE-----
@@ -2069,6 +2119,29 @@ IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
2069
2119
  5A==
2070
2120
  -----END CERTIFICATE-----
2071
2121
 
2122
+ TC TrustCenter Universal CA I
2123
+ =============================
2124
+ -----BEGIN CERTIFICATE-----
2125
+ MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
2126
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2127
+ IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
2128
+ MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
2129
+ VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
2130
+ JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
2131
+ ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
2132
+ qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
2133
+ xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
2134
+ ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
2135
+ gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
2136
+ BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2137
+ AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
2138
+ 1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
2139
+ vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
2140
+ ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
2141
+ ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
2142
+ 7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
2143
+ -----END CERTIFICATE-----
2144
+
2072
2145
  Deutsche Telekom Root CA 2
2073
2146
  ==========================
2074
2147
  -----BEGIN CERTIFICATE-----
@@ -2236,6 +2309,26 @@ fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
2236
2309
  wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
2237
2310
  -----END CERTIFICATE-----
2238
2311
 
2312
+ Buypass Class 3 CA 1
2313
+ ====================
2314
+ -----BEGIN CERTIFICATE-----
2315
+ MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2316
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
2317
+ MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2318
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
2319
+ hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
2320
+ ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
2321
+ n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
2322
+ AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
2323
+ 1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
2324
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
2325
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
2326
+ pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
2327
+ EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
2328
+ htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
2329
+ el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
2330
+ -----END CERTIFICATE-----
2331
+
2239
2332
  EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
2240
2333
  ==========================================================================
2241
2334
  -----BEGIN CERTIFICATE-----
@@ -3737,6 +3830,39 @@ UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV
3737
3830
  7+ZtsH8tZ/3zbBt1RqPlShfppNcL
3738
3831
  -----END CERTIFICATE-----
3739
3832
 
3833
+ SG TRUST SERVICES RACINE
3834
+ ========================
3835
+ -----BEGIN CERTIFICATE-----
3836
+ MIIGGTCCBAGgAwIBAgIIPtVRGeZNzn4wDQYJKoZIhvcNAQELBQAwajEhMB8GA1UEAxMYU0cgVFJV
3837
+ U1QgU0VSVklDRVMgUkFDSU5FMRwwGgYDVQQLExMwMDAyIDQzNTI1Mjg5NTAwMDIyMRowGAYDVQQK
3838
+ ExFTRyBUUlVTVCBTRVJWSUNFUzELMAkGA1UEBhMCRlIwHhcNMTAwOTA2MTI1MzQyWhcNMzAwOTA1
3839
+ MTI1MzQyWjBqMSEwHwYDVQQDExhTRyBUUlVTVCBTRVJWSUNFUyBSQUNJTkUxHDAaBgNVBAsTEzAw
3840
+ MDIgNDM1MjUyODk1MDAwMjIxGjAYBgNVBAoTEVNHIFRSVVNUIFNFUlZJQ0VTMQswCQYDVQQGEwJG
3841
+ UjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANqoVgLsfJXwTukK0rcHoyKLULO5Lhk9
3842
+ V9sZqtIr5M5C4myh5F0lHjMdtkXRtPpZilZwyW0IdmlwmubHnAgwE/7m0ZJoYT5MEfJu8rF7V1ZL
3843
+ Cb3cD9lxDOiaN94iEByZXtaxFwfTpDktwhpz/cpLKQfCeSnIyCauLMT8I8hL4oZWDyj9tocbaF85
3844
+ ZEX9aINsdSQePHWZYfrSFPipS7HYfad40hNiZbXWvn5qA7y1svxkMMPQwpk9maTTzdGxxFOHe0wT
3845
+ E2Z/v9VlU2j5XB7ltP82mUWjn2LAfxGCAVTeD2WlOa6dSEyJoxA74OaD9bDaLB56HFwfAKzMq6dg
3846
+ ZLPGxXvHVUZ0PJCBDkqOWZ1UsEixUkw7mO6r2jS3U81J2i/rlb4MVxH2lkwEeVyZ1eXkvm/qR+5R
3847
+ S+8iJq612BGqQ7t4vwt+tN3PdB0lqYljseI0gcSINTjiAg0PE8nVKoIV8IrEQzJW5FMdHay2z32b
3848
+ ll0eZOl0c8RW5BZKUm2SOdPhTQ4/YrnerbUdZbldUv5dCamctKQM2S9FdqXPjmqanqqwEaHrYcbr
3849
+ Px78ZrQSnUZ/MhaJvnFFr5Eh2f2Tv7QCkUL/SR/tixVo3R+OrJvdggWcRGkWZBdWX0EPSk8ED2VQ
3850
+ hpOX7EW/XcIc3M/E2DrmeAXQxVVVqV7+qzohu+VyFPcLAgMBAAGjgcIwgb8wHQYDVR0OBBYEFCkg
3851
+ y/HDD9oGjhOTh/5fYBopu/O2MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUKSDL8cMP2gaO
3852
+ E5OH/l9gGim787YwEQYDVR0gBAowCDAGBgRVHSAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9j
3853
+ cmwuc2d0cnVzdHNlcnZpY2VzLmNvbS9yYWNpbmUtR3JvdXBlU0cvTGF0ZXN0Q1JMMA4GA1UdDwEB
3854
+ /wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEATEZn4ERQ9cW2urJRCiUTHbfHiC4fuStkoMuTiFJZ
3855
+ qmD1zClSF/8E5ze0MRFGfisebKeLPEeaXvSqXZA7RT2fSsmKe47A7j55i5KjyJRKuCgRa6YlX129
3856
+ x8j7g09VMeZc8BN8471/Kiw3N5RJr4QfFCeiWBCPCjk3GhIgQY8Z9qkfGe2yNLKtfTNEi18KB0Py
3857
+ dkVFLa3kjQ4A/QQIqudr+xe9sAhWDjUqcvCz5006Tw3c82ASszhkjNv54SaNL+9O6CRHPjY0imkP
3858
+ KGuLh8a9hSb50+tpIVZgkdb34GLCqHGuLt5mI7VSRqakSDcsfwEWVxH3Jw0O5Q/WkEXhHj8h3NL8
3859
+ FhgTPk1qsiZqQF4leP049KxYejcbmEAEx47J1MRnYbGYrvDNDty5r2WDewoEij9hqvddQYbmxkzC
3860
+ TzpcVuooO6dEz8hKZPVyYC3jQ7hK4HU8MuSqFtcRucFF2ZtmY2blIrc07rrVdC8lZPOBVMt33lfU
3861
+ k+OsBzE6PlwDg1dTx/D+aNglUE0SyObhlY1nqzyTPxcCujjXnvcwpT09RAEzGpqfjtCf8e4wiHPv
3862
+ riQZupdzFcHscQyEZLV77LxpPqRtCRY2yko5isune8YdfucziMm+MG2chZUh6Uc7Bn6B4upG5nBY
3863
+ gOao8p0LadEziVkw82TTC/bOKwn7fRB2LhA=
3864
+ -----END CERTIFICATE-----
3865
+
3740
3866
  ACCVRAIZ1
3741
3867
  =========
3742
3868
  -----BEGIN CERTIFICATE-----
@@ -4551,82 +4677,3 @@ PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
4551
4677
  kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
4552
4678
  ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
4553
4679
  -----END CERTIFICATE-----
4554
-
4555
- TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
4556
- =========================================================
4557
- -----BEGIN CERTIFICATE-----
4558
- MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
4559
- BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
4560
- bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg
4561
- RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw
4562
- ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w
4563
- SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE
4564
- n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp
4565
- ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
4566
- CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537
4567
- jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m
4568
- ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP
4569
- 9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV
4570
- 4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH
4571
- HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
4572
- hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo
4573
- BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
4574
- URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl
4575
- lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
4576
- B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
4577
- -----END CERTIFICATE-----
4578
-
4579
- TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6
4580
- =========================================================
4581
- -----BEGIN CERTIFICATE-----
4582
- MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G
4583
- A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
4584
- acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
4585
- bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5
4586
- MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL
4587
- BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf
4588
- aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm
4589
- aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
4590
- AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a
4591
- 2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED
4592
- wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb
4593
- HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV
4594
- +DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT
4595
- 9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
4596
- 9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R
4597
- fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy
4598
- o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW
4599
- hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1
4600
- O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw==
4601
- -----END CERTIFICATE-----
4602
-
4603
- Certinomis - Root CA
4604
- ====================
4605
- -----BEGIN CERTIFICATE-----
4606
- MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
4607
- Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg
4608
- LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx
4609
- EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD
4610
- ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos
4611
- P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo
4612
- d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap
4613
- z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00
4614
- 8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x
4615
- RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE
4616
- 6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t
4617
- FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV
4618
- PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH
4619
- i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj
4620
- YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I
4621
- 6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF
4622
- AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV
4623
- WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw
4624
- Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX
4625
- lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ
4626
- y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9
4627
- Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng
4628
- DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi
4629
- I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM
4630
- cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr
4631
- hkIGuUE=
4632
- -----END CERTIFICATE-----
@@ -26,6 +26,7 @@ Scrivito::SdkEngine.routes.draw do
26
26
  put :destroy_widget
27
27
  put :revert_widget
28
28
  put :restore_widget
29
+ put :transfer_modifications
29
30
  end
30
31
  end
31
32
 
@@ -26058,8 +26058,18 @@ the specific language governing permissions and limitations under the Apache Lic
26058
26058
  this.ScrivitoHandlebarsTemplates["alert_dialog"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
26059
26059
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
26060
26060
  helpers = helpers || Handlebars.helpers; data = data || {};
26061
- var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
26061
+ var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
26062
26062
 
26063
+ function program1(depth0,data) {
26064
+
26065
+ var buffer = "", stack1;
26066
+ buffer += "\n <div class=\"scrivito_modal_body\">\n ";
26067
+ if (stack1 = helpers.body) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26068
+ else { stack1 = depth0.body; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26069
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26070
+ buffer += "\n </div>\n ";
26071
+ return buffer;
26072
+ }
26063
26073
 
26064
26074
  buffer += "<div class=\"scrivito_alert_dialog scrivito_modal_prompt scrivito_center_dialog scrivito_";
26065
26075
  if (stack1 = helpers.color) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
@@ -26073,7 +26083,10 @@ helpers = helpers || Handlebars.helpers; data = data || {};
26073
26083
  if (stack1 = helpers.message) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26074
26084
  else { stack1 = depth0.message; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26075
26085
  buffer += escapeExpression(stack1)
26076
- + "</h3>\n </div>\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_close\">";
26086
+ + "</h3>\n </div>\n ";
26087
+ stack1 = helpers['if'].call(depth0, depth0.body, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
26088
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26089
+ buffer += "\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_close\">";
26077
26090
  options = {hash:{},data:data};
26078
26091
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "ok", options) : helperMissing.call(depth0, "translate", "ok", options)))
26079
26092
  + "</a>\n </div>\n</div>\n";
@@ -26102,7 +26115,7 @@ helpers = helpers || Handlebars.helpers; data = data || {};
26102
26115
  this.ScrivitoHandlebarsTemplates["changes_dialog/content"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
26103
26116
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
26104
26117
  helpers = helpers || Handlebars.helpers; data = data || {};
26105
- var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
26118
+ var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
26106
26119
 
26107
26120
  function program1(depth0,data) {
26108
26121
 
@@ -26119,45 +26132,45 @@ function program1(depth0,data) {
26119
26132
 
26120
26133
  function program3(depth0,data) {
26121
26134
 
26122
- var buffer = "", stack1, stack2;
26123
- buffer += "\n <table class=\"scrivito_changes_table\">\n ";
26124
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.objs),stack1 == null || stack1 === false ? stack1 : stack1.length), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
26125
- if(stack2 || stack2 === 0) { buffer += stack2; }
26126
- buffer += "\n\n <tbody>\n ";
26127
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.objs),stack1 == null || stack1 === false ? stack1 : stack1.length), {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),data:data});
26128
- if(stack2 || stack2 === 0) { buffer += stack2; }
26129
- buffer += "\n </tbody>\n </table>\n ";
26135
+ var buffer = "", stack1;
26136
+ buffer += "\n <table class=\"scrivito_changes_table\">\n ";
26137
+ stack1 = helpers['if'].call(depth0, depth0.objs, {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
26138
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26139
+ buffer += "\n\n <tbody>\n ";
26140
+ stack1 = helpers['if'].call(depth0, depth0.objs, {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),data:data});
26141
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26142
+ buffer += "\n </tbody>\n </table>\n ";
26130
26143
  return buffer;
26131
26144
  }
26132
26145
  function program4(depth0,data) {
26133
26146
 
26134
26147
  var buffer = "", stack1, options;
26135
- buffer += "\n <thead>\n <tr>\n <th>\n <span data-scrivito-sort-by=\"_modification\">\n ";
26148
+ buffer += "\n <thead>\n <tr>\n <th>\n <span data-scrivito-sort-by=\"_modification\">\n ";
26136
26149
  options = {hash:{},data:data};
26137
26150
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.modification", options) : helperMissing.call(depth0, "translate", "changes_dialog.modification", options)))
26138
- + "\n </span>\n </th>\n <th><span>";
26151
+ + "\n </span>\n </th>\n <th><span>";
26139
26152
  options = {hash:{},data:data};
26140
26153
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.rights", options) : helperMissing.call(depth0, "translate", "changes_dialog.rights", options)))
26141
- + "</span></th>\n <th><span>";
26154
+ + "</span></th>\n <th><span>";
26142
26155
  options = {hash:{},data:data};
26143
26156
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.description_for_editor", options) : helperMissing.call(depth0, "translate", "changes_dialog.description_for_editor", options)))
26144
- + "</span></th>\n <th>\n <span data-scrivito-sort-by=\"_obj_class_name\">\n ";
26157
+ + "</span></th>\n <th>\n <span data-scrivito-sort-by=\"_obj_class\">\n ";
26145
26158
  options = {hash:{},data:data};
26146
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.obj_class_name", options) : helperMissing.call(depth0, "translate", "changes_dialog.obj_class_name", options)))
26147
- + "\n </span>\n </th>\n <th>\n <span data-scrivito-sort-by=\"_last_changed\">\n ";
26159
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.obj_class", options) : helperMissing.call(depth0, "translate", "changes_dialog.obj_class", options)))
26160
+ + "\n </span>\n </th>\n <th>\n <span data-scrivito-sort-by=\"_last_changed\">\n ";
26148
26161
  options = {hash:{},data:data};
26149
26162
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.last_changed", options) : helperMissing.call(depth0, "translate", "changes_dialog.last_changed", options)))
26150
- + "\n </span>\n </th>\n </tr>\n </thead>\n ";
26163
+ + "\n </span>\n </th>\n </tr>\n </thead>\n ";
26151
26164
  return buffer;
26152
26165
  }
26153
26166
 
26154
26167
  function program6(depth0,data) {
26155
26168
 
26156
26169
  var buffer = "", stack1;
26157
- buffer += "\n ";
26170
+ buffer += "\n ";
26158
26171
  stack1 = helpers.each.call(depth0, depth0.objs, {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
26159
26172
  if(stack1 || stack1 === 0) { buffer += stack1; }
26160
- buffer += "\n ";
26173
+ buffer += "\n ";
26161
26174
  return buffer;
26162
26175
  }
26163
26176
  function program7(depth0,data) {
@@ -26170,17 +26183,17 @@ function program7(depth0,data) {
26170
26183
  function program9(depth0,data) {
26171
26184
 
26172
26185
  var buffer = "", stack1, options;
26173
- buffer += "\n <tr>\n <td class=\"scrivito_empty_result\" colspan=\"5\">";
26186
+ buffer += "\n <tr>\n <td class=\"scrivito_empty_result\" colspan=\"5\">";
26174
26187
  options = {hash:{},data:data};
26175
26188
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.empty", options) : helperMissing.call(depth0, "translate", "changes_dialog.empty", options)))
26176
- + "</td>\n </tr>\n ";
26189
+ + "</td>\n </tr>\n ";
26177
26190
  return buffer;
26178
26191
  }
26179
26192
 
26180
26193
  function program11(depth0,data) {
26181
26194
 
26182
26195
 
26183
- return "\n <tr><td colspan=\"5\"><i class=\"scrivito_icon scrivito_spinning\">&#xf023;</i></td></tr>\n ";
26196
+ return "\n <tr><td colspan=\"5\"><i class=\"scrivito_icon scrivito_spinning\">&#xf023;</i></td></tr>\n ";
26184
26197
  }
26185
26198
 
26186
26199
  function program13(depth0,data) {
@@ -26193,20 +26206,36 @@ function program13(depth0,data) {
26193
26206
  return buffer;
26194
26207
  }
26195
26208
 
26196
- buffer += "<div class=\"scrivito_modal_header\">\n <h3>\n <i class=\"scrivito_icon\">&#xf080;</i> ";
26209
+ function program15(depth0,data) {
26210
+
26211
+ var buffer = "", stack1, options;
26212
+ buffer += "\n <a href=\"#\" class=\"scrivito_button scrivito_left scrivito_transfer_changes\">\n ";
26213
+ options = {hash:{},data:data};
26214
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "changes_dialog.open_transfer_dialog", options) : helperMissing.call(depth0, "translate", "changes_dialog.open_transfer_dialog", options)))
26215
+ + "\n </a>\n ";
26216
+ return buffer;
26217
+ }
26218
+
26219
+ buffer += "<div class=\"scrivito_changes_dialog_content scrivito_auto_height\">\n <div class=\"scrivito_modal_header\">\n <h3>\n <i class=\"scrivito_icon\">&#xf080;</i> ";
26197
26220
  if (stack1 = helpers.title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26198
26221
  else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26199
26222
  buffer += escapeExpression(stack1)
26200
- + "\n ";
26201
- stack2 = helpers['if'].call(depth0, ((stack1 = depth0.objs),stack1 == null || stack1 === false ? stack1 : stack1.length), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
26202
- if(stack2 || stack2 === 0) { buffer += stack2; }
26203
- buffer += "\n </h3>\n</div>\n\n<div class=\"scrivito_modal_body scrivito_auto_height\">\n ";
26204
- stack2 = helpers['if'].call(depth0, depth0.is_loaded, {hash:{},inverse:self.program(11, program11, data),fn:self.program(3, program3, data),data:data});
26205
- if(stack2 || stack2 === 0) { buffer += stack2; }
26206
- buffer += "\n\n ";
26207
- stack2 = helpers['if'].call(depth0, depth0.has_more, {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
26208
- if(stack2 || stack2 === 0) { buffer += stack2; }
26209
- buffer += "\n</div>\n";
26223
+ + "\n ";
26224
+ stack1 = helpers['if'].call(depth0, depth0.objs, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
26225
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26226
+ buffer += "\n </h3>\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\">\n ";
26227
+ stack1 = helpers['if'].call(depth0, depth0.is_loaded, {hash:{},inverse:self.program(11, program11, data),fn:self.program(3, program3, data),data:data});
26228
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26229
+ buffer += "\n\n ";
26230
+ stack1 = helpers['if'].call(depth0, depth0.has_more, {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
26231
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26232
+ buffer += "\n </div>\n</div>\n\n<div class=\"scrivito_modal_footer\">\n ";
26233
+ stack1 = helpers['if'].call(depth0, depth0.objs, {hash:{},inverse:self.noop,fn:self.program(15, program15, data),data:data});
26234
+ if(stack1 || stack1 === 0) { buffer += stack1; }
26235
+ buffer += "\n <a href=\"#\" class=\"scrivito_button scrivito_cancel scrivito_green\">";
26236
+ options = {hash:{},data:data};
26237
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "done", options) : helperMissing.call(depth0, "translate", "done", options)))
26238
+ + "</a>\n</div>\n";
26210
26239
  return buffer;
26211
26240
  });
26212
26241
  return this.ScrivitoHandlebarsTemplates["changes_dialog/content"];
@@ -26281,8 +26310,8 @@ function program7(depth0,data) {
26281
26310
  else { stack1 = depth0.description_for_editor; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26282
26311
  buffer += escapeExpression(stack1)
26283
26312
  + "</span>\n <td><span class=\"scrivito_obj_class\">";
26284
- if (stack1 = helpers.obj_class_name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26285
- else { stack1 = depth0.obj_class_name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26313
+ if (stack1 = helpers.obj_class) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26314
+ else { stack1 = depth0.obj_class; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26286
26315
  buffer += escapeExpression(stack1)
26287
26316
  + "</span></td>\n\n <td>\n ";
26288
26317
  stack1 = helpers.unless.call(depth0, depth0.is_deleted, {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
@@ -26326,7 +26355,7 @@ helpers = helpers || Handlebars.helpers; data = data || {};
26326
26355
  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
26327
26356
 
26328
26357
 
26329
- buffer += "<div class=\"scrivito_obj_class_thumbnail scrivito_editing_widget_preview\"\n data-scrivito-private-obj-class-name=\"";
26358
+ buffer += "<div class=\"scrivito_obj_class_thumbnail scrivito_editing_widget_preview\"\n data-scrivito-private-obj-class=\"";
26330
26359
  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26331
26360
  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26332
26361
  buffer += escapeExpression(stack1)
@@ -26551,7 +26580,7 @@ function program1(depth0,data) {
26551
26580
  this.ScrivitoHandlebarsTemplates["editable_workspace_dialog"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
26552
26581
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
26553
26582
  helpers = helpers || Handlebars.helpers; data = data || {};
26554
- var buffer = "", stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType="function";
26583
+ var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
26555
26584
 
26556
26585
  function program1(depth0,data) {
26557
26586
 
@@ -26561,144 +26590,28 @@ function program1(depth0,data) {
26561
26590
 
26562
26591
  function program3(depth0,data) {
26563
26592
 
26564
- var buffer = "", stack1;
26565
- buffer += "\n ";
26566
- stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
26567
- if(stack1 || stack1 === 0) { buffer += stack1; }
26568
- buffer += "\n ";
26569
- return buffer;
26570
- }
26571
- function program4(depth0,data) {
26572
-
26573
- var buffer = "", stack1, options;
26574
- buffer += "\n ";
26575
- options = {hash:{},data:data};
26576
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.title.select_or_create", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.title.select_or_create", options)))
26577
- + "\n ";
26578
- return buffer;
26579
- }
26580
-
26581
- function program6(depth0,data) {
26582
-
26583
- var buffer = "", stack1, options;
26584
- buffer += "\n ";
26585
- options = {hash:{},data:data};
26586
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.title.select", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.title.select", options)))
26587
- + "\n ";
26588
- return buffer;
26589
- }
26590
-
26591
- function program8(depth0,data) {
26592
-
26593
- var buffer = "", stack1;
26594
- buffer += "\n ";
26595
- stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
26596
- if(stack1 || stack1 === 0) { buffer += stack1; }
26597
- buffer += "\n ";
26598
- return buffer;
26599
- }
26600
- function program9(depth0,data) {
26601
-
26602
- var buffer = "", stack1, options;
26603
- buffer += "\n ";
26604
- options = {hash:{},data:data};
26605
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.title.create", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.title.create", options)))
26606
- + "\n ";
26607
- return buffer;
26608
- }
26609
-
26610
- function program11(depth0,data) {
26611
-
26612
- var buffer = "", stack1, options;
26613
- buffer += "\n ";
26614
- options = {hash:{},data:data};
26615
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.title.forbidden", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.title.forbidden", options)))
26616
- + "\n ";
26617
- return buffer;
26618
- }
26619
-
26620
- function program13(depth0,data) {
26621
-
26622
- var buffer = "", stack1;
26623
- buffer += "\n ";
26624
- stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.program(16, program16, data),fn:self.program(14, program14, data),data:data});
26625
- if(stack1 || stack1 === 0) { buffer += stack1; }
26626
- buffer += "\n ";
26627
- return buffer;
26628
- }
26629
- function program14(depth0,data) {
26630
-
26631
- var buffer = "", stack1, options;
26632
- buffer += "\n ";
26633
- options = {hash:{},data:data};
26634
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.description.select_or_create", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.description.select_or_create", options)))
26635
- + "\n ";
26636
- return buffer;
26637
- }
26638
-
26639
- function program16(depth0,data) {
26640
-
26641
- var buffer = "", stack1, options;
26642
- buffer += "\n ";
26643
- options = {hash:{},data:data};
26644
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.description.select", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.description.select", options)))
26645
- + "\n ";
26646
- return buffer;
26647
- }
26648
-
26649
- function program18(depth0,data) {
26650
-
26651
- var buffer = "", stack1;
26652
- buffer += "\n ";
26653
- stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.program(21, program21, data),fn:self.program(19, program19, data),data:data});
26654
- if(stack1 || stack1 === 0) { buffer += stack1; }
26655
- buffer += "\n ";
26656
- return buffer;
26657
- }
26658
- function program19(depth0,data) {
26659
-
26660
- var buffer = "", stack1, options;
26661
- buffer += "\n ";
26662
- options = {hash:{},data:data};
26663
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.description.create", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.description.create", options)))
26664
- + "\n ";
26665
- return buffer;
26666
- }
26667
-
26668
- function program21(depth0,data) {
26669
-
26670
- var buffer = "", stack1, options;
26671
- buffer += "\n ";
26672
- options = {hash:{},data:data};
26673
- buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.description.forbidden", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.description.forbidden", options)))
26674
- + "\n ";
26675
- return buffer;
26676
- }
26677
-
26678
- function program23(depth0,data) {
26679
-
26680
26593
  var buffer = "", stack1, stack2, options;
26681
26594
  buffer += "\n <div class=\"scrivito_input_list_of_ws\">\n <label for=\"scrivito_list_of_ws\">";
26682
26595
  options = {hash:{},data:data};
26683
26596
  buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "editable_ws_dialog.choose_existing", options) : helperMissing.call(depth0, "translate", "editable_ws_dialog.choose_existing", options)))
26684
26597
  + "</label>\n <select id=\"scrivito_list_of_ws\">\n ";
26685
- stack2 = helpers.each.call(depth0, depth0.workspaces, {hash:{},inverse:self.noop,fn:self.program(24, program24, data),data:data});
26598
+ stack2 = helpers.each.call(depth0, depth0.workspaces, {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
26686
26599
  if(stack2 || stack2 === 0) { buffer += stack2; }
26687
26600
  buffer += "\n </select>\n </div>\n ";
26688
26601
  return buffer;
26689
26602
  }
26690
- function program24(depth0,data) {
26603
+ function program4(depth0,data) {
26691
26604
 
26692
26605
  var buffer = "", stack1, stack2;
26693
26606
  buffer += "\n <option value=\""
26694
26607
  + escapeExpression(((stack1 = depth0.id),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
26695
26608
  + "\">\n ";
26696
- stack2 = helpers['if'].call(depth0, depth0.title, {hash:{},inverse:self.program(27, program27, data),fn:self.program(25, program25, data),data:data});
26609
+ stack2 = helpers['if'].call(depth0, depth0.title, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
26697
26610
  if(stack2 || stack2 === 0) { buffer += stack2; }
26698
26611
  buffer += "\n </option>\n ";
26699
26612
  return buffer;
26700
26613
  }
26701
- function program25(depth0,data) {
26614
+ function program5(depth0,data) {
26702
26615
 
26703
26616
  var buffer = "", stack1;
26704
26617
  buffer += "\n "
@@ -26707,7 +26620,7 @@ function program25(depth0,data) {
26707
26620
  return buffer;
26708
26621
  }
26709
26622
 
26710
- function program27(depth0,data) {
26623
+ function program7(depth0,data) {
26711
26624
 
26712
26625
  var buffer = "", stack1, options;
26713
26626
  buffer += "\n ";
@@ -26717,11 +26630,11 @@ function program27(depth0,data) {
26717
26630
  return buffer;
26718
26631
  }
26719
26632
 
26720
- function program29(depth0,data) {
26633
+ function program9(depth0,data) {
26721
26634
 
26722
26635
  var buffer = "", stack1, options;
26723
26636
  buffer += "\n <div class=\"scrivito_input_new_ws_name\">\n <label for=\"scrivito_new_ws_name\">\n ";
26724
- stack1 = helpers['if'].call(depth0, depth0.workspaces, {hash:{},inverse:self.program(32, program32, data),fn:self.program(30, program30, data),data:data});
26637
+ stack1 = helpers['if'].call(depth0, depth0.workspaces, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
26725
26638
  if(stack1 || stack1 === 0) { buffer += stack1; }
26726
26639
  buffer += "\n </label>\n <input type=\"text\" id=\"scrivito_new_ws_name\" value=\"\"\n placeholder=\"";
26727
26640
  options = {hash:{},data:data};
@@ -26729,7 +26642,7 @@ function program29(depth0,data) {
26729
26642
  + "\">\n </div>\n ";
26730
26643
  return buffer;
26731
26644
  }
26732
- function program30(depth0,data) {
26645
+ function program10(depth0,data) {
26733
26646
 
26734
26647
  var buffer = "", stack1, options;
26735
26648
  buffer += "\n ";
@@ -26739,7 +26652,7 @@ function program30(depth0,data) {
26739
26652
  return buffer;
26740
26653
  }
26741
26654
 
26742
- function program32(depth0,data) {
26655
+ function program12(depth0,data) {
26743
26656
 
26744
26657
  var buffer = "", stack1, options;
26745
26658
  buffer += "\n ";
@@ -26749,7 +26662,7 @@ function program32(depth0,data) {
26749
26662
  return buffer;
26750
26663
  }
26751
26664
 
26752
- function program34(depth0,data) {
26665
+ function program14(depth0,data) {
26753
26666
 
26754
26667
  var buffer = "", stack1, options;
26755
26668
  buffer += "\n <a href=\"#\" class=\"scrivito_button scrivito_cancel\">";
@@ -26762,7 +26675,7 @@ function program34(depth0,data) {
26762
26675
  return buffer;
26763
26676
  }
26764
26677
 
26765
- function program36(depth0,data) {
26678
+ function program16(depth0,data) {
26766
26679
 
26767
26680
  var buffer = "", stack1, options;
26768
26681
  buffer += "\n <a href=\"#\" class=\"scrivito_button scrivito_cancel\">";
@@ -26776,19 +26689,21 @@ function program36(depth0,data) {
26776
26689
  stack1 = helpers['if'].call(depth0, depth0.can_select_or_create, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
26777
26690
  if(stack1 || stack1 === 0) { buffer += stack1; }
26778
26691
  buffer += "\">\n <div class=\"scrivito_modal_header\">\n <i class=\"scrivito_icon\">&#xf011;</i>\n <h3 class=\"scrivito_title\">\n ";
26779
- stack1 = helpers['if'].call(depth0, depth0.can_select, {hash:{},inverse:self.program(8, program8, data),fn:self.program(3, program3, data),data:data});
26780
- if(stack1 || stack1 === 0) { buffer += stack1; }
26781
- buffer += "\n </h3>\n </div>\n <div class=\"scrivito_modal_body\">\n <div class=\"scrivito_description\">\n ";
26782
- stack1 = helpers['if'].call(depth0, depth0.can_select, {hash:{},inverse:self.program(18, program18, data),fn:self.program(13, program13, data),data:data});
26783
- if(stack1 || stack1 === 0) { buffer += stack1; }
26784
- buffer += "\n </div>\n <div>\n &nbsp;\n </div>\n ";
26785
- stack1 = helpers['if'].call(depth0, depth0.workspaces, {hash:{},inverse:self.noop,fn:self.program(23, program23, data),data:data});
26692
+ if (stack1 = helpers.title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26693
+ else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26694
+ buffer += escapeExpression(stack1)
26695
+ + "\n </h3>\n </div>\n <div class=\"scrivito_modal_body\">\n <div class=\"scrivito_description\">\n ";
26696
+ if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26697
+ else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26698
+ buffer += escapeExpression(stack1)
26699
+ + "\n </div>\n <div>\n &nbsp;\n </div>\n ";
26700
+ stack1 = helpers['if'].call(depth0, depth0.workspaces, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
26786
26701
  if(stack1 || stack1 === 0) { buffer += stack1; }
26787
26702
  buffer += "\n ";
26788
- stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.noop,fn:self.program(29, program29, data),data:data});
26703
+ stack1 = helpers['if'].call(depth0, depth0.can_create, {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
26789
26704
  if(stack1 || stack1 === 0) { buffer += stack1; }
26790
26705
  buffer += "\n </div>\n <div class=\"scrivito_modal_footer\">\n ";
26791
- stack1 = helpers['if'].call(depth0, depth0.can_select_or_create, {hash:{},inverse:self.program(36, program36, data),fn:self.program(34, program34, data),data:data});
26706
+ stack1 = helpers['if'].call(depth0, depth0.can_select_or_create, {hash:{},inverse:self.program(16, program16, data),fn:self.program(14, program14, data),data:data});
26792
26707
  if(stack1 || stack1 === 0) { buffer += stack1; }
26793
26708
  buffer += "\n </div>\n</div>\n";
26794
26709
  return buffer;
@@ -26938,26 +26853,10 @@ function program1(depth0,data) {
26938
26853
  this.ScrivitoHandlebarsTemplates["menu"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
26939
26854
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
26940
26855
  helpers = helpers || Handlebars.helpers; data = data || {};
26941
- var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
26856
+ var buffer = "", stack1, functionType="function", self=this;
26942
26857
 
26943
26858
  function program1(depth0,data) {
26944
26859
 
26945
- var buffer = "", stack1;
26946
- buffer += "scrivito_";
26947
- if (stack1 = helpers.align) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
26948
- else { stack1 = depth0.align; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
26949
- buffer += escapeExpression(stack1);
26950
- return buffer;
26951
- }
26952
-
26953
- function program3(depth0,data) {
26954
-
26955
-
26956
- return "scrivito_right";
26957
- }
26958
-
26959
- function program5(depth0,data) {
26960
-
26961
26860
  var buffer = "", stack1, stack2;
26962
26861
  buffer += "\n ";
26963
26862
  stack2 = ((stack1 = depth0.render),typeof stack1 === functionType ? stack1.apply(depth0) : stack1);
@@ -26966,11 +26865,8 @@ function program5(depth0,data) {
26966
26865
  return buffer;
26967
26866
  }
26968
26867
 
26969
- buffer += "<div class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box ";
26970
- stack1 = helpers['if'].call(depth0, depth0.align, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
26971
- if(stack1 || stack1 === 0) { buffer += stack1; }
26972
- buffer += "\">\n ";
26973
- stack1 = helpers.each.call(depth0, depth0.menu_items, {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
26868
+ buffer += "<div class=\"scrivito_editing_marker_menu\">\n <ul class=\"scrivito_menu_box\">\n ";
26869
+ stack1 = helpers.each.call(depth0, depth0.menu_items, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
26974
26870
  if(stack1 || stack1 === 0) { buffer += stack1; }
26975
26871
  buffer += "\n <li class=\"scrivito_menu_box_overlay\"></li>\n </ul>\n</div>\n";
26976
26872
  return buffer;
@@ -26985,7 +26881,7 @@ helpers = helpers || Handlebars.helpers; data = data || {};
26985
26881
 
26986
26882
 
26987
26883
 
26988
- 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_workspace_select\" 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_device_toggle\"></div>\n <div id=\"scrivito_menu_bar_browse_content\"></div>\n <div id=\"scrivito_menu_bar_conflict_indicator\"></div>\n <div id=\"scrivito_current_page_restriction\"></div>\n <div id=\"scrivito_menu_bar_warning\"></div>\n <div id=\"scrivito_menu_bar_saving_indicator\"></div>\n </div>\n</div>\n";
26884
+ return "<div class=\"scrivito_topbar\">\n <div class=\"scrivito_first_level\">\n <div id=\"scrivito_menu_bar_display_mode_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_workspace_select\" 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_device_toggle\"></div>\n <div id=\"scrivito_menu_bar_browse_content\"></div>\n <div id=\"scrivito_menu_bar_conflict_indicator\"></div>\n <div id=\"scrivito_current_page_restriction\"></div>\n <div id=\"scrivito_menu_bar_warning\"></div>\n <div id=\"scrivito_menu_bar_saving_indicator\"></div>\n </div>\n</div>\n";
26989
26885
  });
26990
26886
  return this.ScrivitoHandlebarsTemplates["menu_bar"];
26991
26887
  }).call(this);
@@ -27077,7 +26973,7 @@ helpers = helpers || Handlebars.helpers; data = data || {};
27077
26973
  }).call(this);
27078
26974
  (function() {
27079
26975
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
27080
- this.ScrivitoHandlebarsTemplates["menu_bar_toggle"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
26976
+ this.ScrivitoHandlebarsTemplates["menu_bar_display_mode_toggle"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
27081
26977
  this.compilerInfo = [3,'>= 1.0.0-rc.4'];
27082
26978
  helpers = helpers || Handlebars.helpers; data = data || {};
27083
26979
  var buffer = "", stack1, stack2, functionType="function", escapeExpression=this.escapeExpression;
@@ -27106,7 +27002,7 @@ helpers = helpers || Handlebars.helpers; data = data || {};
27106
27002
  + " <i class=\"scrivito_icon\">&#xf025;</i>\n </span>\n </div>\n</div>\n";
27107
27003
  return buffer;
27108
27004
  });
27109
- return this.ScrivitoHandlebarsTemplates["menu_bar_toggle"];
27005
+ return this.ScrivitoHandlebarsTemplates["menu_bar_display_mode_toggle"];
27110
27006
  }).call(this);
27111
27007
  (function() {
27112
27008
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
@@ -27509,14 +27405,222 @@ helpers = helpers || Handlebars.helpers; data = data || {};
27509
27405
  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
27510
27406
 
27511
27407
 
27512
- buffer += "<h1>";
27513
- if (stack1 = helpers.title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27514
- else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27515
- buffer += escapeExpression(stack1)
27516
- + "</h1>\n";
27408
+ buffer += "<h1>";
27409
+ if (stack1 = helpers.title) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27410
+ else { stack1 = depth0.title; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27411
+ buffer += escapeExpression(stack1)
27412
+ + "</h1>\n";
27413
+ return buffer;
27414
+ });
27415
+ return this.ScrivitoHandlebarsTemplates["title"];
27416
+ }).call(this);
27417
+ (function() {
27418
+ this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
27419
+ this.ScrivitoHandlebarsTemplates["transfer_changes_dialog"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
27420
+ this.compilerInfo = [3,'>= 1.0.0-rc.4'];
27421
+ helpers = helpers || Handlebars.helpers; data = data || {};
27422
+ var buffer = "", stack1, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
27423
+
27424
+
27425
+ buffer += "<div class=\"scrivito_changes_overview scrivito_modal_large scrivito_adjust_dialog scrivito_green\n scrivito_multi_select_active\">\n <div class=\"scrivito_modal_header\">\n <h3>\n <i class=\"scrivito_icon\">&#xf02d;</i>\n ";
27426
+ options = {hash:{},data:data};
27427
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.title", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.title", options)))
27428
+ + "\n </h3>\n </div>\n\n <div class=\"scrivito_modal_body scrivito_auto_height\"></div>\n\n <div class=\"scrivito_modal_footer\">\n <a href=\"#\" class=\"scrivito_button scrivito_left scrivito_green scrivito_confirm\n scrivito_disabled\">\n ";
27429
+ options = {hash:{},data:data};
27430
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.select_transfer_target", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.select_transfer_target", options)))
27431
+ + "\n </a>\n <a href=\"#\" class=\"scrivito_button scrivito_cancel\">\n ";
27432
+ options = {hash:{},data:data};
27433
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.back", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.back", options)))
27434
+ + "\n </a>\n </div>\n</div>\n";
27435
+ return buffer;
27436
+ });
27437
+ return this.ScrivitoHandlebarsTemplates["transfer_changes_dialog"];
27438
+ }).call(this);
27439
+ (function() {
27440
+ this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
27441
+ this.ScrivitoHandlebarsTemplates["transfer_changes_dialog/body"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
27442
+ this.compilerInfo = [3,'>= 1.0.0-rc.4'];
27443
+ helpers = helpers || Handlebars.helpers; data = data || {};
27444
+ var buffer = "", stack1, stack2, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
27445
+
27446
+ function program1(depth0,data) {
27447
+
27448
+ var buffer = "", stack1;
27449
+ buffer += "\n <tr title=\"";
27450
+ if (stack1 = helpers.tooltip) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27451
+ else { stack1 = depth0.tooltip; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27452
+ buffer += escapeExpression(stack1)
27453
+ + "\"\n ";
27454
+ stack1 = helpers.unless.call(depth0, depth0.has_conflict, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
27455
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27456
+ buffer += "\n class=\"";
27457
+ stack1 = helpers['if'].call(depth0, depth0.has_conflict, {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
27458
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27459
+ buffer += "\n ";
27460
+ stack1 = helpers['if'].call(depth0, depth0.is_selected, {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
27461
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27462
+ buffer += "\">\n <td class=\"scrivito_item_select\"><span class=\"scrivito_item_checkbox\"></span></td>\n <td>\n <span class=\"scrivito_changes_state ";
27463
+ if (stack1 = helpers.modification) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27464
+ else { stack1 = depth0.modification; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27465
+ buffer += escapeExpression(stack1)
27466
+ + "\n ";
27467
+ stack1 = helpers['if'].call(depth0, depth0.has_conflict, {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
27468
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27469
+ buffer += "\"></span>\n </td>\n\n <td>\n ";
27470
+ stack1 = helpers['if'].call(depth0, depth0.has_restriction, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
27471
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27472
+ buffer += "\n </td>\n\n <td><span class=\"scrivito_title\">";
27473
+ if (stack1 = helpers.description_for_editor) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27474
+ else { stack1 = depth0.description_for_editor; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27475
+ buffer += escapeExpression(stack1)
27476
+ + "</span></td>\n <td><span class=\"scrivito_obj_class\">";
27477
+ if (stack1 = helpers.obj_class) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27478
+ else { stack1 = depth0.obj_class; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27479
+ buffer += escapeExpression(stack1)
27480
+ + "</span></td>\n\n <td>\n ";
27481
+ stack1 = helpers.unless.call(depth0, depth0.is_deleted, {hash:{},inverse:self.noop,fn:self.program(14, program14, data),data:data});
27482
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27483
+ buffer += "\n </td>\n </tr>\n ";
27484
+ return buffer;
27485
+ }
27486
+ function program2(depth0,data) {
27487
+
27488
+ var buffer = "", stack1;
27489
+ buffer += "data-scrivito-obj-id=\"";
27490
+ if (stack1 = helpers.id) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27491
+ else { stack1 = depth0.id; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27492
+ buffer += escapeExpression(stack1)
27493
+ + "\"";
27494
+ return buffer;
27495
+ }
27496
+
27497
+ function program4(depth0,data) {
27498
+
27499
+
27500
+ return "scrivito_disabled";
27501
+ }
27502
+
27503
+ function program6(depth0,data) {
27504
+
27505
+
27506
+ return "scrivito_active";
27507
+ }
27508
+
27509
+ function program8(depth0,data) {
27510
+
27511
+
27512
+ return "conflict";
27513
+ }
27514
+
27515
+ function program10(depth0,data) {
27516
+
27517
+ var buffer = "", stack1, stack2, options;
27518
+ buffer += "\n <span class=\"scrivito_restriction\"\n title=\"";
27519
+ options = {hash:{},data:data};
27520
+ stack2 = ((stack1 = helpers.array_to_title),stack1 ? stack1.call(depth0, depth0.restriction_messages, options) : helperMissing.call(depth0, "array_to_title", depth0.restriction_messages, options));
27521
+ if(stack2 || stack2 === 0) { buffer += stack2; }
27522
+ buffer += "\"></span>\n ";
27523
+ return buffer;
27524
+ }
27525
+
27526
+ function program12(depth0,data) {
27527
+
27528
+
27529
+ return "\n <span></span>\n ";
27530
+ }
27531
+
27532
+ function program14(depth0,data) {
27533
+
27534
+ var buffer = "", stack1, options;
27535
+ buffer += "\n <span>\n <time datetime=\"";
27536
+ if (stack1 = helpers.last_changed) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27537
+ else { stack1 = depth0.last_changed; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27538
+ buffer += escapeExpression(stack1)
27539
+ + "\" title=\"";
27540
+ options = {hash:{},data:data};
27541
+ buffer += escapeExpression(((stack1 = helpers.localize_date),stack1 ? stack1.call(depth0, depth0.last_changed, options) : helperMissing.call(depth0, "localize_date", depth0.last_changed, options)))
27542
+ + "\">\n ";
27543
+ options = {hash:{},data:data};
27544
+ buffer += escapeExpression(((stack1 = helpers.localize_date_relative),stack1 ? stack1.call(depth0, depth0.last_changed, options) : helperMissing.call(depth0, "localize_date_relative", depth0.last_changed, options)))
27545
+ + "\n </time>\n </span>\n ";
27546
+ return buffer;
27547
+ }
27548
+
27549
+ buffer += "<table class=\"scrivito_changes_table\">\n <thead>\n <tr>\n <th class=\"scrivito_item_select\"><span></span></th>\n <th><span>";
27550
+ options = {hash:{},data:data};
27551
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.modification", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.modification", options)))
27552
+ + "</span></th>\n <th><span>";
27553
+ options = {hash:{},data:data};
27554
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.rights", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.rights", options)))
27555
+ + "</span></th>\n <th><span>";
27556
+ options = {hash:{},data:data};
27557
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.description_for_editor", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.description_for_editor", options)))
27558
+ + "</span></th>\n <th><span>";
27559
+ options = {hash:{},data:data};
27560
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.obj_class", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.obj_class", options)))
27561
+ + "</span></th>\n <th><span>";
27562
+ options = {hash:{},data:data};
27563
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_changes_dialog.last_changed", options) : helperMissing.call(depth0, "translate", "transfer_changes_dialog.last_changed", options)))
27564
+ + "</span></th>\n </tr>\n </thead>\n\n <tbody>\n ";
27565
+ stack2 = helpers.each.call(depth0, depth0.objs, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
27566
+ if(stack2 || stack2 === 0) { buffer += stack2; }
27567
+ buffer += "\n </tbody>\n</table>\n";
27568
+ return buffer;
27569
+ });
27570
+ return this.ScrivitoHandlebarsTemplates["transfer_changes_dialog/body"];
27571
+ }).call(this);
27572
+ (function() {
27573
+ this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
27574
+ this.ScrivitoHandlebarsTemplates["transfer_errors_dialog"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
27575
+ this.compilerInfo = [3,'>= 1.0.0-rc.4'];
27576
+ helpers = helpers || Handlebars.helpers; data = data || {};
27577
+ var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
27578
+
27579
+ function program1(depth0,data) {
27580
+
27581
+ var buffer = "", stack1, stack2, options;
27582
+ buffer += "\n <p>";
27583
+ options = {hash:{},data:data};
27584
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_errors_dialog.modified", options) : helperMissing.call(depth0, "translate", "transfer_errors_dialog.modified", options)))
27585
+ + "</p>\n <ul>\n ";
27586
+ stack2 = helpers.each.call(depth0, depth0.modified, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
27587
+ if(stack2 || stack2 === 0) { buffer += stack2; }
27588
+ buffer += "\n </ul>\n";
27589
+ return buffer;
27590
+ }
27591
+ function program2(depth0,data) {
27592
+
27593
+ var buffer = "", stack1;
27594
+ buffer += "<li>";
27595
+ if (stack1 = helpers.description_for_editor) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
27596
+ else { stack1 = depth0.description_for_editor; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
27597
+ buffer += escapeExpression(stack1)
27598
+ + "</li>";
27599
+ return buffer;
27600
+ }
27601
+
27602
+ function program4(depth0,data) {
27603
+
27604
+ var buffer = "", stack1, stack2, options;
27605
+ buffer += "\n <p>";
27606
+ options = {hash:{},data:data};
27607
+ buffer += escapeExpression(((stack1 = helpers.translate),stack1 ? stack1.call(depth0, "transfer_errors_dialog.conflicting", options) : helperMissing.call(depth0, "translate", "transfer_errors_dialog.conflicting", options)))
27608
+ + "</p>\n <ul>\n ";
27609
+ stack2 = helpers.each.call(depth0, depth0.conflicting, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
27610
+ if(stack2 || stack2 === 0) { buffer += stack2; }
27611
+ buffer += "\n </ul>\n";
27612
+ return buffer;
27613
+ }
27614
+
27615
+ stack1 = helpers['if'].call(depth0, depth0.modified, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
27616
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27617
+ buffer += "\n\n";
27618
+ stack1 = helpers['if'].call(depth0, depth0.conflicting, {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
27619
+ if(stack1 || stack1 === 0) { buffer += stack1; }
27620
+ buffer += "\n";
27517
27621
  return buffer;
27518
27622
  });
27519
- return this.ScrivitoHandlebarsTemplates["title"];
27623
+ return this.ScrivitoHandlebarsTemplates["transfer_errors_dialog"];
27520
27624
  }).call(this);
27521
27625
  (function() {
27522
27626
  this.ScrivitoHandlebarsTemplates || (this.ScrivitoHandlebarsTemplates = {});
@@ -27784,19 +27888,29 @@ $.i18n().load({
27784
27888
  'menu_item.spinner.loading': 'Laden...',
27785
27889
 
27786
27890
  'choose_obj_class_dialog.add_child_page.title': 'Seitenvorlage auswählen',
27891
+ 'choose_obj_class_dialog.create_page.title': 'Seitenvorlage auswählen',
27787
27892
  'choose_obj_class_dialog.create_widget.title': 'Widget auswählen',
27788
27893
  'choose_obj_class_dialog.last_used': 'Zuletzt verwendet',
27789
27894
  'choose_obj_class_dialog.popular': 'Oft verwendet',
27790
27895
  'choose_obj_class_dialog.all': 'Alle',
27791
27896
 
27792
- 'editable_ws_dialog.title.select_or_create': 'Arbeitskopie wählen',
27793
- 'editable_ws_dialog.title.select': 'Arbeitskopie auswählen',
27794
- 'editable_ws_dialog.title.create': 'Arbeitskopie anlegen',
27795
- 'editable_ws_dialog.title.forbidden': 'Keine Arbeitskopie verfügbar',
27796
- 'editable_ws_dialog.description.select_or_create': 'Wählen Sie eine Arbeitskopie aus oder legen Sie eine neue an, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27797
- 'editable_ws_dialog.description.select': 'Wählen Sie eine Arbeitskopie aus, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27798
- 'editable_ws_dialog.description.create': 'Legen Sie eine neue Arbeitskopie an, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27799
- 'editable_ws_dialog.description.forbidden': 'Es gibt keine Arbeitskopie, in der Sie Inhalte ändern könnten. Auch wurde es Ihnen nicht ermöglicht, Arbeitskopien anzulegen.',
27897
+ 'editable_ws_dialog.view_mode.title.select_or_create': 'Arbeitskopie wählen',
27898
+ 'editable_ws_dialog.view_mode.title.select': 'Arbeitskopie auswählen',
27899
+ 'editable_ws_dialog.view_mode.title.create': 'Arbeitskopie anlegen',
27900
+ 'editable_ws_dialog.view_mode.title.forbidden': 'Keine Arbeitskopie verfügbar',
27901
+ 'editable_ws_dialog.view_mode.description.select_or_create': 'Wählen Sie eine Arbeitskopie aus oder legen Sie eine neue an, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27902
+ 'editable_ws_dialog.view_mode.description.select': 'Wählen Sie eine Arbeitskopie aus, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27903
+ 'editable_ws_dialog.view_mode.description.create': 'Legen Sie eine neue Arbeitskopie an, um Inhalte zu ändern. Veröffentlichen Sie die Arbeitskopie nach Abschluss der Bearbeitung, oder lassen Sie sie veröffentlichen.',
27904
+ 'editable_ws_dialog.view_mode.description.forbidden': 'Es gibt keine Arbeitskopie, in der Sie Inhalte ändern könnten. Auch wurde es Ihnen nicht ermöglicht, Arbeitskopien anzulegen.',
27905
+
27906
+ 'editable_ws_dialog.transfer_changes.title.select_or_create': 'Ziel-Arbeitskopie auswählen',
27907
+ 'editable_ws_dialog.transfer_changes.title.select': 'Ziel-Arbeitskopie auswählen',
27908
+ 'editable_ws_dialog.transfer_changes.title.create': 'Ziel-Arbeitskopie anlegen',
27909
+ 'editable_ws_dialog.transfer_changes.title.forbidden': 'Keine Arbeitskopie verfügbar',
27910
+ 'editable_ws_dialog.transfer_changes.description.select_or_create': 'Die Änderungen können in eine bestehende oder in eine neue Arbeitskopie verschoben werden.',
27911
+ 'editable_ws_dialog.transfer_changes.description.select': 'Die Änderungen werden in die ausgewählte Arbeitskopie verschoben.',
27912
+ 'editable_ws_dialog.transfer_changes.description.create': 'Bitte erstellen Sie die Ziel-Arbeitskopie',
27913
+ 'editable_ws_dialog.transfer_changes.description.forbidden': 'Sie sind nicht dazu berechtigt, Änderungen in eine bestehende Arbeitskopie zu verschieben.',
27800
27914
  'editable_ws_dialog.choose_existing': 'Wählen Sie eine bestehende Arbeitskopie aus:',
27801
27915
  'editable_ws_dialog.create_new': 'Legen Sie eine neue Arbeitskopie an:',
27802
27916
  'editable_ws_dialog.or_create_new': 'Oder legen Sie eine neue an:',
@@ -27805,11 +27919,6 @@ $.i18n().load({
27805
27919
 
27806
27920
  'resource_dialog.title': 'Eigenschaften der Ressource "$1"',
27807
27921
 
27808
- 'resource_dialog.commands.revert_obj.title': 'Änderungen an Ressource verwerfen',
27809
- '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.',
27810
- 'resource_dialog.commands.revert_obj.not_modified_obj': 'Diese Ressource wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
27811
- 'resource_dialog.commands.revert_obj.dialog.title': 'Wirklich Änderungen an dieser Ressource verwerfen?',
27812
-
27813
27922
  'resource_dialog.commands.restore_obj.title': 'Ressource wiederherstellen',
27814
27923
 
27815
27924
  'resource_dialog.commands.mark_resolved_obj.title': 'Parallele Änderungen an der Ressource überschreiben',
@@ -27862,13 +27971,28 @@ $.i18n().load({
27862
27971
  'changes_dialog.modification': 'Änderung',
27863
27972
  'changes_dialog.rights': 'Veröffentlichen erlaubt',
27864
27973
  'changes_dialog.description_for_editor': 'Titel',
27865
- 'changes_dialog.obj_class_name': 'Typ',
27974
+ 'changes_dialog.obj_class': 'Typ',
27866
27975
  'changes_dialog.last_changed': 'Letzte Änderung',
27976
+ 'changes_dialog.open_transfer_dialog': 'Änderungen verschieben',
27977
+
27978
+ 'transfer_changes_dialog.title': 'Inhalte mit zu verschiebenden Änderungen auswählen',
27979
+ 'transfer_changes_dialog.select_transfer_target': 'Ziel-Arbeitskopie auswählen',
27980
+ 'transfer_changes_dialog.back': 'Zurück',
27981
+ 'transfer_changes_dialog.modification': 'Änderung',
27982
+ 'transfer_changes_dialog.rights': 'Veröffentlichen erlaubt',
27983
+ 'transfer_changes_dialog.description_for_editor': 'Titel',
27984
+ 'transfer_changes_dialog.obj_class': 'Typ',
27985
+ 'transfer_changes_dialog.last_changed': 'Letzte Änderung',
27986
+
27987
+ 'transfer_errors_dialog.title': 'Fehler beim Verschieben von Änderungen',
27988
+ 'transfer_errors_dialog.modified': 'Einige der Änderungen konnten nicht verschoben werden, weil die betreffenden Inhalte auch in der Ziel-Arbeitskopie modifiziert wurden.',
27989
+ 'transfer_errors_dialog.conflicting': 'Einige der Änderungen wurden nicht verschoben, weil die betreffenden Inhalte in der Ziel-Arbeitskopie nicht aktuell sind. Die Änderungen auf diese Inhalte anzuwenden, würde zu einem Konflikt führen. Bitte stellen Sie sicher, dass beide Arbeitskopien aktualisiert wurden und konfliktfrei sind.',
27867
27990
 
27868
27991
  'current_page_link_dialog.title': 'Diese Seite teilen',
27869
27992
  'current_page_link_dialog.description': 'Mit dieser URL können Sie die aktuelle Seite als Teil dieser Arbeitskopie teilen. Die Empfänger müssen angemeldet sein und Zugriff auf die Arbeitskopie haben.',
27870
27993
 
27871
27994
  'commands.current_page_link.title': 'Diese Seite teilen',
27995
+ 'commands.current_page_link.is_deleted': 'Eine gelöschte Seite kann nicht geteilt werden, weil sie in der Vorschau nicht zugänglich ist',
27872
27996
 
27873
27997
  'commands.create_workspace.forbidden': 'Eine Arbeitskopie kann aufgrund fehlender Benutzerrechte nicht angelegt werden.',
27874
27998
  'commands.create_workspace.title': 'Arbeitskopie anlegen',
@@ -27916,13 +28040,17 @@ $.i18n().load({
27916
28040
 
27917
28041
  'commands.revert_obj.title': 'Änderungen an Seite verwerfen',
27918
28042
  'commands.revert_obj.published_workspace': 'Die veröffentlichten Inhalte können nicht direkt geändert werden. Daher gibt es nichts zu verwerfen.',
27919
- '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.',
27920
- 'commands.revert_obj.not_modified_obj': 'Diese Seite wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
27921
- 'commands.revert_obj.is_binary': 'Verwerfen von Änderungen ist nicht verfügbar für binäre Daten.',
28043
+ 'commands.revert_obj.is_new': 'Dies ist eine neue Seite. Um die Erstellung dieser Seite rückgängig zu machen, löschen Sie sie bitte.',
28044
+ 'commands.revert_obj.unmodified': 'Diese Seite wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
27922
28045
  'commands.revert_obj.dialog.title': 'Wirklich Änderungen an dieser Seite verwerfen?',
27923
28046
  'commands.revert_obj.dialog.description': 'Verworfene Änderungen können nicht wiederhergestellt werden.',
27924
28047
  'commands.revert_obj.dialog.confirm': 'Verwerfen',
27925
28048
 
28049
+ 'commands.revert_resource.title': 'Änderungen an Ressource verwerfen',
28050
+ 'commands.revert_resource.is_new': 'Dies ist eine neue Ressource. Um die Erstellung dieser Ressource rückgängig zu machen, löschen Sie sie bitte.',
28051
+ 'commands.revert_resource.unmodified': 'Diese Ressource wurde nicht geändert. Daher gibt es nichts zu verwerfen.',
28052
+ 'commands.revert_resource.dialog.title': 'Wirklich Änderungen an dieser Ressource verwerfen?',
28053
+
27926
28054
  'commands.revert_widget.content_title': 'Änderungen am Inhalt verwerfen',
27927
28055
  'commands.revert_widget.widget_title': 'Änderungen am Widget verwerfen',
27928
28056
  'commands.revert_widget.is_new': 'Dies ist ein neues Widget. Um die Erstellung dieses Widgets rückgängig zu machen, löschen Sie es bitte.',
@@ -27944,8 +28072,11 @@ $.i18n().load({
27944
28072
  'commands.duplicate_obj.published_workspace': 'Die veröffentlichten Inhalte können nicht direkt geändert werden.',
27945
28073
  'commands.duplicate_obj.has_children': 'Seiten mit Unterseiten können noch nicht dupliziert werden.',
27946
28074
 
27947
- 'commands.add_subpage.title': 'Neue Seite anlegen',
27948
- 'commands.add_subpage.tooltip': 'Seite unterhalb $1 anlegen',
28075
+ 'commands.create_page.title': 'Neue Seite',
28076
+ 'commands.create_page.published_workspace': 'Die veröffentlichten Inhalte können nicht direkt geändert werden.',
28077
+
28078
+ 'commands.add_subpage.title': 'Seite hinzufügen',
28079
+ 'commands.add_subpage.tooltip': 'Seite zu "$1" hinzufügen',
27949
28080
 
27950
28081
  'commands.copy_page_from_clipboard.title': 'Markierte Seite hierher kopieren',
27951
28082
  'commands.copy_page_from_clipboard.paste_forbidden': 'Aufgrund ihres Typs kann die Seite hier nicht eingefügt werden. Nur Seiten der folgenden Typen können hierher verschoben oder kopiert werden: $1',
@@ -28046,19 +28177,29 @@ $.i18n().load({
28046
28177
  'menu_item.spinner.loading': 'Loading...',
28047
28178
 
28048
28179
  'choose_obj_class_dialog.add_child_page.title': 'Select Page Type',
28180
+ 'choose_obj_class_dialog.create_page.title': 'Select Page Type',
28049
28181
  'choose_obj_class_dialog.create_widget.title': 'Select Widget',
28050
28182
  'choose_obj_class_dialog.last_used': 'Last used',
28051
28183
  'choose_obj_class_dialog.popular': 'Often used',
28052
28184
  'choose_obj_class_dialog.all': 'All',
28053
28185
 
28054
- 'editable_ws_dialog.title.select_or_create': 'Choose a working copy',
28055
- 'editable_ws_dialog.title.select': 'Select a working copy',
28056
- 'editable_ws_dialog.title.create': 'Create a working copy',
28057
- 'editable_ws_dialog.title.forbidden': 'No working copy available',
28058
- 'editable_ws_dialog.description.select_or_create': 'To alter content, select or create a working copy first. When you finished editing, publish the working copy or have it published.',
28059
- 'editable_ws_dialog.description.select': 'To alter content, select a working copy first. When you finished editing, publish the working copy or have it published.',
28060
- 'editable_ws_dialog.description.create': 'To alter content, create a working copy first. When you finished editing, publish the working copy or have it published.',
28061
- 'editable_ws_dialog.description.forbidden': 'There is no working copy you could use to alter content. Also, creating working copies has not been enabled for you.',
28186
+ 'editable_ws_dialog.view_mode.title.select_or_create': 'Choose a working copy',
28187
+ 'editable_ws_dialog.view_mode.title.select': 'Select a working copy',
28188
+ 'editable_ws_dialog.view_mode.title.create': 'Create a working copy',
28189
+ 'editable_ws_dialog.view_mode.title.forbidden': 'No working copy available',
28190
+ 'editable_ws_dialog.view_mode.description.select_or_create': 'To alter content, select or create a working copy first. When you finished editing, publish the working copy or have it published.',
28191
+ 'editable_ws_dialog.view_mode.description.select': 'To alter content, select a working copy first. When you finished editing, publish the working copy or have it published.',
28192
+ 'editable_ws_dialog.view_mode.description.create': 'To alter content, create a working copy first. When you finished editing, publish the working copy or have it published.',
28193
+ 'editable_ws_dialog.view_mode.description.forbidden': 'There is no working copy you could use to alter content. Also, creating working copies has not been enabled for you.',
28194
+
28195
+ 'editable_ws_dialog.transfer_changes.title.select_or_create': 'Select target working copy',
28196
+ 'editable_ws_dialog.transfer_changes.title.select': 'Select target working copy',
28197
+ 'editable_ws_dialog.transfer_changes.title.create': 'Create target working copy',
28198
+ 'editable_ws_dialog.transfer_changes.title.forbidden': 'No working copy available',
28199
+ 'editable_ws_dialog.transfer_changes.description.select_or_create': 'The changes can be moved to an existing working copy or to a new one.',
28200
+ 'editable_ws_dialog.transfer_changes.description.select': 'The changes will be moved to the selected working copy.',
28201
+ 'editable_ws_dialog.transfer_changes.description.create': 'Please create the target working copy',
28202
+ 'editable_ws_dialog.transfer_changes.description.forbidden': 'You are not permitted to move changes to one of the available working copies.',
28062
28203
  'editable_ws_dialog.choose_existing': 'Select an existing working copy:',
28063
28204
  'editable_ws_dialog.create_new': 'Create a new working copy:',
28064
28205
  'editable_ws_dialog.or_create_new': 'Or, create a new one:',
@@ -28067,11 +28208,6 @@ $.i18n().load({
28067
28208
 
28068
28209
  'resource_dialog.title': 'Properties of resource "$1"',
28069
28210
 
28070
- 'resource_dialog.commands.revert_obj.title': 'Discard changes to resource',
28071
- 'resource_dialog.commands.revert_obj.new_obj': 'This is a new resource. To discard the creation of this resource, please delete it.',
28072
- 'resource_dialog.commands.revert_obj.not_modified_obj': 'This resource has not been modified. Therefore, nothing can be discarded.',
28073
- 'resource_dialog.commands.revert_obj.dialog.title': 'Really discard changes to this resource?',
28074
-
28075
28211
  'resource_dialog.commands.restore_obj.title': 'Restore resource',
28076
28212
 
28077
28213
  'resource_dialog.commands.mark_resolved_obj.title': 'Override concurrent changes to resource',
@@ -28124,13 +28260,28 @@ $.i18n().load({
28124
28260
  'changes_dialog.modification': 'Change',
28125
28261
  'changes_dialog.rights': 'Publishing permitted',
28126
28262
  'changes_dialog.description_for_editor': 'Title',
28127
- 'changes_dialog.obj_class_name': 'Type',
28263
+ 'changes_dialog.obj_class': 'Type',
28128
28264
  'changes_dialog.last_changed': 'Last change',
28265
+ 'changes_dialog.open_transfer_dialog': 'Move changes',
28266
+
28267
+ 'transfer_changes_dialog.title': 'Select content changes to be moved',
28268
+ 'transfer_changes_dialog.select_transfer_target': 'Select target working copy',
28269
+ 'transfer_changes_dialog.back': 'Back',
28270
+ 'transfer_changes_dialog.modification': 'Change',
28271
+ 'transfer_changes_dialog.rights': 'Publishing permitted',
28272
+ 'transfer_changes_dialog.description_for_editor': 'Title',
28273
+ 'transfer_changes_dialog.obj_class': 'Type',
28274
+ 'transfer_changes_dialog.last_changed': 'Last change',
28275
+
28276
+ 'transfer_errors_dialog.title': 'Errors while moving content changes',
28277
+ 'transfer_errors_dialog.modified': 'Some of the changes could not be moved because the content concerned has also been modified in the target working copy.',
28278
+ 'transfer_errors_dialog.conflicting': 'Some of the changes have not been moved because the respective content in the target working copy is outdated and applying changes to it would cause a conflict. Please make sure that both working copies have been updated and are free of conflicts.',
28129
28279
 
28130
28280
  'current_page_link_dialog.title': 'Share this page',
28131
28281
  'current_page_link_dialog.description': 'Using the URL below, you can share the current page as part of this working copy. The recipients need to be logged in and have access to the working copy.',
28132
28282
 
28133
28283
  'commands.current_page_link.title': 'Share this page',
28284
+ 'commands.current_page_link.is_deleted': 'A deleted page cannot be shared because it is inaccessible in preview mode',
28134
28285
 
28135
28286
  'commands.create_workspace.forbidden': 'You can not create a workspace due to missing user permissions.',
28136
28287
  'commands.create_workspace.title': 'Create working copy',
@@ -28178,13 +28329,17 @@ $.i18n().load({
28178
28329
 
28179
28330
  'commands.revert_obj.title': 'Discard changes to page',
28180
28331
  'commands.revert_obj.published_workspace': 'Since this is the published content, nothing has been modified. Therefore, nothing can be discarded.',
28181
- 'commands.revert_obj.new_obj': 'This is a new page. To discard the creation of this page, please delete it.',
28182
- 'commands.revert_obj.is_binary': 'Discarding changes is not available for binary content.',
28183
- 'commands.revert_obj.not_modified_obj': 'This page has not been modified. Therefore, nothing can be discarded.',
28332
+ 'commands.revert_obj.is_new': 'This is a new page. To discard the creation of this page, please delete it.',
28333
+ 'commands.revert_obj.unmodified': 'This page has not been modified. Therefore, nothing can be discarded.',
28184
28334
  'commands.revert_obj.dialog.title': 'Really discard changes to this page?',
28185
28335
  'commands.revert_obj.dialog.description': 'Discarded changes cannot be restored.',
28186
28336
  'commands.revert_obj.dialog.confirm': 'Discard',
28187
28337
 
28338
+ 'commands.revert_resource.title': 'Discard changes to resource',
28339
+ 'commands.revert_resource.is_new': 'This is a new resource. To discard the creation of this resource, please delete it.',
28340
+ 'commands.revert_resource.dialog.title': 'Really discard changes to this resource?',
28341
+ 'commands.revert_resource.dialog.confirm': 'Discard',
28342
+
28188
28343
  'commands.revert_widget.content_title': 'Discard changes to content',
28189
28344
  'commands.revert_widget.widget_title': 'Discard changes to widget',
28190
28345
  'commands.revert_widget.is_new': 'This is a new widget. To discard the creation of this widget, please delete it.',
@@ -28206,8 +28361,11 @@ $.i18n().load({
28206
28361
  'commands.duplicate_obj.published_workspace': 'Since this is the published content, nothing can be modified.',
28207
28362
  'commands.duplicate_obj.has_children': 'Pages with subpages cannot be duplicated yet.',
28208
28363
 
28209
- 'commands.add_subpage.title': 'Create new page',
28210
- 'commands.add_subpage.tooltip': 'Create page underneath $1',
28364
+ 'commands.create_page.title': 'Create page',
28365
+ 'commands.create_page.published_workspace': 'Since this is the published content, nothing can be modified.',
28366
+
28367
+ 'commands.add_subpage.title': 'Add page',
28368
+ 'commands.add_subpage.tooltip': 'Add page to "$1"',
28211
28369
 
28212
28370
  'commands.copy_page_from_clipboard.title': 'Copy marked page here',
28213
28371
  'commands.copy_page_from_clipboard.paste_forbidden': 'Due to its type, the page cannot be moved or copied here. Only pages of the following types can be inserted here: $1',
@@ -28362,7 +28520,7 @@ var scrivito = {};
28362
28520
  obj.is_edited() ||
28363
28521
  obj.is_new() && !scrivito.editing_context.is_deleted_mode() ||
28364
28522
  obj.is_deleted() && scrivito.editing_context.is_deleted_mode())) {
28365
- scrivito.resource_dialog.open(obj);
28523
+ return scrivito.resource_dialog.open(obj);
28366
28524
  } else {
28367
28525
  var url = scrivito.root_path();
28368
28526
  var params = {};
@@ -28383,7 +28541,7 @@ var scrivito = {};
28383
28541
  url += obj.id();
28384
28542
  if (!_.isEmpty(params)) { url += '?'+$.param(params); }
28385
28543
 
28386
- scrivito.with_saving_overlay(scrivito.redirect_to(url));
28544
+ return scrivito.with_saving_overlay(scrivito.redirect_to(url));
28387
28545
  }
28388
28546
  },
28389
28547
 
@@ -28496,9 +28654,7 @@ var scrivito = {};
28496
28654
 
28497
28655
  on: function(event, callback) {
28498
28656
  if (event === 'load') {
28499
- scrivito.gui.on('open', function() {
28500
- callback();
28501
- });
28657
+ scrivito.gui.on('open', function() { callback(); });
28502
28658
 
28503
28659
  if (scrivito.gui.is_started()) {
28504
28660
  scrivito.run_new_event(function() {
@@ -28506,15 +28662,7 @@ var scrivito = {};
28506
28662
  });
28507
28663
  }
28508
28664
  } else if (event === 'content') {
28509
- scrivito.gui.on('content', function(dom_element) {
28510
- callback(dom_element);
28511
- });
28512
-
28513
- if (scrivito.gui.is_started()) {
28514
- scrivito.run_new_event(function() {
28515
- callback(window.document);
28516
- });
28517
- }
28665
+ scrivito.gui.on('content', function(dom_element) { callback(dom_element); });
28518
28666
  } else {
28519
28667
  $.error('Unknown event "' + event + '"');
28520
28668
  }
@@ -28670,6 +28818,10 @@ var scrivito = {};
28670
28818
  scrivito.browse_content = browse_content;
28671
28819
  },
28672
28820
 
28821
+ register_select_content: function (select_content) {
28822
+ scrivito.select_content = select_content;
28823
+ },
28824
+
28673
28825
  ui_config: function() {
28674
28826
  return scrivito.dom_config.read($('body'), ui_config_attr_name);
28675
28827
  },
@@ -28709,13 +28861,14 @@ var scrivito = {};
28709
28861
  scrivito.menu_bar_saving_indicator.init();
28710
28862
  scrivito.menu_bar_device_toggle.init();
28711
28863
  scrivito.menu_bar_warning.init();
28712
- scrivito.menu_bar_toggle.init();
28864
+ scrivito.menu_bar_display_mode_toggle.init();
28713
28865
  scrivito.current_page_menu.init();
28714
28866
  scrivito.menu_bar_browse_content.init();
28715
28867
  scrivito.menu_bar_conflict_indicator.init();
28716
28868
  scrivito.current_page_restriction.init();
28717
28869
  scrivito.workspace_select.init();
28718
28870
  scrivito.menu_bar.init();
28871
+ scrivito.editor_selection.init();
28719
28872
 
28720
28873
  scrivito.child_list_commands.init();
28721
28874
  scrivito.current_page_commands.init();
@@ -28726,7 +28879,7 @@ var scrivito = {};
28726
28879
  scrivito.widgetlist_field_menu.init();
28727
28880
  scrivito.widget_marker.init();
28728
28881
 
28729
- scrivito.dynamic_menus.init();
28882
+ scrivito.context_menu.init();
28730
28883
  scrivito.external_links.init();
28731
28884
 
28732
28885
  scrivito.widget_reloading.init();
@@ -28913,31 +29066,9 @@ var scrivito = {};
28913
29066
  var is_started = false;
28914
29067
  var callbacks = {};
28915
29068
 
28916
- // The callback has to be function that takes no arguments
28917
- var log_exception_in_callback = function(event_name, callback) {
28918
- if (scrivito.gui.sandbox_callbacks) {
28919
- try {
28920
- callback();
28921
- } catch(exception) {
28922
- var text = "'"+event_name+"' callback threw exception: ";
28923
- scrivito.log_error(text, exception);
28924
- }
28925
- } else {
28926
- callback();
28927
- }
28928
- };
28929
-
28930
- var run_open_callbacks = function() {
28931
- if (callbacks.open) {
28932
- _.each(callbacks.open, function(callback) {
28933
- log_exception_in_callback('open', callback);
28934
- });
28935
- }
28936
-
28937
- if (scrivito.editing_context.is_editing_mode() && callbacks.editing) {
28938
- _.each(callbacks.editing, function(callback) {
28939
- log_exception_in_callback('editing', callback);
28940
- });
29069
+ var run_callbacks = function(name, dom_element) {
29070
+ if (callbacks[name]) {
29071
+ _.each(callbacks[name], function(callback) { callback(dom_element); });
28941
29072
  }
28942
29073
  };
28943
29074
 
@@ -28951,8 +29082,8 @@ var scrivito = {};
28951
29082
  });
28952
29083
 
28953
29084
  $('body').append('<div id="scrivito_editing"></div>');
28954
- run_open_callbacks();
28955
- scrivito.gui.run_content_callbacks(window.document);
29085
+ run_callbacks('open');
29086
+ run_callbacks('content', window.document); // For test purpose only.
28956
29087
 
28957
29088
  is_started = true;
28958
29089
  },
@@ -28963,19 +29094,20 @@ var scrivito = {};
28963
29094
  },
28964
29095
 
28965
29096
  new_content: function(dom_element) {
28966
- scrivito.gui.run_content_callbacks(dom_element);
28967
-
28968
29097
  if (dom_element) {
28969
- var cms_document = scrivito.cms_document.from($(dom_element));
28970
- cms_document.notify_new_content(dom_element);
29098
+ run_callbacks('content', dom_element);
29099
+ var promises = scrivito.cms_document.from($(dom_element)).notify_new_content(dom_element);
29100
+ if (promises.length) {
29101
+ $.when.apply(null, promises)
29102
+ .then(function() { run_callbacks('editors', dom_element); });
29103
+ } else {
29104
+ run_callbacks('editors', dom_element);
29105
+ }
28971
29106
  }
28972
29107
  },
28973
29108
 
28974
29109
  new_document: function(document) {
28975
- _.each(callbacks.document, function(callback) {
28976
- callback(document);
28977
- });
28978
-
29110
+ _.each(callbacks.document, function(callback) { callback(document); });
28979
29111
  document.window().notify_new_document(document);
28980
29112
  },
28981
29113
 
@@ -28983,30 +29115,14 @@ var scrivito = {};
28983
29115
  if (callbacks[event_name] === undefined) {
28984
29116
  callbacks[event_name] = [];
28985
29117
  }
28986
-
28987
29118
  callbacks[event_name].push(callback);
28988
29119
  },
28989
29120
 
28990
- run_content_callbacks: function(dom_element) {
28991
- if (callbacks.content) {
28992
- _.each(callbacks.content, function(callback) {
28993
- if (dom_element) {
28994
- log_exception_in_callback('content', function() {
28995
- callback(dom_element);
28996
- });
28997
- }
28998
- });
28999
- }
29000
- },
29001
-
29002
29121
  // For testing purpose only.
29003
29122
  reset_callbacks: function() {
29004
29123
  callbacks = {};
29005
29124
  },
29006
29125
 
29007
- // For testing purpose only.
29008
- sandbox_callbacks: true,
29009
-
29010
29126
  is_started: function() {
29011
29127
  return is_started;
29012
29128
  }
@@ -29532,6 +29648,12 @@ var scrivito = {};
29532
29648
  });
29533
29649
  },
29534
29650
 
29651
+ // For test purpose only.
29652
+ simulate_changes: function() {
29653
+ scrivito.write_monitor.start_write();
29654
+ scrivito.write_monitor.end_write();
29655
+ },
29656
+
29535
29657
  // For test purpose only.
29536
29658
  reset_callbacks: function() {
29537
29659
  callbacks = {};
@@ -29657,7 +29779,7 @@ var scrivito = {};
29657
29779
  ].concat(commands);
29658
29780
 
29659
29781
  device_toggle.on('click', function() {
29660
- scrivito.static_menus.toggle(device_toggle, commands);
29782
+ scrivito.context_menu.toggle(device_toggle, commands, {css_class: 'device_toggle'});
29661
29783
  return false;
29662
29784
  });
29663
29785
  });
@@ -29695,7 +29817,7 @@ var scrivito = {};
29695
29817
  }());
29696
29818
  (function() {
29697
29819
  _.extend(scrivito, {
29698
- menu_bar_toggle: {
29820
+ menu_bar_display_mode_toggle: {
29699
29821
  init: function() {
29700
29822
  scrivito.menu_bar.register_item_renderer(function(menu_bar) {
29701
29823
  var comparing_mode = scrivito.editing_context.comparing_mode();
@@ -29703,7 +29825,7 @@ var scrivito = {};
29703
29825
  var switch_to_editing_mode_command = scrivito.switch_mode_command('editing');
29704
29826
  var switch_to_comparing_mode_command = scrivito.switch_mode_command(comparing_mode);
29705
29827
 
29706
- var template = scrivito.template.render('menu_bar_toggle', {
29828
+ var template = scrivito.template.render('menu_bar_display_mode_toggle', {
29707
29829
  mode: scrivito.editing_context.display_mode,
29708
29830
  comparing_mode: comparing_mode,
29709
29831
  switch_to_view_mode_command: switch_to_view_mode_command,
@@ -29711,25 +29833,25 @@ var scrivito = {};
29711
29833
  switch_to_comparing_mode_command: switch_to_comparing_mode_command
29712
29834
  });
29713
29835
 
29714
- var menu_bar_toggle = menu_bar.find('#scrivito_menu_bar_toggle').html(template);
29836
+ var menu_bar_display_mode_toggle = menu_bar.find('#scrivito_menu_bar_display_mode_toggle').html(template);
29715
29837
 
29716
29838
  _.each([
29717
29839
  switch_to_view_mode_command,
29718
29840
  switch_to_editing_mode_command,
29719
29841
  switch_to_comparing_mode_command
29720
29842
  ], function(command) {
29721
- menu_bar_toggle.find('.'+command.dom_id()).on('click', function() {
29843
+ menu_bar_display_mode_toggle.find('.'+command.dom_id()).on('click', function() {
29722
29844
  command.execute();
29723
29845
  return false;
29724
29846
  });
29725
29847
  });
29726
29848
 
29727
- menu_bar_toggle.find('.scrivito_comparing_mode_toggle').on('click', function() {
29728
- scrivito.static_menus.toggle($(this), [
29849
+ menu_bar_display_mode_toggle.find('.scrivito_comparing_mode_toggle').on('click', function() {
29850
+ scrivito.context_menu.toggle($(this), [
29729
29851
  scrivito.switch_mode_command('diff'),
29730
29852
  scrivito.switch_mode_command('added'),
29731
29853
  scrivito.switch_mode_command('deleted')
29732
- ], {align: 'left'});
29854
+ ]);
29733
29855
  return false;
29734
29856
  });
29735
29857
  });
@@ -29743,7 +29865,8 @@ var scrivito = {};
29743
29865
  create: function(dom_element, obj, commands) {
29744
29866
  dom_element.append(scrivito.template.render('obj_menu', {obj: obj}));
29745
29867
  dom_element.on('click', function() {
29746
- scrivito.static_menus.toggle(dom_element, _.isFunction(commands) ? commands() : commands);
29868
+ commands = _.isFunction(commands) ? commands() : commands;
29869
+ scrivito.context_menu.toggle(dom_element, commands, {css_class: 'obj_menu'});
29747
29870
  return false;
29748
29871
  });
29749
29872
  }
@@ -29798,7 +29921,9 @@ var scrivito = {};
29798
29921
  .appendTo(menu_bar.find('#scrivito_menu_bar_conflict_indicator'));
29799
29922
  target.show();
29800
29923
  target.find('.scrivito_icon').addClass('scrivito_'+color);
29801
- target.on('click', function() { scrivito.static_menus.toggle(target, commands); });
29924
+ target.on('click', function() {
29925
+ scrivito.context_menu.toggle(target, commands, {css_class: 'conflict_indicator'});
29926
+ });
29802
29927
  };
29803
29928
 
29804
29929
  current_page = scrivito.application_document().page();
@@ -29943,12 +30068,9 @@ var scrivito = {};
29943
30068
  var spinner = workspace_list.find('.scrivito_spinning');
29944
30069
  if (spinner.length && !spinner.attr('data-scrivito-private-loading')) {
29945
30070
  spinner.attr('data-scrivito-private-loading', true);
29946
- scrivito.workspace.editable().then(function(workspaces) {
29947
- var commands = _(workspaces).reject(function(workspace) {
29948
- return workspace.id() === selected_workspace.id();
29949
- }).map(function(workspace) {
29950
- return scrivito.select_workspace_command(workspace);
29951
- });
30071
+ selected_workspace.other_editable().then(function(workspaces) {
30072
+ var commands = _.map(workspaces,
30073
+ function(workspace) { return scrivito.select_workspace_command(workspace); });
29952
30074
 
29953
30075
  workspace_list.replaceWith(scrivito.template.render(
29954
30076
  'workspace_select/other_workspaces', {
@@ -29971,22 +30093,17 @@ var scrivito = {};
29971
30093
  });
29972
30094
  }());
29973
30095
  (function() {
29974
- var dialog;
30096
+ var dialog, promise, transferred;
29975
30097
 
29976
30098
  _.extend(scrivito, {
29977
30099
  changes_dialog: {
29978
30100
  open: function() {
29979
- var promise = $.Deferred();
30101
+ promise = $.Deferred();
30102
+ transferred = [];
29980
30103
  dialog = $(scrivito.template.render('changes_dialog')).appendTo($('#scrivito_editing'));
29981
- open_batch(scrivito.obj_changes());
29982
30104
 
29983
- var close = function() {
29984
- scrivito.dialog.close_without_transition(dialog);
29985
- promise.resolve();
29986
- return false;
29987
- };
30105
+ open_batch(scrivito.obj_changes());
29988
30106
 
29989
- dialog.find('.scrivito_cancel').on('click', close);
29990
30107
  scrivito.dialog.open_and_adjust_without_transition(dialog);
29991
30108
  return scrivito.with_dialog_behaviour(dialog, promise, {escape: close});
29992
30109
  }
@@ -30004,20 +30121,20 @@ var scrivito = {};
30004
30121
  };
30005
30122
 
30006
30123
  var render = function(chainable_search, result, objs, next) {
30007
- var view = dialog.find('.scrivito_changes_dialog_content');
30008
- view.html(scrivito.template.render('changes_dialog/content', {
30124
+ dialog.html(scrivito.template.render('changes_dialog/content', {
30009
30125
  title: scrivito.t('changes_dialog.title', scrivito.editing_context.selected_workspace.title()),
30010
30126
  is_loaded: !!result,
30011
30127
  total: result && result.total,
30012
30128
  objs: objs,
30013
30129
  has_more: !!next
30014
30130
  }));
30015
- scrivito.update_auto_height_for(view);
30016
30131
 
30017
- view.find('[data-scrivito-sort-by="'+chainable_search.query().order+'"]')
30132
+ scrivito.update_auto_height_for(dialog.find('.scrivito_changes_dialog_content'));
30133
+
30134
+ dialog.find('[data-scrivito-sort-by="'+chainable_search.query().order+'"]')
30018
30135
  .addClass('scrivito_'+(chainable_search.query().reverse_order ? 'sort_down' : 'sort_up'));
30019
30136
 
30020
- view.find('[data-scrivito-sort-by]').on('click', function() {
30137
+ dialog.find('[data-scrivito-sort-by]').on('click', function() {
30021
30138
  var sortable = $(this);
30022
30139
  var chainable_search = scrivito.obj_changes();
30023
30140
  chainable_search.order(sortable.attr('data-scrivito-sort-by'));
@@ -30026,23 +30143,155 @@ var scrivito = {};
30026
30143
  return false;
30027
30144
  });
30028
30145
 
30029
- view.find('[data-scrivito-obj-id]').on('click', function() {
30146
+ dialog.find('[data-scrivito-obj-id]').on('click', function() {
30030
30147
  var obj_id = $(this).attr('data-scrivito-obj-id');
30031
- scrivito.open_obj(_.find(objs, function(obj) { return obj.id() === obj_id; }));
30148
+ scrivito.write_monitor.track_changes(function() {
30149
+ return scrivito.open_obj(_.find(objs, function(obj) { return obj.id() === obj_id; }));
30150
+ }, function() { open_batch(chainable_search.clone()); });
30032
30151
  return false;
30033
30152
  });
30034
30153
 
30035
- view.find('.scrivito_load_more').on('click', function() {
30154
+ dialog.find('.scrivito_load_more').on('click', function() {
30036
30155
  open_batch(next, objs);
30037
30156
  return false;
30038
30157
  });
30158
+
30159
+ dialog.find('.scrivito_transfer_changes').on('click', function() {
30160
+ scrivito.transfer_changes_dialog.open(objs).then(function(transferred_objs) {
30161
+ transferred = transferred.concat(_.invoke(transferred_objs, 'id'));
30162
+ if (transferred_objs.length) { open_batch(chainable_search.clone()); }
30163
+ });
30164
+ return false;
30165
+ });
30166
+
30167
+ dialog.find('.scrivito_cancel').on('click', close);
30168
+ };
30169
+
30170
+ var close = function() {
30171
+ scrivito.dialog.close_without_transition(dialog);
30172
+ promise.resolve(transferred);
30173
+ return false;
30039
30174
  };
30040
30175
  }());
30176
+ (function() {
30177
+ _.extend(scrivito, {
30178
+ transfer_changes: function(objs) {
30179
+ var fetch_workspaces = scrivito.editing_context.selected_workspace.other_editable();
30180
+ return scrivito.with_saving_overlay(fetch_workspaces).then(function(workspaces) {
30181
+ var select_workspace = scrivito.editable_workspace_dialog(workspaces, 'transfer_changes');
30182
+ return select_workspace.then(function(workspace_id) {
30183
+ var transfer_modifications = scrivito.obj.transfer_modifications(objs, workspace_id);
30184
+ return scrivito.with_saving_overlay(transfer_modifications).then(function(errors) {
30185
+ if (errors.length) { scrivito.transfer_errors_dialog.open(errors); }
30186
+ return errors;
30187
+ });
30188
+ });
30189
+ });
30190
+ }
30191
+ });
30192
+ })();
30193
+ (function() {
30194
+ var dialog, objs, transferred, promise;
30195
+
30196
+ _.extend(scrivito, {
30197
+ transfer_changes_dialog: {
30198
+ open: function(original_objs) {
30199
+ promise = $.Deferred();
30200
+ objs = _.map(original_objs, function(obj) { return _.extend({}, obj); });
30201
+ transferred = [];
30202
+
30203
+ dialog = $(scrivito.template.render('transfer_changes_dialog'));
30204
+ dialog.appendTo($('#scrivito_editing'));
30205
+ render();
30206
+
30207
+ dialog.find('.scrivito_confirm').on('click', function() {
30208
+ transfer_changes();
30209
+ return false;
30210
+ });
30211
+
30212
+ dialog.find('.scrivito_cancel').on('click', close);
30213
+
30214
+ scrivito.dialog.open_and_adjust_without_transition(dialog);
30215
+ return scrivito.with_dialog_behaviour(dialog, promise, {escape: close});
30216
+ }
30217
+ }
30218
+ });
30219
+
30220
+ var render = function() {
30221
+ var body = dialog.find('.scrivito_modal_body');
30222
+ body.html(scrivito.template.render('transfer_changes_dialog/body', {objs: objs}));
30223
+ scrivito.update_auto_height_for(body);
30224
+
30225
+ dialog.find('[data-scrivito-obj-id]').on('click', function() {
30226
+ toggle($(this));
30227
+ return false;
30228
+ });
30229
+ };
30230
+
30231
+ var toggle = function(dom_element) {
30232
+ dom_element.toggleClass('scrivito_active');
30233
+ var confirm_button = dialog.find('.scrivito_confirm');
30234
+ if (dialog.find('.scrivito_active').length) {
30235
+ confirm_button.removeClass('scrivito_disabled');
30236
+ } else {
30237
+ confirm_button.addClass('scrivito_disabled');
30238
+ }
30239
+ };
30240
+
30241
+ var transfer_changes = function() {
30242
+ _.each(objs, function(obj) {
30243
+ obj.is_selected = dialog.find('[data-scrivito-obj-id='+obj.id()+']').is('.scrivito_active');
30244
+ });
30245
+
30246
+ var selected_objs = _.where(objs, {is_selected: true});
30247
+ if (selected_objs.length) {
30248
+ scrivito.transfer_changes(selected_objs).then(function(errors) {
30249
+ if (errors.length) {
30250
+ var transferred_objs = _.filter(objs, function(obj) {
30251
+ return obj.is_selected && !_.any(errors, function(error) {
30252
+ return error.obj.id() === obj.id();
30253
+ });
30254
+ });
30255
+ transferred = transferred.concat(transferred_objs);
30256
+ objs = _.difference(objs, transferred_objs);
30257
+ render();
30258
+ } else {
30259
+ transferred = transferred.concat(selected_objs);
30260
+ close();
30261
+ }
30262
+ });
30263
+ }
30264
+ };
30265
+
30266
+ var close = function() {
30267
+ scrivito.dialog.close_without_transition(dialog);
30268
+ promise.resolve(transferred);
30269
+ return false;
30270
+ };
30271
+ })();
30272
+ (function() {
30273
+ _.extend(scrivito, {
30274
+ transfer_errors_dialog: {
30275
+ open: function(errors) {
30276
+ scrivito.alert_dialog.open(scrivito.t('transfer_errors_dialog.title'), {
30277
+ body: scrivito.template.render('transfer_errors_dialog', {
30278
+ modified: _.pluck(_.where(errors, {reason: 'modified'}), 'obj'),
30279
+ conflicting: _.pluck(_.where(errors, {reason: 'conflict'}), 'obj')
30280
+ })
30281
+ });
30282
+ }
30283
+ }
30284
+ });
30285
+ })();
30041
30286
  (function() {
30042
30287
  _.extend(scrivito, {
30043
30288
  current_page_link_dialog: function() {
30044
30289
  var workspace_id = scrivito.editing_context.selected_workspace.id();
30045
- var current_page_link = scrivito.editing_context.location({workspace_id: workspace_id});
30290
+ var current_page_link = scrivito.editing_context.location({
30291
+ workspace_id: workspace_id,
30292
+ display_mode: "view"
30293
+ });
30294
+
30046
30295
  var view = $(scrivito.template.render('current_page_link_dialog',
30047
30296
  { current_page_link: current_page_link }));
30048
30297
  var deferred = $.Deferred();
@@ -30112,6 +30361,72 @@ var scrivito = {};
30112
30361
  return scrivito.storage.get(scrivito.obj_class_selection.storage_key) || [];
30113
30362
  };
30114
30363
  }());
30364
+ (function() {
30365
+ var editors = {};
30366
+
30367
+ _.extend(scrivito, {
30368
+ editor_selection: {
30369
+ init: function() {
30370
+ scrivito.gui.on('editors', function(content) {
30371
+ if (scrivito.in_editable_view()) {
30372
+ _.each($(content).find('[data-scrivito-field-type]').addBack(), function(element) {
30373
+ scrivito.editor_selection.activate(element);
30374
+ });
30375
+ }
30376
+ });
30377
+ },
30378
+
30379
+ define: function(name, editor) {
30380
+ editors[name] = editor;
30381
+ },
30382
+
30383
+ activate: function(element) {
30384
+ var selected_editor, is_disabled;
30385
+ var editor_name = $(element).attr('data-scrivito-private-editor');
30386
+
30387
+ if (editor_name && can_edit(editor_name, element)) {
30388
+ selected_editor = editors[editor_name];
30389
+ } else {
30390
+ if (scrivito.select_editor) {
30391
+ scrivito.select_editor(element, {
30392
+ use: function(editor_name) {
30393
+ if (!selected_editor && can_edit(editor_name, element)) {
30394
+ selected_editor = editors[editor_name];
30395
+ }
30396
+ },
30397
+ disable: function() {
30398
+ if (!selected_editor) { is_disabled = true; }
30399
+ }
30400
+ });
30401
+
30402
+ if (is_disabled) { return; }
30403
+ }
30404
+
30405
+ if (!selected_editor && can_edit('default', element)) {
30406
+ selected_editor = editors['default'];
30407
+ }
30408
+ }
30409
+
30410
+ if (selected_editor) {
30411
+ scrivito.run_new_event(function() { selected_editor.activate(element); });
30412
+ }
30413
+ },
30414
+
30415
+ // For test purpose only.
30416
+ reset: function() { editors = {}; }
30417
+ }
30418
+ });
30419
+
30420
+ var can_edit = function(editor_name, element) {
30421
+ var editor = editors[editor_name];
30422
+ if (!editor) { return false; }
30423
+ if (!editor.can_edit) { return true; }
30424
+ try { return editor.can_edit(element); } catch(error) {
30425
+ scrivito.log_error(error);
30426
+ return false;
30427
+ }
30428
+ };
30429
+ }());
30115
30430
  (function() {
30116
30431
  var expando = "scrivito_cms_element";
30117
30432
 
@@ -30138,18 +30453,6 @@ var scrivito = {};
30138
30453
 
30139
30454
  set_menu: function(menu) {
30140
30455
  dom_element.data('scrivito-menu', menu);
30141
- },
30142
-
30143
- enrich_obj_classes_with_recent_and_popular: function(obj_classes_markup) {
30144
- var sorted_all = _.pluck(obj_classes_markup, 'name').sort();
30145
- var popular = _.intersection(scrivito.popular_obj_classes, sorted_all);
30146
- var recent = scrivito.obj_class_selection.recent(sorted_all);
30147
-
30148
- return {
30149
- all: format_obj_classes(sorted_all, obj_classes_markup),
30150
- popular: format_obj_classes(popular, obj_classes_markup),
30151
- recent: format_obj_classes(recent, obj_classes_markup)
30152
- };
30153
30456
  }
30154
30457
  };
30155
30458
 
@@ -30195,17 +30498,6 @@ var scrivito = {};
30195
30498
  }
30196
30499
  }
30197
30500
  });
30198
-
30199
- var format_obj_classes = function(obj_classes, obj_classes_markup) {
30200
- return _.map(obj_classes, function(obj_class) {
30201
- return {
30202
- name: obj_class,
30203
- markup: _.find(obj_classes_markup, function(obj_class_markup) {
30204
- return obj_class_markup.name === obj_class;
30205
- }).markup
30206
- };
30207
- });
30208
- };
30209
30501
  }());
30210
30502
  (function() {
30211
30503
  _.extend(scrivito, {
@@ -30216,7 +30508,7 @@ var scrivito = {};
30216
30508
  scrivito.write_monitor.start_write();
30217
30509
  return upload_to_s3(uploaded_binary, permission).then(function(blob) {
30218
30510
  return activate_upload(obj_id, blob, binary.filename, binary.content_type)
30219
- .then(function() { return blob; });
30511
+ .then(function(blob) { return blob; });
30220
30512
  }).always(function() { scrivito.write_monitor.end_write(); });
30221
30513
  });
30222
30514
  },
@@ -30294,10 +30586,7 @@ var scrivito = {};
30294
30586
  },
30295
30587
 
30296
30588
  fetch_page_class_selection: function() {
30297
- var request_path = 'objs/page_class_selection?' + $.param({parent_path: that.path()});
30298
- return scrivito.ajax('GET', request_path).then(function(obj_classes_markup) {
30299
- return that.enrich_obj_classes_with_recent_and_popular(obj_classes_markup);
30300
- });
30589
+ return scrivito.obj.fetch_page_class_selection({parent_path: that.path()});
30301
30590
  },
30302
30591
 
30303
30592
  allowed_classes: function() {
@@ -30307,7 +30596,6 @@ var scrivito = {};
30307
30596
 
30308
30597
  create_child: function(obj_class) {
30309
30598
  var id = scrivito.random_id();
30310
- scrivito.obj_class_selection.store(obj_class);
30311
30599
  return scrivito.obj.create({
30312
30600
  _id: id,
30313
30601
  _path: that.path() + '/' + id,
@@ -30343,11 +30631,11 @@ var scrivito = {};
30343
30631
  }
30344
30632
  },
30345
30633
 
30346
- is_valid_child_class: function(obj_class_name) {
30634
+ is_valid_child_class: function(obj_class) {
30347
30635
  var allowed_classes = that.allowed_classes();
30348
30636
 
30349
30637
  if (allowed_classes) {
30350
- return _.contains(allowed_classes, obj_class_name);
30638
+ return _.contains(allowed_classes, obj_class);
30351
30639
  } else {
30352
30640
  return true;
30353
30641
  }
@@ -30428,8 +30716,8 @@ var scrivito = {};
30428
30716
  install_public_api: function() {
30429
30717
  local_$().fn.scrivito = scrivito.jquery_plugin;
30430
30718
 
30431
- // @api public
30432
30719
  browser_window.scrivito = _.extend({}, additional_public_api, {
30720
+ // @api public
30433
30721
  on: local_on_function,
30434
30722
  trigger: scrivito.trigger,
30435
30723
  create_obj: scrivito.create_obj,
@@ -30441,7 +30729,10 @@ var scrivito = {};
30441
30729
  default_obj_class_for_content_type: scrivito.default_obj_class_for_content_type,
30442
30730
  upload_binary: scrivito.blob.upload_binary,
30443
30731
  page_menu: function() { return scrivito.page_menu(that); },
30444
- // @api beta
30732
+ define_editor: scrivito.editor_selection.define,
30733
+ select_editor: function(select_editor) { scrivito.select_editor = select_editor; },
30734
+
30735
+ // @api protected
30445
30736
  dialog: function(content, options) {
30446
30737
  var iframe = that.window().iframe();
30447
30738
  return scrivito.custom_dialog(iframe, browser_document, content, options);
@@ -30451,8 +30742,7 @@ var scrivito = {};
30451
30742
  // @api public
30452
30743
  public_getter_setter(browser_window.scrivito, [
30453
30744
  'menu_order',
30454
- 'popular_obj_classes',
30455
- 'select_content' // @api beta
30745
+ 'popular_obj_classes'
30456
30746
  ]);
30457
30747
  },
30458
30748
 
@@ -30477,12 +30767,12 @@ var scrivito = {};
30477
30767
  },
30478
30768
 
30479
30769
  notify_new_content: function(content) {
30480
- if (!connected) { return; }
30481
-
30482
- _.each(content_callbacks, function(callback) {
30770
+ return connected && _.map(content_callbacks, function(callback) {
30771
+ var promise = $.Deferred();
30483
30772
  scrivito.run_new_event(function() {
30484
- callback.apply(this, [content]);
30773
+ try { callback.apply(this, [content]); } finally { promise.resolve(); }
30485
30774
  });
30775
+ return promise;
30486
30776
  });
30487
30777
  },
30488
30778
 
@@ -30643,7 +30933,7 @@ var scrivito = {};
30643
30933
  obj: function() {
30644
30934
  return scrivito.obj.create_instance({
30645
30935
  id: that.dom_element().attr('data-scrivito-private-field-obj-id'),
30646
- obj_class_name: that.dom_element().attr('data-scrivito-field-obj-class')
30936
+ obj_class: that.dom_element().attr('data-scrivito-field-obj-class')
30647
30937
  });
30648
30938
  },
30649
30939
 
@@ -30954,74 +31244,23 @@ var scrivito = {};
30954
31244
 
30955
31245
  return that;
30956
31246
  }
30957
- },
30958
- all: function() {
30959
- return _.map($('[data-scrivito-field-type="html"]'), function(dom_element) {
30960
- return scrivito.cms_element.from_dom_element($(dom_element));
30961
- });
30962
- }
30963
- }
30964
- });
30965
-
30966
- scrivito.cms_element.definitions.push(scrivito.html_field_element);
30967
- }());
30968
- (function() {
30969
- var is_file = function(object) {
30970
- return object &&
30971
- _.isFunction(object.slice) &&
30972
- _.isDate(object.lastModifiedDate) &&
30973
- _.isString(object.name);
30974
- };
30975
-
30976
- var convert_attrs = function(obj_id, attrs) {
30977
- var collected_promises = _.map(attrs, function(value, field_name) {
30978
- if (is_file(value)) {
30979
- return scrivito.blob.create(obj_id, {file: value}).then(function(blob) {
30980
- return [field_name, blob];
30981
- });
30982
- } else if (value && value.is_uploaded_binary) {
30983
- return scrivito.blob.create(obj_id, value).then(function(blob) {
30984
- return [field_name, blob];
30985
- });
30986
- }
30987
- return $.Deferred().resolve([field_name, scrivito.obj.serialize_value(value)]);
30988
- });
30989
-
30990
- return $.when.apply(this, collected_promises).then(function() {
30991
- return _.object(arguments);
30992
- });
30993
- };
30994
-
30995
- var convert_widget_pool = function(obj_id, widget_pool) {
30996
- if (widget_pool) {
30997
- var conversion_promises = _.map(widget_pool, function(attrs, widget_id) {
30998
- return convert_attrs(obj_id, attrs).then(function(converted_attrs) {
30999
- return [widget_id, converted_attrs];
31000
- });
31001
- });
31002
-
31003
- return $.when.apply(this, conversion_promises).then(function() {
31004
- return _.object(arguments);
31005
- });
31006
- } else {
31007
- return $.Deferred().resolve(widget_pool);
31008
- }
31009
- };
31010
-
31011
- var prepare_attrs = function(obj_id, attrs) {
31012
- return convert_widget_pool(obj_id, attrs._widget_pool).then(function(widget_pool) {
31013
- return convert_attrs(obj_id, attrs).then(function(converted_attrs) {
31014
- converted_attrs._widget_pool = widget_pool;
31015
- return converted_attrs;
31016
- });
31017
- });
31018
- };
31247
+ },
31248
+ all: function() {
31249
+ return _.map($('[data-scrivito-field-type="html"]'), function(dom_element) {
31250
+ return scrivito.cms_element.from_dom_element($(dom_element));
31251
+ });
31252
+ }
31253
+ }
31254
+ });
31019
31255
 
31256
+ scrivito.cms_element.definitions.push(scrivito.html_field_element);
31257
+ }());
31258
+ (function() {
31020
31259
  _.extend(scrivito, {
31021
31260
  obj: {
31022
31261
  serialize_value: function(value) {
31023
31262
  if (_.isDate(value)) {
31024
- return moment.utc(value).toISOString();
31263
+ return serialize_date(value);
31025
31264
  } else {
31026
31265
  return value;
31027
31266
  }
@@ -31033,8 +31272,8 @@ var scrivito = {};
31033
31272
  return params.id;
31034
31273
  },
31035
31274
 
31036
- obj_class_name: function() {
31037
- return params.obj_class_name;
31275
+ obj_class: function() {
31276
+ return params.obj_class;
31038
31277
  },
31039
31278
 
31040
31279
  description_for_editor: function() {
@@ -31091,6 +31330,10 @@ var scrivito = {};
31091
31330
  return params.last_changed;
31092
31331
  },
31093
31332
 
31333
+ parent_path: function() {
31334
+ return params.parent_path;
31335
+ },
31336
+
31094
31337
  save: function(attrs) {
31095
31338
  return prepare_attrs(that.id(), attrs).then(function(prepared_attrs) {
31096
31339
  return scrivito.ajax('PUT', 'objs/'+that.id(), {data: {obj: prepared_attrs}});
@@ -31158,6 +31401,11 @@ var scrivito = {};
31158
31401
  });
31159
31402
  },
31160
31403
 
31404
+ transfer_modifications_to: function(workspace_id) {
31405
+ return scrivito.ajax('PUT', 'objs/'+that.id()+'/transfer_modifications',
31406
+ {data: {workspace_id: workspace_id}});
31407
+ },
31408
+
31161
31409
  reload: function() {
31162
31410
  return scrivito.ajax('GET', 'objs/'+that.id()).then(function(data) {
31163
31411
  params.has_conflict = data.has_conflict;
@@ -31187,15 +31435,108 @@ var scrivito = {};
31187
31435
  return that;
31188
31436
  },
31189
31437
 
31438
+ fetch_class_selection: function(path, params) {
31439
+ if (params) { path += '?'+$.param(params); }
31440
+ return scrivito.ajax('GET', path).then(function(selection) {
31441
+ var names = _.pluck(selection, 'name');
31442
+ var recent = scrivito.obj_class_selection.recent(names);
31443
+ var popular = _.intersection(scrivito.popular_obj_classes, names);
31444
+ return {
31445
+ all: _.sortBy(selection, 'name'),
31446
+ recent: _.map(recent, function(name) { return _.findWhere(selection, {name: name}); }),
31447
+ popular: _.map(popular, function(name) { return _.findWhere(selection, {name: name}); })
31448
+ };
31449
+ });
31450
+ },
31451
+
31452
+ fetch_page_class_selection: function(params) {
31453
+ return scrivito.obj.fetch_class_selection('objs/page_class_selection', params);
31454
+ },
31455
+
31190
31456
  create: function(attrs) {
31191
31457
  return prepare_attrs(scrivito.random_id(), attrs).then(function(prepared_attrs) {
31192
31458
  return scrivito.ajax('POST', 'objs', {data: {obj: prepared_attrs}}).then(function(data) {
31459
+ scrivito.obj_class_selection.store(prepared_attrs._obj_class);
31193
31460
  return scrivito.obj.create_instance(data);
31194
31461
  });
31195
31462
  });
31463
+ },
31464
+
31465
+ transfer_modifications: function(objs, workspace_id) {
31466
+ return $.when.apply(null, _.map(objs, function(obj) {
31467
+ return obj.transfer_modifications_to(workspace_id).then(function(result) {
31468
+ if (result.status !== 'success') { return {obj: obj, reason: result.reason}; }
31469
+ });
31470
+ })).then(function() { return $.Deferred().resolve(_.compact(arguments)); });
31196
31471
  }
31197
31472
  }
31198
31473
  });
31474
+
31475
+ var is_file = function(object) {
31476
+ return object &&
31477
+ _.isFunction(object.slice) &&
31478
+ _.isDate(object.lastModifiedDate) &&
31479
+ _.isString(object.name);
31480
+ };
31481
+
31482
+ var format_date_number = function(number) {
31483
+ var string = number.toString();
31484
+ return string.length === 1 ? '0' + string : string;
31485
+ };
31486
+
31487
+ var serialize_date = function(date) {
31488
+ return date.getUTCFullYear().toString() +
31489
+ '-' + format_date_number(date.getUTCMonth() + 1) + // Month numbers are starting at 0.
31490
+ '-' + format_date_number(date.getUTCDate()) +
31491
+ 'T' + format_date_number(date.getUTCHours()) +
31492
+ ':' + format_date_number(date.getUTCMinutes()) +
31493
+ ':' + format_date_number(date.getUTCSeconds()) +
31494
+ 'Z';
31495
+ };
31496
+
31497
+ var convert_attrs = function(obj_id, attrs) {
31498
+ var collected_promises = _.map(attrs, function(value, field_name) {
31499
+ if (is_file(value)) {
31500
+ return scrivito.blob.create(obj_id, {file: value}).then(function(blob) {
31501
+ return [field_name, blob];
31502
+ });
31503
+ } else if (value && value.is_uploaded_binary) {
31504
+ return scrivito.blob.create(obj_id, value).then(function(blob) {
31505
+ return [field_name, blob];
31506
+ });
31507
+ }
31508
+ return $.Deferred().resolve([field_name, scrivito.obj.serialize_value(value)]);
31509
+ });
31510
+
31511
+ return $.when.apply(this, collected_promises).then(function() {
31512
+ return _.object(arguments);
31513
+ });
31514
+ };
31515
+
31516
+ var convert_widget_pool = function(obj_id, widget_pool) {
31517
+ if (widget_pool) {
31518
+ var conversion_promises = _.map(widget_pool, function(attrs, widget_id) {
31519
+ return convert_attrs(obj_id, attrs).then(function(converted_attrs) {
31520
+ return [widget_id, converted_attrs];
31521
+ });
31522
+ });
31523
+
31524
+ return $.when.apply(this, conversion_promises).then(function() {
31525
+ return _.object(arguments);
31526
+ });
31527
+ } else {
31528
+ return $.Deferred().resolve(widget_pool);
31529
+ }
31530
+ };
31531
+
31532
+ var prepare_attrs = function(obj_id, attrs) {
31533
+ return convert_widget_pool(obj_id, attrs._widget_pool).then(function(widget_pool) {
31534
+ return convert_attrs(obj_id, attrs).then(function(converted_attrs) {
31535
+ converted_attrs._widget_pool = widget_pool;
31536
+ return converted_attrs;
31537
+ });
31538
+ });
31539
+ };
31199
31540
  }());
31200
31541
  (function() {
31201
31542
  _.extend(scrivito, {
@@ -31245,13 +31586,20 @@ var scrivito = {};
31245
31586
  _.extend(scrivito, {
31246
31587
  chainable_search: {
31247
31588
  create_instance: function(build_query) {
31248
- var query = build_query || {predicates: []};
31589
+ var query = build_query || { predicates: [] };
31249
31590
 
31250
31591
  var add_predicate = function(field, operator, value, boost, negate) {
31592
+ var serialized_value;
31593
+ if (_.isArray(value)) {
31594
+ serialized_value = _.map(value, scrivito.obj.serialize_value);
31595
+ } else {
31596
+ serialized_value = scrivito.obj.serialize_value(value);
31597
+ }
31598
+
31251
31599
  var new_query = {
31252
31600
  field: field,
31253
31601
  operator: operator,
31254
- value: serialize_values(value)
31602
+ value: serialized_value
31255
31603
  };
31256
31604
 
31257
31605
  if (negate) {
@@ -31376,34 +31724,6 @@ var scrivito = {};
31376
31724
 
31377
31725
  });
31378
31726
 
31379
- var serialize_values = function(values) {
31380
- if (!_.isArray(values)) {
31381
- values = [values];
31382
- }
31383
-
31384
- return _.map(values, function(value) {
31385
- return [type_of_value(value), convert_value(value)];
31386
- });
31387
- };
31388
-
31389
- var convert_value = function(value) {
31390
- var serialized_value = scrivito.obj.serialize_value(value);
31391
-
31392
- if (serialized_value === null) {
31393
- return serialized_value;
31394
- } else {
31395
- return String(serialized_value);
31396
- }
31397
- };
31398
-
31399
- var type_of_value = function(value) {
31400
- if (_.isDate(value)) {
31401
- return 'date';
31402
- } else {
31403
- return 'string';
31404
- }
31405
- };
31406
-
31407
31727
  }());
31408
31728
 
31409
31729
  (function() {
@@ -31729,15 +32049,9 @@ var scrivito = {};
31729
32049
 
31730
32050
  fetch_widget_class_selection: function() {
31731
32051
  var params = {field_name: that.field_name()};
31732
- if (that.widget()) {
31733
- params.widget_id = that.widget().id();
31734
- }
31735
- var request_path = 'objs/' + that.obj().id() + '/widget_class_selection?' +
31736
- $.param(params);
31737
-
31738
- return scrivito.ajax('GET', request_path).then(function(obj_classes_markup) {
31739
- return that.enrich_obj_classes_with_recent_and_popular(obj_classes_markup);
31740
- });
32052
+ if (that.widget()) { params.widget_id = that.widget().id(); }
32053
+ return scrivito.obj.fetch_class_selection(
32054
+ 'objs/'+that.obj().id()+'/widget_class_selection', params);
31741
32055
  },
31742
32056
 
31743
32057
  allowed_classes: function() {
@@ -31882,7 +32196,8 @@ var scrivito = {};
31882
32196
  },
31883
32197
 
31884
32198
  check_and_publish: function() {
31885
- return check_and_publish(0);
32199
+ var maximum_check_duration_in_ms = 20000;
32200
+ return check_and_publish(Date.now() + maximum_check_duration_in_ms);
31886
32201
  },
31887
32202
 
31888
32203
  publish: function(certificates) {
@@ -31926,27 +32241,35 @@ var scrivito = {};
31926
32241
 
31927
32242
  is_accessible: function() {
31928
32243
  return data.id === 'published' || data.is_accessible;
32244
+ },
32245
+
32246
+ other_editable: function() {
32247
+ return scrivito.workspace.editable().then(function(workspaces) {
32248
+ return _.reject(workspaces, function(workspace) {
32249
+ return workspace.id() === that.id();
32250
+ });
32251
+ });
31929
32252
  }
31930
32253
  };
31931
32254
 
31932
- var check_and_publish = function(number_of_retries) {
31933
- return rebase_outdated().then(function() {
32255
+ var check_and_publish = function(retry_until_in_ms) {
32256
+ if (that.is_outdated()) {
32257
+ return that.rebase().then(function() {
32258
+ return that.check_and_publish();
32259
+ });
32260
+ } else {
31934
32261
  return that.check().then(function(certificates) {
31935
32262
  if (certificates) {
31936
32263
  return that.publish(certificates).then(null, function(error) {
31937
- return handle_check_and_publish_error(error, number_of_retries);
32264
+ return handle_check_and_publish_error(error, retry_until_in_ms);
31938
32265
  });
31939
32266
  } else {
31940
32267
  return $.Deferred().reject({type: 'check_failed'});
31941
32268
  }
31942
32269
  }, function(error) {
31943
- return handle_check_and_publish_error(error, number_of_retries);
32270
+ return handle_check_and_publish_error(error, retry_until_in_ms);
31944
32271
  });
31945
- });
31946
- };
31947
-
31948
- var rebase_outdated = function() {
31949
- return that.is_outdated() ? that.rebase() : $.Deferred().resolve();
32272
+ }
31950
32273
  };
31951
32274
 
31952
32275
  var check = function(offset) {
@@ -31970,17 +32293,21 @@ var scrivito = {};
31970
32293
  }
31971
32294
  };
31972
32295
 
31973
- var handle_check_and_publish_error = function(error, number_of_retries) {
32296
+ var handle_check_and_publish_error = function(error, retry_until_in_ms) {
31974
32297
  if (error.code === 'precondition_not_verifiable.workspace.publish.content_state_id') {
31975
32298
  // Another workspace has been published since last check.
31976
32299
  that.mark_as_outdated();
31977
- return check_and_publish(number_of_retries);
32300
+ return that.check_and_publish();
31978
32301
  } else if (error.code === 'precondition_not_met.workspace.publish.content_state_id') {
31979
32302
  // The workspace has been changed since last check.
31980
- if (number_of_retries === 2) {
32303
+ if (Date.now() > retry_until_in_ms) {
32304
+ // retried check_and_publish for too long.
31981
32305
  return $.Deferred().reject({type: 'outdated_certificates'});
31982
32306
  } else {
31983
- return check_and_publish(number_of_retries + 1);
32307
+ // retry again
32308
+ return scrivito.wait(1).then(function() {
32309
+ return check_and_publish(retry_until_in_ms);
32310
+ });
31984
32311
  }
31985
32312
  } else {
31986
32313
  scrivito.display_ajax_error(error);
@@ -32341,7 +32668,9 @@ var scrivito = {};
32341
32668
  remove_all: function() {
32342
32669
  $('.scrivito_saving_overlay').remove();
32343
32670
  view = null;
32344
- }
32671
+ },
32672
+
32673
+ is_present: function() { return !!view; }
32345
32674
  }
32346
32675
  });
32347
32676
 
@@ -32655,7 +32984,7 @@ var scrivito = {};
32655
32984
  view.on('click', '.scrivito_obj_class_thumbnail', function(e) {
32656
32985
  e.preventDefault();
32657
32986
  scrivito.dialog.close_without_transition(view);
32658
- deferred.resolve($(this).attr('data-scrivito-private-obj-class-name'));
32987
+ deferred.resolve($(this).attr('data-scrivito-private-obj-class'));
32659
32988
  });
32660
32989
  });
32661
32990
 
@@ -32725,121 +33054,105 @@ var scrivito = {};
32725
33054
  });
32726
33055
  }());
32727
33056
  (function() {
32728
- _.extend(scrivito, {
32729
- menus: {
32730
- open: function(dom_element, commands, options) {
32731
- var menu = $(scrivito.template.render('menu', _.extend(options || {}, {
32732
- menu_items: _.map(scrivito.pattern_sort(commands, scrivito.menu_order), function(command) {
32733
- return scrivito.menu_item.create_instance(command);
32734
- })
32735
- })));
32736
-
32737
- menu.find('.scrivito_menu_box_overlay').on('click', function() {
32738
- menu.data('scrivito-menu-close')();
32739
- return false;
32740
- });
32741
-
32742
- dom_element.data('scrivito-menu-dom', menu);
32743
-
32744
- menu.data('scrivito-menu-close', function() {
32745
- dom_element.removeData('scrivito-menu-dom');
32746
- menu.fadeOut(500, function() { menu.remove(); });
32747
- });
32748
-
32749
- _.each(commands, function(command) {
32750
- if (command.dom_id) {
32751
- menu.on('click', '.'+command.dom_id(), function() {
32752
- if (command.is_enabled()) {
32753
- menu.data('scrivito-menu-close')();
32754
- }
32755
- command.execute();
32756
- return false;
32757
- });
32758
- }
32759
- });
32760
-
32761
- return menu;
32762
- },
33057
+ var menu;
32763
33058
 
32764
- toggle: function(dom_element, open) {
32765
- var menu = dom_element.data('scrivito-menu-dom');
32766
- if (menu) {
32767
- menu.data('scrivito-menu-close')();
32768
- } else {
32769
- open();
32770
- }
32771
- }
32772
- }
32773
- });
32774
- }());
32775
- (function() {
32776
33059
  _.extend(scrivito, {
32777
- dynamic_menus: {
33060
+ context_menu: {
32778
33061
  init: function() {
32779
33062
  scrivito.gui.on('document', function(cms_document) {
32780
33063
  var browser_window = $(cms_document.browser_window());
32781
- var dom_element = cms_document.dom_element();
32782
33064
  _.each(['resize', 'scroll', 'load'], function(event) {
32783
- browser_window.on(event, function() { scrivito.dynamic_menus.update_positions(); });
33065
+ browser_window.on(event, function() { scrivito.context_menu.update_position(); });
32784
33066
  });
32785
33067
  });
32786
33068
  },
32787
33069
 
32788
- open: function(dom_element, commands, options) {
32789
- var menu = scrivito.menus.open(dom_element, commands, options);
32790
-
32791
- var anchor = (options || {}).anchor;
32792
- if (anchor) {
32793
- menu.addClass('scrivito_precise_offset');
33070
+ toggle: function(dom_element, commands, options) {
33071
+ if (menu) {
33072
+ close();
33073
+ } else {
33074
+ open(dom_element, commands, options || {});
32794
33075
  }
32795
-
32796
- menu.data('scrivito-menu-update-position', function() {
32797
- var offset = scrivito.cms_document.offset(dom_element);
32798
- if (anchor) {
32799
- offset.left += anchor.x * dom_element.width();
32800
- offset.top += anchor.y * dom_element.height();
32801
- }
32802
- menu.offset(offset);
32803
- });
32804
-
32805
- menu.appendTo($('#scrivito_editing'));
32806
- menu.data('scrivito-menu-update-position')(); // Bugfix IE: can't set offset before append.
32807
- menu.find('.scrivito_menu_box').fadeIn(500);
32808
33076
  },
32809
33077
 
32810
- toggle: function(dom_element, commands, options) {
32811
- scrivito.menus.toggle(dom_element, function() {
32812
- scrivito.dynamic_menus.open(dom_element, commands, options);
32813
- });
32814
- },
33078
+ update_position: function() { if (menu) { menu.update_position(); } },
32815
33079
 
32816
- update_positions: function() {
32817
- _.each($('.scrivito_editing_marker_menu'), function(menu) {
32818
- var update_position = $(menu).data('scrivito-menu-update-position');
32819
- if (update_position) {
32820
- update_position();
32821
- }
32822
- });
32823
- }
33080
+ close: function() { if (menu) { close(); } }
32824
33081
  }
32825
33082
  });
32826
- }());
32827
- (function() {
32828
- _.extend(scrivito, {
32829
- static_menus: {
32830
- open: function(dom_element, commands, options) {
32831
- var menu = scrivito.menus.open(dom_element, commands, options);
32832
- menu.appendTo(dom_element);
32833
- menu.find('.scrivito_menu_box').fadeIn(500);
32834
- },
32835
33083
 
32836
- toggle: function(dom_element, commands, options) {
32837
- scrivito.menus.toggle(dom_element, function() {
32838
- scrivito.static_menus.open(dom_element, commands, options);
33084
+ var open = function(dom_element, commands, options) {
33085
+ menu = render(commands);
33086
+ setup_commands(commands);
33087
+ setup_update(dom_element, options.anchor);
33088
+ setup_close(dom_element);
33089
+ show(dom_element, options.css_class);
33090
+ };
33091
+
33092
+ var close = function() {
33093
+ menu.remove();
33094
+ menu = null;
33095
+ return false;
33096
+ };
33097
+
33098
+ var render = function(commands) {
33099
+ return $(scrivito.template.render('menu', {
33100
+ menu_items: _.map(scrivito.pattern_sort(commands, scrivito.menu_order), function(command) {
33101
+ return scrivito.menu_item.create_instance(command);
33102
+ })
33103
+ }));
33104
+ };
33105
+
33106
+ var setup_commands = function(commands) {
33107
+ _.each(commands, function(command) {
33108
+ if (command.dom_id) {
33109
+ menu.on('click', '.'+command.dom_id(), function() {
33110
+ if (command.is_enabled()) { close(); }
33111
+ command.execute();
33112
+ return false;
32839
33113
  });
32840
33114
  }
33115
+ });
33116
+ };
33117
+
33118
+ var setup_update = function(dom_element, anchor) {
33119
+ menu.update_position = function() {
33120
+ var offset = scrivito.cms_document.offset(dom_element);
33121
+ if (anchor) {
33122
+ offset.left += anchor.x * dom_element.width();
33123
+ offset.top += anchor.y * dom_element.height();
33124
+ }
33125
+ menu.offset(offset);
33126
+ };
33127
+
33128
+ if (anchor) { menu.addClass('scrivito_precise_offset'); }
33129
+ };
33130
+
33131
+ var setup_close = function(dom_element) {
33132
+ menu.find('.scrivito_menu_box_overlay').on('click', close);
33133
+ };
33134
+
33135
+ var show = function(dom_element, css_class) {
33136
+ var box = menu.find('.scrivito_menu_box');
33137
+
33138
+ if (css_class) { box.addClass('scrivito_'+css_class); }
33139
+
33140
+ menu.appendTo($('#scrivito_editing'));
33141
+ menu.update_position(); // Bugfix IE: can't set offset before append.
33142
+
33143
+ var viewport = $(scrivito.application_window.browser_window());
33144
+
33145
+ if (dom_element.offset().left + box.width() > viewport.scrollLeft() + viewport.width()) {
33146
+ box.addClass('scrivito_left');
32841
33147
  }
32842
- });
33148
+
33149
+ if (dom_element.offset().top + box.height() > viewport.scrollTop() + viewport.height() &&
33150
+ (dom_element.offset().top - viewport.scrollTop()) > box.height()) {
33151
+ box.addClass('scrivito_top');
33152
+ }
33153
+
33154
+ box.fadeIn(500);
33155
+ };
32843
33156
  }());
32844
33157
  (function() {
32845
33158
  var callbacks = [];
@@ -32860,7 +33173,7 @@ var scrivito = {};
32860
33173
  if (!scrivito.editing_context.is_view_mode()) {
32861
33174
  root_element.find('.scrivito_editing_marker').remove();
32862
33175
  _.each(callbacks, function(callback) { callback(builder, root_element); });
32863
- scrivito.dynamic_menus.update_positions();
33176
+ scrivito.context_menu.update_position();
32864
33177
  }
32865
33178
  },
32866
33179
 
@@ -32941,7 +33254,7 @@ var scrivito = {};
32941
33254
  if (scrivito.is_development_mode) {
32942
33255
  warn_overlapping(marker.get(0));
32943
33256
  }
32944
- scrivito.dynamic_menus.toggle(marker, cms_element.menu());
33257
+ scrivito.context_menu.toggle(marker, cms_element.menu());
32945
33258
  return false;
32946
33259
  });
32947
33260
 
@@ -32999,9 +33312,9 @@ var scrivito = {};
32999
33312
  },
33000
33313
 
33001
33314
  open: function(obj, return_to) {
33002
- var title = scrivito.t('resource_dialog.title', obj.obj_class_name());
33315
+ var title = scrivito.t('resource_dialog.title', obj.obj_class());
33003
33316
  return scrivito.details_dialog.open(obj.details_src(), title, obj, [
33004
- scrivito.revert_obj_command(obj, 'resource_dialog.commands.revert_obj'),
33317
+ scrivito.revert_resource_command(obj),
33005
33318
  scrivito.restore_obj_command(obj, 'resource_dialog.commands.restore_obj'),
33006
33319
  scrivito.mark_resolved_obj_command(obj, 'resource_dialog.commands.mark_resolved_obj'),
33007
33320
  scrivito.delete_obj_command(obj, 'resource_dialog.commands.delete_obj',
@@ -33292,8 +33605,8 @@ var scrivito = {};
33292
33605
  },
33293
33606
 
33294
33607
  disabled: function() {
33295
- var obj_class_name = scrivito.obj_clipboard.obj().obj_class_name();
33296
- if (!child_list_element.is_valid_child_class(obj_class_name)) {
33608
+ var obj_class = scrivito.obj_clipboard.obj().obj_class();
33609
+ if (!child_list_element.is_valid_child_class(obj_class)) {
33297
33610
  return scrivito.t('commands.copy_page_from_clipboard.paste_forbidden',
33298
33611
  child_list_element.allowed_classes().join(', '));
33299
33612
  }
@@ -33364,6 +33677,36 @@ var scrivito = {};
33364
33677
  }
33365
33678
  });
33366
33679
  }());
33680
+ (function() {
33681
+ _.extend(scrivito, {
33682
+ create_page_command: function() {
33683
+ return scrivito.command.create_instance({
33684
+ id: 'scrivito.sdk.create_page',
33685
+ title: scrivito.t('commands.create_page.title'),
33686
+ icon: '&#xf022;',
33687
+
33688
+ present: function() { return !scrivito.editing_context.is_deleted_mode(); },
33689
+
33690
+ disabled: function() {
33691
+ if (!scrivito.editing_context.selected_workspace.is_editable()) {
33692
+ return scrivito.t('commands.create_page.published_workspace');
33693
+ }
33694
+ },
33695
+
33696
+ execute: function() {
33697
+ var class_selection = scrivito.obj.fetch_page_class_selection();
33698
+ var choose_obj_class = scrivito.choose_obj_class_dialog(class_selection, 'create_page');
33699
+ return choose_obj_class.then(function(obj_class) {
33700
+ var create_page = scrivito.obj.create({_obj_class: obj_class});
33701
+ return scrivito.with_saving_overlay(create_page).then(function(page) {
33702
+ return scrivito.application_window.redirect_to('/' + page.id());
33703
+ });
33704
+ });
33705
+ }
33706
+ });
33707
+ }
33708
+ });
33709
+ }());
33367
33710
  (function() {
33368
33711
  _.extend(scrivito, {
33369
33712
  create_widget_command: function(cms_element, position) {
@@ -33443,6 +33786,12 @@ var scrivito = {};
33443
33786
  id: 'scrivito.sdk.current_page_link',
33444
33787
  icon: 'scrivito_icon_link',
33445
33788
  title: scrivito.t('commands.current_page_link.title'),
33789
+
33790
+ disabled: function() {
33791
+ if (scrivito.application_document().page().is_deleted()) {
33792
+ return scrivito.t('commands.current_page_link.is_deleted');
33793
+ }
33794
+ },
33446
33795
  execute: function() { scrivito.current_page_link_dialog(); }
33447
33796
  });
33448
33797
  }
@@ -33639,8 +33988,8 @@ var scrivito = {};
33639
33988
  },
33640
33989
 
33641
33990
  disabled: function() {
33642
- var obj_class_name = scrivito.obj_clipboard.obj().obj_class_name();
33643
- if (!child_list_element.is_valid_child_class(obj_class_name)) {
33991
+ var obj_class = scrivito.obj_clipboard.obj().obj_class();
33992
+ if (!child_list_element.is_valid_child_class(obj_class)) {
33644
33993
  return scrivito.t('commands.move_page_from_clipboard.paste_forbidden',
33645
33994
  child_list_element.allowed_classes().join(', '));
33646
33995
  }
@@ -33684,7 +34033,7 @@ var scrivito = {};
33684
34033
  }
33685
34034
  return scrivito.write_monitor.track_changes(function() {
33686
34035
  return scrivito.details_dialog.open(obj.details_src(),
33687
- scrivito.t(title_locale, obj.obj_class_name()));
34036
+ scrivito.t(title_locale, obj.obj_class()));
33688
34037
  }, function() {
33689
34038
  scrivito.application_window.redirect_to('/' + obj.id());
33690
34039
  });
@@ -33866,45 +34215,71 @@ var scrivito = {};
33866
34215
  }());
33867
34216
  (function() {
33868
34217
  _.extend(scrivito, {
33869
- revert_obj_command: function(obj, translations_namespace) {
33870
- if (!translations_namespace) {
33871
- translations_namespace = 'commands.revert_obj';
33872
- }
33873
-
34218
+ revert_obj_command: function(obj) {
33874
34219
  return scrivito.command.create_instance({
33875
34220
  id: 'scrivito.sdk.revert_obj',
33876
- title: scrivito.t(translations_namespace + '.title'),
34221
+ title: scrivito.t('commands.revert_obj.title'),
33877
34222
  icon: '&#xf032;',
33878
34223
 
33879
34224
  present: function() {
33880
34225
  return scrivito.editing_context.selected_workspace.is_editable() &&
33881
- obj && !obj.is_deleted();
34226
+ obj && !obj.is_deleted();
33882
34227
  },
33883
34228
 
33884
34229
  disabled: function() {
33885
- if (!obj.modification()) {
33886
- return scrivito.t(translations_namespace + '.not_modified_obj');
33887
- }
33888
- if (obj.is_new()) {
33889
- return scrivito.t(translations_namespace + '.new_obj');
33890
- }
34230
+ if (!obj.modification()) { return scrivito.t('commands.revert_obj.unmodified'); }
34231
+ if (obj.is_new()) { return scrivito.t('commands.revert_obj.is_new'); }
33891
34232
  },
33892
34233
 
33893
- update: function() {
33894
- return obj.reload();
33895
- },
34234
+ update: function() { return obj.reload(); },
33896
34235
 
33897
34236
  execute: function() {
33898
34237
  return scrivito.confirmation_dialog({
33899
- title: scrivito.t(translations_namespace + '.dialog.title'),
34238
+ title: scrivito.t('commands.revert_obj.dialog.title'),
33900
34239
  description: scrivito.t('commands.revert_obj.dialog.description'),
33901
34240
  icon: '&#xf032;',
33902
34241
  color: 'red',
33903
34242
  confirm_button_text: scrivito.t('commands.revert_obj.dialog.confirm'),
33904
34243
  confirm_button_color: 'red'
34244
+ }).then(function() {
34245
+ return scrivito.with_saving_overlay(obj.revert())
34246
+ .then(function() { scrivito.application_window.reload(); });
34247
+ });
34248
+ }
34249
+ });
34250
+ }
34251
+ });
34252
+ }());
34253
+ (function() {
34254
+ _.extend(scrivito, {
34255
+ revert_resource_command: function(obj) {
34256
+ return scrivito.command.create_instance({
34257
+ id: 'scrivito.sdk.revert_resource',
34258
+ title: scrivito.t('commands.revert_resource.title'),
34259
+ icon: '&#xf032;',
34260
+
34261
+ present: function() {
34262
+ return scrivito.editing_context.selected_workspace.is_editable() && !obj.is_deleted();
34263
+ },
34264
+
34265
+ disabled: function() {
34266
+ if (obj.is_new()) { return scrivito.t('commands.revert_resource.is_new'); }
34267
+ },
34268
+
34269
+ update: function() { return obj.reload(); },
34270
+
34271
+ execute: function() {
34272
+ return scrivito.confirmation_dialog({
34273
+ title: scrivito.t('commands.revert_resource.dialog.title'),
34274
+ description: scrivito.t('commands.revert_resource.dialog.description'),
34275
+ icon: '&#xf032;',
34276
+ color: 'red',
34277
+ confirm_button_text: scrivito.t('commands.revert_resource.dialog.confirm'),
34278
+ confirm_button_color: 'red'
33905
34279
  }).then(function() {
33906
34280
  return scrivito.with_saving_overlay(obj.revert()).then(function() {
33907
34281
  scrivito.application_window.reload();
34282
+ scrivito.cms_window.from($('iframe[name=scrivito_details_dialog]')).reload();
33908
34283
  });
33909
34284
  });
33910
34285
  }
@@ -34097,7 +34472,7 @@ var scrivito = {};
34097
34472
  execute: function() {
34098
34473
  if (mode !== 'view' && !scrivito.editing_context.selected_workspace.is_editable()) {
34099
34474
  scrivito.with_saving_overlay(scrivito.workspace.editable()).then(function(workspaces) {
34100
- scrivito.editable_workspace_dialog(workspaces).then(function(workspace_id) {
34475
+ scrivito.editable_workspace_dialog(workspaces, 'view_mode').then(function(workspace_id) {
34101
34476
  redirect_to(mode, workspace_id);
34102
34477
  });
34103
34478
  });
@@ -34159,7 +34534,16 @@ var scrivito = {};
34159
34534
  icon: '&#xf080;',
34160
34535
 
34161
34536
  execute: function() {
34162
- scrivito.changes_dialog.open();
34537
+ scrivito.changes_dialog.open().then(function(transferred_obj_ids) {
34538
+ var page = scrivito.application_document().page();
34539
+ if (transferred_obj_ids.length) {
34540
+ if (_.contains(transferred_obj_ids, page.id()) && page.is_new()) {
34541
+ scrivito.redirect_to(page.parent_path() || '/');
34542
+ } else {
34543
+ scrivito.reload();
34544
+ }
34545
+ }
34546
+ });
34163
34547
  }
34164
34548
  });
34165
34549
  }
@@ -34222,6 +34606,7 @@ var scrivito = {};
34222
34606
  var current_page = cms_document.page();
34223
34607
  if (current_page) {
34224
34608
  cms_document.set_menu([
34609
+ scrivito.create_page_command(),
34225
34610
  scrivito.obj_details_command(current_page),
34226
34611
  scrivito.current_page_link_command(),
34227
34612
  create_command_separator(1),
@@ -34347,7 +34732,7 @@ var scrivito = {};
34347
34732
  x: relative_offset.left / container.width(),
34348
34733
  y: relative_offset.top / container.height()
34349
34734
  };
34350
- scrivito.dynamic_menus.toggle(container, widgetlist_field_element.menu(), {anchor: anchor});
34735
+ scrivito.context_menu.toggle(container, widgetlist_field_element.menu(), {anchor: anchor});
34351
34736
 
34352
34737
  return false;
34353
34738
  });
@@ -34721,22 +35106,18 @@ var scrivito = {};
34721
35106
  (function() {
34722
35107
  _.extend(scrivito, {
34723
35108
  hotkeys: {
34724
- add_actions_while: function(promise, key_map) {
34725
- var key_actions = {
34726
- 13: key_map.enter, // enter key
34727
- 27: key_map.escape // escape key
34728
- };
35109
+ add: function(promise, key_map) {
35110
+ var key_actions = {13: key_map.enter, 27: key_map.escape};
34729
35111
 
34730
- $(document).on('keyup.scrivito_hotkeys_add_actions_while', function(e) {
35112
+ $(document).on('keyup.scrivito_hotkeys', function(e) {
35113
+ if (scrivito.saving_overlay.is_present()) { return; }
34731
35114
  if (key_actions[e.keyCode]) {
34732
35115
  e.preventDefault();
34733
35116
  key_actions[e.keyCode](e);
34734
35117
  }
34735
35118
  });
34736
35119
 
34737
- return promise.always(function() {
34738
- $(document).off('keyup.scrivito_hotkeys_add_actions_while');
34739
- });
35120
+ return promise.always(function() { $(document).off('keyup.scrivito_hotkeys'); });
34740
35121
  }
34741
35122
  }
34742
35123
  });
@@ -34744,22 +35125,25 @@ var scrivito = {};
34744
35125
  (function() {
34745
35126
  _.extend(scrivito, {
34746
35127
  with_dialog_behaviour: function(dom_element, promise, key_map) {
34747
- return scrivito.with_dialog_overlay(dom_element,
34748
- scrivito.hotkeys.add_actions_while(promise, key_map));
35128
+ return scrivito.with_dialog_overlay(dom_element, scrivito.hotkeys.add(promise, key_map));
34749
35129
  }
34750
35130
  });
34751
35131
  }());
34752
35132
  (function() {
34753
35133
  _.extend(scrivito, {
34754
- editable_workspace_dialog: function(workspaces) {
35134
+ editable_workspace_dialog: function(workspaces, locale_path) {
34755
35135
  var can_select = workspaces.length;
34756
35136
  var can_create = scrivito.user_permissions.can('create_workspace');
34757
35137
 
35138
+ var locale_prefix = 'editable_ws_dialog.' + locale_path;
35139
+
34758
35140
  var view = $(scrivito.template.render('editable_workspace_dialog', {
34759
35141
  workspaces: workspaces,
34760
35142
  can_select: can_select,
34761
35143
  can_create: can_create,
34762
- can_select_or_create: can_select || can_create
35144
+ can_select_or_create: can_select || can_create,
35145
+ title: translate_prefix(locale_prefix + '.title', can_select, can_create),
35146
+ description: translate_prefix(locale_prefix + '.description', can_select, can_create)
34763
35147
  }));
34764
35148
 
34765
35149
  $('#scrivito_editing').append(view);
@@ -34830,6 +35214,18 @@ var scrivito = {};
34830
35214
  });
34831
35215
  }
34832
35216
  });
35217
+
35218
+ var translate_prefix = function(prefix, can_select, can_create) {
35219
+ if (can_select && can_create) {
35220
+ return scrivito.t(prefix + '.select_or_create');
35221
+ } else if (can_select) {
35222
+ return scrivito.t(prefix + '.select');
35223
+ } else if (can_create) {
35224
+ return scrivito.t(prefix + '.create');
35225
+ } else {
35226
+ return scrivito.t(prefix + '.forbidden');
35227
+ }
35228
+ };
34833
35229
  }());
34834
35230
  (function() {
34835
35231
  _.extend(scrivito, {
@@ -34978,7 +35374,7 @@ var scrivito = {};
34978
35374
 
34979
35375
  obj: function() {
34980
35376
  var data = stored_data();
34981
- return scrivito.obj.create_instance({id: data.id, obj_class_name: data.obj_class_name});
35377
+ return scrivito.obj.create_instance({id: data.id, obj_class: data.obj_class});
34982
35378
  },
34983
35379
 
34984
35380
  clear: function() {
@@ -34989,7 +35385,7 @@ var scrivito = {};
34989
35385
  var storage_key = 'obj_clipboard';
34990
35386
 
34991
35387
  var store_obj = function(obj) {
34992
- var data = {id: obj.id(), obj_class_name: obj.obj_class_name()};
35388
+ var data = {id: obj.id(), obj_class: obj.obj_class()};
34993
35389
  scrivito.storage.set(storage_key, data);
34994
35390
  };
34995
35391
 
@@ -35013,7 +35409,7 @@ var scrivito = {};
35013
35409
  var data = stored_data();
35014
35410
  var obj = scrivito.obj.create_instance({
35015
35411
  id: data.obj_id,
35016
- obj_class_name: data.obj_class_name
35412
+ obj_class: data.obj_class
35017
35413
  });
35018
35414
  return scrivito.widget.create_instance(obj, data.id, data.widget_class_name);
35019
35415
  },
@@ -35034,7 +35430,7 @@ var scrivito = {};
35034
35430
  id: widget.id(),
35035
35431
  widget_class_name: widget.widget_class_name(),
35036
35432
  obj_id: widget.obj().id(),
35037
- obj_class_name: widget.obj().obj_class_name(),
35433
+ obj_class: widget.obj().obj_class(),
35038
35434
  workspace_id: scrivito.editing_context.selected_workspace.id()
35039
35435
  };
35040
35436
  scrivito.storage.set(storage_key, data);
@@ -35119,6 +35515,8 @@ var scrivito = {};
35119
35515
 
35120
35516
 
35121
35517
 
35518
+
35519
+
35122
35520
 
35123
35521
 
35124
35522