scrivito_sdk 0.40.0 → 0.41.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/scrivito/objs_controller.rb +5 -1
  3. data/app/helpers/scrivito_helper.rb +22 -11
  4. data/app/models/scrivito/content_widget.rb +11 -0
  5. data/app/views/scrivito/content_widget/show.html.erb +7 -0
  6. data/config/ca-bundle.crt +1 -1
  7. data/config/cms_routes.rb +3 -1
  8. data/config/routes.rb +0 -1
  9. data/lib/assets/javascripts/scrivito_sdk.js +1 -1
  10. data/lib/assets/javascripts/scrivito_ui.js +415 -137
  11. data/lib/assets/stylesheets/scrivito_sdk.css +13 -0
  12. data/lib/assets/stylesheets/scrivito_ui.css +121 -0
  13. data/lib/generators/scrivito/install/install_generator.rb +6 -1
  14. data/lib/generators/scrivito/install/templates/app/views/download/embed.html.erb +1 -0
  15. data/lib/generators/scrivito/install/templates/app/views/image/embed.html.erb +1 -0
  16. data/lib/generators/scrivito/install/templates/scrivito/migrate/install_scrivito_migration.rb +4 -0
  17. data/lib/scrivito/basic_obj.rb +9 -1
  18. data/lib/scrivito/basic_widget.rb +5 -1
  19. data/lib/scrivito/cache/chainable.rb +52 -0
  20. data/lib/scrivito/cache/file_store.rb +26 -0
  21. data/lib/scrivito/cache/ram_store.rb +32 -0
  22. data/lib/scrivito/cache.rb +1 -40
  23. data/lib/scrivito/cache_garbage_collector.rb +1 -1
  24. data/lib/scrivito/cms_backend.rb +5 -5
  25. data/lib/scrivito/{cms_cache_storage.rb → cms_data_cache.rb} +22 -10
  26. data/lib/scrivito/cms_rest_api/widget_extractor.rb +1 -1
  27. data/lib/scrivito/configuration.rb +41 -6
  28. data/lib/scrivito/content_state.rb +6 -6
  29. data/lib/scrivito/controller_actions.rb +8 -2
  30. data/lib/scrivito/obj_params_parser.rb +4 -2
  31. data/lib/scrivito/workspace_data_from_service.rb +2 -2
  32. metadata +12 -5
@@ -17,6 +17,15 @@
17
17
  min-height: 100px;
18
18
  visibility: visible!important;
19
19
  }
20
+ .scrivito_content_upload[data-scrivito-field-type=widget],
21
+ .scrivito_content_upload[data-scrivito-private-widget-id] {
22
+ background: rgba(152, 187, 225, 0.3) url('data:image/gif;base64,R0lGODlhSwAyALMKAIiIiOHh4ZSUlLi4uPPz86ampqurq+vr6/n0o8/Pz////wAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3YzY1NzlkMy1jY2ZlLTQwZjEtYTRlYS0yOWI2YmYzNTM0YzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODk1NkRERkVBM0U0MTFFNEE1NzZCRjVDOTAzQ0E2MzUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODk1NkRERkRBM0U0MTFFNEE1NzZCRjVDOTAzQ0E2MzUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGQ4OWM2YzktNjk0Mi00NTE0LWJjYmQtOGQwMzYzN2VlNDdiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdjNjU3OWQzLWNjZmUtNDBmMS1hNGVhLTI5YjZiZjM1MzRjNiIvPiA8L3JkZjpE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') no-repeat center 5px;
23
+ min-height: 55px;
24
+ }
25
+ .scrivito_content_upload[data-scrivito-field-type=widget] *,
26
+ .scrivito_content_upload[data-scrivito-private-widget-id] * {
27
+ opacity: 0.2;
28
+ }
20
29
  body.scrivito_editing_active .scrivito_empty_widget_field.scrivito_widget_drop_allowed {
21
30
  max-height: 200px;
22
31
  min-height: 100px;
@@ -641,6 +650,8 @@ html.scrivito_bottombar_on {
641
650
  background: #34732d;
642
651
  }
643
652
  .scrivito_menu_box .scrivito_menu_item span .scrivito_icon,
653
+ .scrivito_menu_box .scrivito_menu_item span .scrivito_customer_icon,
654
+ .scrivito_menu_box .scrivito_menu_item a .scrivito_customer_icon,
644
655
  .scrivito_menu_box .scrivito_menu_item a .scrivito_icon {
645
656
  font-size: 16px;
646
657
  padding: 0 7px 2px 0;
@@ -656,6 +667,8 @@ html.scrivito_bottombar_on {
656
667
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span,
657
668
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a,
658
669
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span .scrivito_icon,
670
+ .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a .scrivito_customer_icon,
671
+ .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span .scrivito_customer_icon,
659
672
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a .scrivito_icon {
660
673
  color: #696969!important;
661
674
  cursor: help;
@@ -1,3 +1,110 @@
1
+
2
+ /* Scrivito Customer Icons Font */
3
+
4
+
5
+ @font-face {
6
+ font-family: 'scrivito_customer_icons';
7
+ src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+ .scrivito_customer_icon {font-family:"scrivito_customer_icons";
12
+ font-style:normal;font-weight:normal;
13
+ color:#444; font-size:26px; line-height:13px!important; vertical-align: middle;
14
+ text-decoration:none;
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ }
18
+ .scrivito_customer_icon:hover {cursor:pointer;}
19
+
20
+ .scrivito_customer_icon:after { content: "\F000"; }
21
+
22
+ .scrivito_customer_icon.sci_scrivito:after { content: "\F000"; }
23
+ .scrivito_customer_icon.sci_up:after { content: "\F001"; }
24
+ .scrivito_customer_icon.sci_right:after { content: "\F002"; }
25
+ .scrivito_customer_icon.sci_down:after { content: "\F003"; }
26
+ .scrivito_customer_icon.sci_left:after { content: "\F004"; }
27
+ .scrivito_customer_icon.sci_up_arrow:after { content: "\F005"; }
28
+ .scrivito_customer_icon.sci_down_arrow:after { content: "\F006"; }
29
+ .scrivito_customer_icon.sci_arrows:after { content: "\F007"; }
30
+ .scrivito_customer_icon.sci_user:after { content: "\F008"; }
31
+ .scrivito_customer_icon.sci_users:after { content: "\F009"; }
32
+ .scrivito_customer_icon.sci_timetable:after { content: "\F00a"; }
33
+ .scrivito_customer_icon.sci_cal:after { content: "\F00b"; }
34
+ .scrivito_customer_icon.sci_mail:after { content: "\F00c"; }
35
+ .scrivito_customer_icon.sci_phone:after { content: "\F00d"; }
36
+ .scrivito_customer_icon.sci_mobile:after { content: "\F00e"; }
37
+ .scrivito_customer_icon.sci_fax:after { content: "\F00f"; }
38
+
39
+ .scrivito_customer_icon.sci_map:after { content: "\F010"; }
40
+ .scrivito_customer_icon.sci_tag:after { content: "\F011"; }
41
+ .scrivito_customer_icon.sci_inbox:after { content: "\F012"; }
42
+ .scrivito_customer_icon.sci_suitcase:after { content: "\F013"; }
43
+ .scrivito_customer_icon.sci_lens:after { content: "\F014"; }
44
+ .scrivito_customer_icon.sci_new:after { content: "\F015"; }
45
+ .scrivito_customer_icon.sci_copy:after { content: "\F016"; }
46
+ .scrivito_customer_icon.sci_cut:after { content: "\F017"; }
47
+ .scrivito_customer_icon.sci_paste:after { content: "\F018"; }
48
+ .scrivito_customer_icon.sci_trashcan:after { content: "\F019"; }
49
+ .scrivito_customer_icon.sci_image:after { content: "\F01a"; }
50
+ .scrivito_customer_icon.sci_images:after { content: "\F01b"; }
51
+ .scrivito_customer_icon.sci_eye:after { content: "\F01c"; }
52
+ .scrivito_customer_icon.sci_globe:after { content: "\F01d"; }
53
+ .scrivito_customer_icon.sci_str_globe:after { content: "\F01e"; }
54
+ .scrivito_customer_icon.sci_filter:after { content: "\F01f"; }
55
+
56
+ .scrivito_customer_icon.sci_exit:after { content: "\F020"; }
57
+ .scrivito_customer_icon.sci_key:after { content: "\F021"; }
58
+ .scrivito_customer_icon.sci_lock:after { content: "\F022"; }
59
+ .scrivito_customer_icon.sci_gear:after { content: "\F023"; }
60
+ .scrivito_customer_icon.sci_gears:after { content: "\F024"; }
61
+ .scrivito_customer_icon.sci_tools:after { content: "\F025"; }
62
+ .scrivito_customer_icon.sci_undo:after { content: "\F026"; }
63
+ .scrivito_customer_icon.sci_puzzle:after { content: "\F027"; }
64
+ .scrivito_customer_icon.sci_text:after { content: "\F028"; }
65
+ .scrivito_customer_icon.sci_certificate:after { content: "\F029"; }
66
+ .scrivito_customer_icon.sci_database:after { content: "\F02a"; }
67
+ .scrivito_customer_icon.sci_chat:after { content: "\F02b"; }
68
+ .scrivito_customer_icon.sci_relation:after { content: "\F02c"; }
69
+ .scrivito_customer_icon.sci_link:after { content: "\F02d"; }
70
+ .scrivito_customer_icon.sci_code:after { content: "\F02e"; }
71
+ .scrivito_customer_icon.sci_pen:after { content: "\F02f"; }
72
+
73
+ .scrivito_customer_icon.sci_circ_pen:after { content: "\F030"; }
74
+ .scrivito_customer_icon.sci_plus:after { content: "\F031"; }
75
+ .scrivito_customer_icon.sci_minus:after { content: "\F032"; }
76
+ .scrivito_customer_icon.sci_check:after { content: "\F033"; }
77
+ .scrivito_customer_icon.sci_cross:after { content: "\F034"; }
78
+ .scrivito_customer_icon.sci_question:after { content: "\F035"; }
79
+ .scrivito_customer_icon.sci_exclamation:after { content: "\F036"; }
80
+ .scrivito_customer_icon.sci_info:after { content: "\F037"; }
81
+ .scrivito_customer_icon.sci_time:after { content: "\F038"; }
82
+ .scrivito_customer_icon.sci_inv_plus:after { content: "\F039"; }
83
+ .scrivito_customer_icon.sci_inv_minus:after { content: "\F03a"; }
84
+ .scrivito_customer_icon.sci_inv_check:after { content: "\F03b"; }
85
+ .scrivito_customer_icon.sci_inv_cross:after { content: "\F03c"; }
86
+ .scrivito_customer_icon.sci_warning:after { content: "\F03d"; }
87
+ .scrivito_customer_icon.sci_wand:after { content: "\F03e"; }
88
+ .scrivito_customer_icon.sci_folder:after { content: "\F03f"; }
89
+
90
+ .scrivito_customer_icon.sci_collection:after { content: "\F040"; }
91
+ .scrivito_customer_icon.sci_sheet:after { content: "\F041"; }
92
+ .scrivito_customer_icon.sci_pdf:after { content: "\F042"; }
93
+ .scrivito_customer_icon.sci_txt:after { content: "\F043"; }
94
+ .scrivito_customer_icon.sci_zip:after { content: "\F044"; }
95
+ .scrivito_customer_icon.sci_doc:after { content: "\F045"; }
96
+ .scrivito_customer_icon.sci_xls:after { content: "\F046"; }
97
+ .scrivito_customer_icon.sci_ppt:after { content: "\F047"; }
98
+
99
+ .scrivito_customer_icon.sci_video:after { content: "\F049"; }
100
+ .scrivito_customer_icon.sci_audio:after { content: "\F04a"; }
101
+ .scrivito_customer_icon.sci_list:after { content: "\F04b"; }
102
+ .scrivito_customer_icon.sci_thumbnails:after { content: "\F04c"; }
103
+ .scrivito_customer_icon.sci_rounded_square:after { content: "\F04d"; }
104
+
105
+
106
+
107
+
1
108
  [data-scrivito-field-type="widget"] {
2
109
  min-height: 25px;
3
110
  }
@@ -17,6 +124,15 @@
17
124
  min-height: 100px;
18
125
  visibility: visible!important;
19
126
  }
127
+ .scrivito_content_upload[data-scrivito-field-type=widget],
128
+ .scrivito_content_upload[data-scrivito-private-widget-id] {
129
+ background: rgba(152, 187, 225, 0.3) url('data:image/gif;base64,R0lGODlhSwAyALMKAIiIiOHh4ZSUlLi4uPPz86ampqurq+vr6/n0o8/Pz////wAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3YzY1NzlkMy1jY2ZlLTQwZjEtYTRlYS0yOWI2YmYzNTM0YzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODk1NkRERkVBM0U0MTFFNEE1NzZCRjVDOTAzQ0E2MzUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODk1NkRERkRBM0U0MTFFNEE1NzZCRjVDOTAzQ0E2MzUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NGQ4OWM2YzktNjk0Mi00NTE0LWJjYmQtOGQwMzYzN2VlNDdiIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdjNjU3OWQzLWNjZmUtNDBmMS1hNGVhLTI5YjZiZjM1MzRjNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAkKAAoALAAAAABLADIAAASKUMlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu73wvJsCgcEgsGo/IZNCibDqfT2bCNwJKqb9pxYoFcSnfbicsIYs1ZvMZk9auN+03Jy5HuyfqOv5e5uvBfnl/dH9XW36FCoSJe4aMjYePgI6SbVCXmFBSmZydRZKgoaKjpKWmp6ipqqusrSIRACH5BAkKAAoALAAAAABLADIAAASGUMlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcLgaGI/IpHLJbDqfRwt0Sq1WpQNix4jVcrgVsDcjnpTH3XAWjTkr3GyJGx6fr+PqNJ5i3+f/fnJ3ZoN+fYGCeoGHiIyLhW+QeI6GkFaXmJhYmZydS4igoaKjpKWmp6ipFREAIfkECQoACgAsAAAAAEsAMgAABIRQyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwajzaBcslsOp/QqHS6tFCv2GzWKkBmlFwvBlwhi8td9DmsXlPME7hbrqCf6XYxPu2W7PtxfIGAfoKFhHWGiYh/hI2Aj32Rc4p5XntamZpaXJuen0+IoqOkpaanRBEAIfkECQoACgAsAAAAAEsAMgAABIBQyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcskEAp7QqHRKrVqvWKgly+16vVtAk/IMjyflSvq8RovPirZEzqTTl/Y3W++Gx/lzgHWCd0p5fodwiXtmioSCeI+Iko6NjGpfmZqZYZuen1R+oqMuEQAh+QQFCgAKACwAAAAASwAyAAAE0FDJSau9OOvNu/9gmCTSOJYmeiomyabv2qruHNdwJcN2z/+7IE5Ic4WOSJExyWxeVhSoc/qRoqjYpjXL7Wy74C94rFuSz1HzCz3eitlhNbwtnzPfdiw+P3XX+UoWe4B3f4RahoccfkQ3NI+OkT6Nk4JAQ5iQk5mSlyqKoKGFLaSlpqeoqaqmlquur7CulqJHfrSBZbcgtroevL2LaoPAa7nEG7/HGMnKs8bNT8KJx8zQE9XWxWnZztvc3uDf2tfTxNjWjLHq67Ct7O/wpeLzXBEAIfkEBRQACgAsAwACAEUAFgAABGuwlHOkpHZWi/m+n5Z14BiSU+mZ7OqqsPjKHmXfeK7vfO+DvqBwSDQRj8hiLcls6oDOqBMqrQ6p1uxPo+32jN6wDSwuY8veM9qqXrO57vQy/m7Tp/D7W5/NxFCAJ4Itf4MzM4GENIuJiIYFEQAh+QQJMgAKACwDAAIARQAWAAAEaxAAhKSkdlaL+b6flnXgGJJT6Zns6qqw+MoeZd94ru9874O+oHBINBGPyGItyWzqgM6oEyqtDqnW7E+j7faM3rANLC5jy94z2qpes7nu9DL+btOn8Ptbn83EUIAngi1/gzMzgYQ0i4mIhgARACH5BAUKAAoALAAAAABLADIAAATiUMlJq7046827/2BoGNI4liZ6KibJpu/aqu4c13Alw3bP/7sgTkhzhY5IkTHJbF5WFKhz+pGiqNimNcvtbLvgL3isW5LPUfMLPd6K2WE1vC2fM992LD4/ddf5ShZ7gHd/hFqGhxx+RDc0j46RPo2TgkBDmJCTmZKXKoqgoUwBpKWmp6ipqqusraUWrrGys7OwAaJHpLa4IboVvrwewBPDwRvFCsjGGMjKy7u/t8/H0hTO08TV2dgazdrc0dDg4tvj5BLX3N7m58nf7Ovs1u/p2PHy6PS0+/z7tv0AA6bCR5BLBAAh+QQJCgAKACwDAAIARQAuAAAEtjAEpaSkdlaL+b6flnXgGJJT6Zns6qqw+MoeZd94ru9874O+oHBINBGPyGItyWzqgM6oEyqtDqnW7E+j7faM3rANLC5jy94z2qpes7nu9DL+btOn8Ptbn83EUIAngi1/gzMzgYQ0i4mIhnl8kZI9BJWWl5iZmpucnZ6foKGio5eTUaWmTaipSausR66vQ7GyQbS1lJa4RLe7Or2+OMDBNsPECsbEycHLvs27z7jRtaTV1tfY2doRACH5BAVkAAoALAAAAABLADIAAARGUMlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvter/gsHhMLpszEQA7') no-repeat center 5px;
130
+ min-height: 55px;
131
+ }
132
+ .scrivito_content_upload[data-scrivito-field-type=widget] *,
133
+ .scrivito_content_upload[data-scrivito-private-widget-id] * {
134
+ opacity: 0.2;
135
+ }
20
136
  body.scrivito_editing_active .scrivito_empty_widget_field.scrivito_widget_drop_allowed {
21
137
  max-height: 200px;
22
138
  min-height: 100px;
@@ -641,6 +757,8 @@ html.scrivito_bottombar_on {
641
757
  background: #34732d;
642
758
  }
643
759
  .scrivito_menu_box .scrivito_menu_item span .scrivito_icon,
760
+ .scrivito_menu_box .scrivito_menu_item span .scrivito_customer_icon,
761
+ .scrivito_menu_box .scrivito_menu_item a .scrivito_customer_icon,
644
762
  .scrivito_menu_box .scrivito_menu_item a .scrivito_icon {
645
763
  font-size: 16px;
646
764
  padding: 0 7px 2px 0;
@@ -656,6 +774,8 @@ html.scrivito_bottombar_on {
656
774
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span,
657
775
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a,
658
776
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span .scrivito_icon,
777
+ .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a .scrivito_customer_icon,
778
+ .scrivito_menu_box .scrivito_menu_item.scrivito_disabled span .scrivito_customer_icon,
659
779
  .scrivito_menu_box .scrivito_menu_item.scrivito_disabled a .scrivito_icon {
660
780
  color: #696969!important;
661
781
  cursor: help;
@@ -3141,6 +3261,7 @@ html[dir="rtl"] .select2-container-multi .select2-search-choice-close {
3141
3261
  }
3142
3262
  /*
3143
3263
 
3264
+
3144
3265
  */
3145
3266
 
3146
3267
 
@@ -39,9 +39,14 @@ module Scrivito
39
39
  copy_file 'app/views/page/thumbnail.html.erb'
40
40
  end
41
41
 
42
- def copy_resource_files
42
+ def copy_image_files
43
43
  copy_file 'app/models/image.rb'
44
+ copy_file 'app/views/image/embed.html.erb'
45
+ end
46
+
47
+ def copy_download_files
44
48
  copy_file 'app/models/download.rb'
49
+ copy_file 'app/views/download/embed.html.erb'
45
50
  end
46
51
 
47
52
  def copy_headline_widget_files
@@ -0,0 +1 @@
1
+ <%= link_to obj.display_title, obj.binary_url %>
@@ -0,0 +1 @@
1
+ <%= scrivito_image_tag obj %>
@@ -26,6 +26,10 @@ class InstallScrivitoMigration < Scrivito::Migration
26
26
  {name: 'blob', type: 'binary'},
27
27
  ])
28
28
 
29
+ Scrivito::ObjClass.create(name: 'Scrivito::ContentWidget', attributes: [
30
+ {name: 'content', type: 'reference'}
31
+ ])
32
+
29
33
  Page.create(_path: '/', title: 'Welcome to Scrivito!', body: [
30
34
  HeadlineWidget.new(headline: 'A professional Cloud CMS built for Ruby on Rails.'),
31
35
  TextWidget.new(text: %{
@@ -712,7 +712,11 @@ module Scrivito
712
712
  end
713
713
 
714
714
  def details_view_path
715
- "#{obj_class_name.underscore}/details"
715
+ view_path('details')
716
+ end
717
+
718
+ def embed_view_path
719
+ view_path('embed')
716
720
  end
717
721
 
718
722
  def widget_from_pool(widget_id)
@@ -932,6 +936,10 @@ module Scrivito
932
936
  binary.filename if binary? && binary
933
937
  end
934
938
 
939
+ def view_path(view_name)
940
+ "#{obj_class_name.underscore}/#{view_name}"
941
+ end
942
+
935
943
  class << self
936
944
 
937
945
  def assert_not_basic_obj(method_name)
@@ -13,6 +13,10 @@ class BasicWidget
13
13
  @_type_computer = nil
14
14
  end
15
15
 
16
+ def self.hide_from_widget_class_selection?
17
+ false
18
+ end
19
+
16
20
  attr_accessor :container, :container_field_name
17
21
 
18
22
  attr_writer :obj, :id
@@ -238,7 +242,7 @@ class BasicWidget
238
242
  end
239
243
  end
240
244
 
241
- def forget_unsaved_attribtues
245
+ def forget_unsaved_attributes
242
246
  @attributes_to_be_saved = nil
243
247
  reload
244
248
  end
@@ -0,0 +1,52 @@
1
+ module Scrivito
2
+ module Cache
3
+ module Chainable
4
+ def read(key)
5
+ transformed_key = transform_key(key)
6
+ value = internal_read(transformed_key)
7
+ if !value && next_store
8
+ value = next_store.read(transformed_key)
9
+ internal_write(transformed_key, value)
10
+ end
11
+ value
12
+ end
13
+
14
+ def write(key, value, options = {})
15
+ transformed_key = transform_key(key)
16
+ next_store.write(transformed_key, value, options) if next_store
17
+ internal_write(transformed_key, value, options)
18
+ end
19
+
20
+ def fetch(key, &block)
21
+ read(key) || block.call.tap { |value| write(key, value) }
22
+ end
23
+
24
+ def clear
25
+ raise NotImplementedError
26
+ end
27
+
28
+ def clear_all
29
+ clear
30
+ next_store.clear if next_store
31
+ end
32
+
33
+ private
34
+
35
+ def next_store
36
+ raise NotImplementedError
37
+ end
38
+
39
+ def internal_read(key)
40
+ raise NotImplementedError
41
+ end
42
+
43
+ def internal_write(key, value, options = {})
44
+ raise NotImplementedError
45
+ end
46
+
47
+ def transform_key(key)
48
+ key
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,26 @@
1
+ module Scrivito
2
+ module Cache
3
+ class FileStore
4
+ include Chainable
5
+
6
+ attr_reader :internal_store, :next_store
7
+
8
+ def initialize(options = {})
9
+ @internal_store = ActiveSupport::Cache::FileStore.new(
10
+ options[:path] || Rails.root + 'tmp/scrivito_cache')
11
+ @next_store = options[:next_store]
12
+ end
13
+
14
+ delegate :clear, to: :internal_store
15
+
16
+ private
17
+
18
+ delegate :read, :write, to: :internal_store, prefix: :internal
19
+
20
+ def transform_key(key)
21
+ # Workaround for rails/rails#15616. Will be fixed in Rails 4.2.
22
+ Digest::SHA1.hexdigest(key)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ module Scrivito
2
+
3
+ module Cache
4
+ class RamStore
5
+ include Chainable
6
+
7
+ attr_reader :internal_store, :next_store, :cache_prefix
8
+
9
+ def initialize(options = {})
10
+ @internal_store = {}
11
+ @next_store, @cache_prefix = *options.values_at(:next_store, :cache_prefix)
12
+ end
13
+
14
+ delegate :clear, to: :internal_store
15
+
16
+ private
17
+
18
+ def internal_read(key)
19
+ internal_store[key]
20
+ end
21
+
22
+ def internal_write(key, value, options = {})
23
+ internal_store[key] = value
24
+ end
25
+
26
+ def transform_key(key)
27
+ cache_prefix ? "#{cache_prefix}/#{key}" : key
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -1,43 +1,4 @@
1
1
  module Scrivito
2
-
3
- class Cache
4
- attr_reader :cache_prefix, :fallback_backend
5
-
6
- def initialize(options = {})
7
- @fallback_backend, @cache_prefix = options[:fallback_backend], options[:cache_prefix]
8
- @cache = {}
9
- end
10
-
11
- def read(key)
12
- value = @cache[key]
13
- if !value && @fallback_backend
14
- value = @fallback_backend.read(cache_key_for_fallback_backend(key))
15
- @cache[key] = value
16
- end
17
- value
18
- end
19
-
20
- def write(key, value, options={})
21
- @fallback_backend.write(cache_key_for_fallback_backend(key), value, options) if @fallback_backend
22
- @cache[key] = value
23
- end
24
-
25
- def fetch(key, &block)
26
- read(key) || block.call.tap { |value| write(key, value) }
27
- end
28
-
29
- def clear
30
- @cache = {}
31
- end
32
-
33
- private
34
-
35
- def cache_key_for_fallback_backend(key)
36
- # Workaround for rails/rails#15616. Will be fixed in Rails 4.2.
37
- key = Digest::SHA1.hexdigest(key)
38
- @cache_prefix ? "#{@cache_prefix}/#{key}" : key
2
+ module Cache
39
3
  end
40
4
  end
41
-
42
- end # module Scrivito
43
-
@@ -74,7 +74,7 @@ module Scrivito
74
74
  private
75
75
 
76
76
  def cache_path
77
- CmsCacheStorage.backend_cache.cache_path
77
+ CmsDataCache.first_level_cache.internal_store.cache_path
78
78
  end
79
79
 
80
80
  def cache_entries
@@ -64,7 +64,7 @@ module Scrivito
64
64
  end
65
65
 
66
66
  def end_caching
67
- CmsCacheStorage.cache.clear
67
+ CmsDataCache.cache.clear
68
68
  @caching = false
69
69
  end
70
70
 
@@ -192,7 +192,7 @@ module Scrivito
192
192
  end
193
193
 
194
194
  def fetch_blob_data_from_cache(id, access, verb)
195
- CmsCacheStorage.cache.read(blob_data_cache_key(id, access, verb))
195
+ CmsDataCache.cache.read(blob_data_cache_key(id, access, verb))
196
196
  end
197
197
 
198
198
  def request_blob_datas_from_backend(id)
@@ -204,7 +204,7 @@ module Scrivito
204
204
  %w[public_access private_access].each do |access|
205
205
  %w[get head].each do |verb|
206
206
  blob_data = blob_datas[access][verb]
207
- CmsCacheStorage.cache.write(blob_data_cache_key(id, access, verb),
207
+ CmsDataCache.cache.write(blob_data_cache_key(id, access, verb),
208
208
  blob_data, expires_in: blob_data['maxage'])
209
209
  end
210
210
  end
@@ -215,7 +215,7 @@ module Scrivito
215
215
  end
216
216
 
217
217
  def fetch_blob_metadata_from_cache(id)
218
- CmsCacheStorage.cache.read(blob_metadata_cache_key(id))
218
+ CmsDataCache.cache.read(blob_metadata_cache_key(id))
219
219
  end
220
220
 
221
221
  def request_blob_metadata_from_s3(url)
@@ -242,7 +242,7 @@ module Scrivito
242
242
  def store_blob_metadata_in_cache(id, blob_metadata)
243
243
  max_age = blob_metadata.delete(:cache_control) =~ /max-age=(.*),/ && $1
244
244
  max_age = max_age.to_i if max_age
245
- CmsCacheStorage.cache.write(blob_metadata_cache_key(id), blob_metadata, expires_in: max_age)
245
+ CmsDataCache.cache.write(blob_metadata_cache_key(id), blob_metadata, expires_in: max_age)
246
246
  end
247
247
 
248
248
  def blob_metadata_cache_key(id)
@@ -1,25 +1,29 @@
1
1
  module Scrivito
2
2
 
3
3
  # This module manages storage of different kind of cache data.
4
- module CmsCacheStorage
4
+ module CmsDataCache
5
5
  VERSION = 'v2'.freeze
6
6
 
7
7
  class << self
8
- attr_writer :cache
8
+ attr_reader :second_level_cache
9
+ attr_writer :cache_path
9
10
 
10
11
  def cache
11
- @cache ||= begin
12
- Cache.new(fallback_backend: backend_cache, cache_prefix: VERSION)
13
- end
12
+ @cache_chain ||= Cache::RamStore.new(next_store: first_level_cache, cache_prefix: VERSION)
14
13
  end
15
14
 
16
- def backend_cache=(new_cache)
17
- @backend_cache = new_cache
18
- @cache = nil
15
+ def cache_path=(path)
16
+ clear_cache_chain
17
+ @cache_path = path
19
18
  end
20
19
 
21
- def backend_cache
22
- @backend_cache || ActiveSupport::Cache::FileStore.new(Rails.root + 'tmp/scrivito_cache')
20
+ def first_level_cache
21
+ @first_level_cache ||= Cache::FileStore.new(path: @cache_path, next_store: second_level_cache)
22
+ end
23
+
24
+ def second_level_cache=(cache_store)
25
+ clear_cache_chain
26
+ @second_level_cache = cache_store
23
27
  end
24
28
 
25
29
  def read_workspace_data(workspace_id)
@@ -53,6 +57,14 @@ module CmsCacheStorage
53
57
  def write_obj_classes_data(content_state_id, data)
54
58
  cache.write("content/#{content_state_id}/obj_classes", data)
55
59
  end
60
+
61
+ private
62
+
63
+ def clear_cache_chain
64
+ @cache_chain = nil
65
+ @first_level_cache = nil
66
+ @second_level_cache = nil
67
+ end
56
68
  end
57
69
  end
58
70
 
@@ -39,7 +39,7 @@ module Scrivito
39
39
  widget_hash.each do |widget, attributes|
40
40
  if attributes.present?
41
41
  widget.obj = obj
42
- widget.forget_unsaved_attribtues
42
+ widget.forget_unsaved_attributes
43
43
  end
44
44
  end
45
45
  end