slices 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. data/CHANGELOG.md +3 -0
  2. data/README.md +51 -0
  3. data/Rakefile +9 -0
  4. data/app/assets/images/slices/ajax-loader.gif +0 -0
  5. data/app/assets/images/slices/asset-background.png +0 -0
  6. data/app/assets/images/slices/asset-spinner.gif +0 -0
  7. data/app/assets/images/slices/bg_header.gif +0 -0
  8. data/app/assets/images/slices/black-Linen.png +0 -0
  9. data/app/assets/images/slices/calendar.svg +68 -0
  10. data/app/assets/images/slices/chosen-sprite.png +0 -0
  11. data/app/assets/images/slices/drag-handle.svg +9 -0
  12. data/app/assets/images/slices/icon_admins.png +0 -0
  13. data/app/assets/images/slices/icon_app.png +0 -0
  14. data/app/assets/images/slices/icon_assets.png +0 -0
  15. data/app/assets/images/slices/icon_collapse.png +0 -0
  16. data/app/assets/images/slices/icon_drag.png +0 -0
  17. data/app/assets/images/slices/icon_files.png +0 -0
  18. data/app/assets/images/slices/icon_generic_file.png +0 -0
  19. data/app/assets/images/slices/icon_images.png +0 -0
  20. data/app/assets/images/slices/icon_padlock.png +0 -0
  21. data/app/assets/images/slices/icon_page.png +0 -0
  22. data/app/assets/images/slices/icon_search.png +0 -0
  23. data/app/assets/images/slices/icon_set-link.png +0 -0
  24. data/app/assets/images/slices/icon_set.png +0 -0
  25. data/app/assets/images/slices/icon_sitemap.png +0 -0
  26. data/app/assets/images/slices/icon_snippets.png +0 -0
  27. data/app/assets/images/slices/icon_template.jpg +0 -0
  28. data/app/assets/images/slices/icon_upload_happy.png +0 -0
  29. data/app/assets/images/slices/icon_upload_sad.png +0 -0
  30. data/app/assets/images/slices/icon_upload_thinking.png +0 -0
  31. data/app/assets/images/slices/noise.png +0 -0
  32. data/app/assets/images/slices/sitemap_icon_ghost.png +0 -0
  33. data/app/assets/images/slices/sitemap_icon_home.png +0 -0
  34. data/app/assets/images/slices/sitemap_icon_page.png +0 -0
  35. data/app/assets/images/slices/sitemap_icon_set_page.png +0 -0
  36. data/app/assets/images/slices/sitemap_icon_virtual_page.png +0 -0
  37. data/app/assets/images/slices/sitemap_overlay.png +0 -0
  38. data/app/assets/images/slices/spinner.gif +0 -0
  39. data/app/assets/images/slices/trash.png +0 -0
  40. data/app/assets/javascripts/admin.js.erb +18 -0
  41. data/app/assets/javascripts/slices/app/backbones/admins.js +114 -0
  42. data/app/assets/javascripts/slices/app/backbones/entries.js +172 -0
  43. data/app/assets/javascripts/slices/app/backbones/generic.js +101 -0
  44. data/app/assets/javascripts/slices/app/backbones/snippets.js +113 -0
  45. data/app/assets/javascripts/slices/app/helpers/assets.js +61 -0
  46. data/app/assets/javascripts/slices/app/helpers/breadcrumbs.js +30 -0
  47. data/app/assets/javascripts/slices/app/helpers/composer.js +26 -0
  48. data/app/assets/javascripts/slices/app/helpers/date_field.js +16 -0
  49. data/app/assets/javascripts/slices/app/helpers/get_value.js +31 -0
  50. data/app/assets/javascripts/slices/app/helpers/icon_upload_names.js.erb +5 -0
  51. data/app/assets/javascripts/slices/app/helpers/layout.js +20 -0
  52. data/app/assets/javascripts/slices/app/helpers/sitemap.js +150 -0
  53. data/app/assets/javascripts/slices/app/helpers/slice_preview.js +48 -0
  54. data/app/assets/javascripts/slices/app/helpers/tagging.js +73 -0
  55. data/app/assets/javascripts/slices/app/helpers/token_field.js +17 -0
  56. data/app/assets/javascripts/slices/app/helpers/upload_icons.js.erb +5 -0
  57. data/app/assets/javascripts/slices/app/helpers/uploader.js +127 -0
  58. data/app/assets/javascripts/slices/app/models/asset.js +29 -0
  59. data/app/assets/javascripts/slices/app/models/asset_collection.js +41 -0
  60. data/app/assets/javascripts/slices/app/models/attachment.js +29 -0
  61. data/app/assets/javascripts/slices/app/models/attachment_collection.js +7 -0
  62. data/app/assets/javascripts/slices/app/models/composer_item.js +1 -0
  63. data/app/assets/javascripts/slices/app/models/composer_item_collection.js +3 -0
  64. data/app/assets/javascripts/slices/app/models/file.js +103 -0
  65. data/app/assets/javascripts/slices/app/models/page.js +186 -0
  66. data/app/assets/javascripts/slices/app/models/s3_file.js +64 -0
  67. data/app/assets/javascripts/slices/app/slices.js +661 -0
  68. data/app/assets/javascripts/slices/app/views/asset_editor_view.js.erb +209 -0
  69. data/app/assets/javascripts/slices/app/views/asset_library_view.js +720 -0
  70. data/app/assets/javascripts/slices/app/views/asset_thumb_view.js.erb +191 -0
  71. data/app/assets/javascripts/slices/app/views/attachment_composer_view.js +350 -0
  72. data/app/assets/javascripts/slices/app/views/attachment_view.js +101 -0
  73. data/app/assets/javascripts/slices/app/views/calendar_view.js +198 -0
  74. data/app/assets/javascripts/slices/app/views/composer_item_view.js +54 -0
  75. data/app/assets/javascripts/slices/app/views/composer_view.js +130 -0
  76. data/app/assets/javascripts/slices/app/views/date_field_view.js +177 -0
  77. data/app/assets/javascripts/slices/app/views/file_view.js +142 -0
  78. data/app/assets/javascripts/slices/app/views/token_field_view.js +253 -0
  79. data/app/assets/javascripts/slices/lib/freeze.js +14 -0
  80. data/app/assets/javascripts/slices/lib/human_file_size.js +16 -0
  81. data/app/assets/javascripts/slices/lib/json_patch.js +9 -0
  82. data/app/assets/javascripts/slices/lib/moment.js +47 -0
  83. data/app/assets/javascripts/slices/lib/plugins.js +101 -0
  84. data/app/assets/javascripts/slices/lib/sortable.js +14 -0
  85. data/app/assets/javascripts/slices/slices.js +27 -0
  86. data/app/assets/javascripts/slices/vendor/autoscroll.js +188 -0
  87. data/app/assets/javascripts/slices/vendor/backbone.js +38 -0
  88. data/app/assets/javascripts/slices/vendor/handlebars.js +1920 -0
  89. data/app/assets/javascripts/slices/vendor/jqmodal.js +69 -0
  90. data/app/assets/javascripts/slices/vendor/jquery-ui.js +274 -0
  91. data/app/assets/javascripts/slices/vendor/jquery-ui_nested-sortable.js +357 -0
  92. data/app/assets/javascripts/slices/vendor/jquery.ajaxprogress.js +76 -0
  93. data/app/assets/javascripts/slices/vendor/jquery.js +2 -0
  94. data/app/assets/javascripts/slices/vendor/livefield.js +459 -0
  95. data/app/assets/javascripts/slices/vendor/moment.js +6 -0
  96. data/app/assets/javascripts/slices/vendor/rails.js +315 -0
  97. data/app/assets/javascripts/slices/vendor/underscore-string.js +1 -0
  98. data/app/assets/javascripts/slices/vendor/underscore.js +5 -0
  99. data/app/assets/stylesheets/admin.css +1 -0
  100. data/app/assets/stylesheets/slices/admin.css.erb +2237 -0
  101. data/app/assets/stylesheets/slices/reset_html5.css +106 -0
  102. data/app/assets/stylesheets/slices/slices.css +7 -0
  103. data/app/controllers/admin/admin_controller.rb +10 -0
  104. data/app/controllers/admin/admins_controller.rb +76 -0
  105. data/app/controllers/admin/assets_controller.rb +53 -0
  106. data/app/controllers/admin/auth/omniauth_callbacks_controller.rb +15 -0
  107. data/app/controllers/admin/auth/passwords_controller.rb +4 -0
  108. data/app/controllers/admin/auth/sessions_controller.rb +4 -0
  109. data/app/controllers/admin/entries_controller.rb +88 -0
  110. data/app/controllers/admin/page_search_controller.rb +12 -0
  111. data/app/controllers/admin/pages_controller.rb +103 -0
  112. data/app/controllers/admin/site_maps_controller.rb +15 -0
  113. data/app/controllers/admin/snippets_controller.rb +33 -0
  114. data/app/controllers/application_controller.rb +4 -0
  115. data/app/controllers/pages_controller.rb +45 -0
  116. data/app/controllers/slices_controller.rb +63 -0
  117. data/app/controllers/static_assets_controller.rb +52 -0
  118. data/app/helpers/admin/admin_helper.rb +63 -0
  119. data/app/helpers/admin/assets_helper.rb +36 -0
  120. data/app/helpers/admin/entries_helper.rb +13 -0
  121. data/app/helpers/admin/site_maps_helper.rb +104 -0
  122. data/app/helpers/assets_helper.rb +64 -0
  123. data/app/helpers/navigation_helper.rb +195 -0
  124. data/app/helpers/pages_helper.rb +119 -0
  125. data/app/models/admin.rb +34 -0
  126. data/app/models/asset.rb +211 -0
  127. data/app/models/attachment.rb +11 -0
  128. data/app/models/layout.rb +44 -0
  129. data/app/models/page.rb +214 -0
  130. data/app/models/placeholder_slice.rb +8 -0
  131. data/app/models/set_page.rb +12 -0
  132. data/app/models/set_slice.rb +57 -0
  133. data/app/models/site_map.rb +24 -0
  134. data/app/models/slice.rb +80 -0
  135. data/app/models/snippet.rb +21 -0
  136. data/app/observers/asset_observer.rb +6 -0
  137. data/app/observers/page_observer.rb +37 -0
  138. data/app/presenters/entry_presenter.rb +17 -0
  139. data/app/presenters/page_presenter.rb +67 -0
  140. data/app/presenters/presenter.rb +9 -0
  141. data/app/presenters/set_page_presenter.rb +2 -0
  142. data/app/views/admin/admins/index.html.erb +26 -0
  143. data/app/views/admin/admins/show.html.erb +27 -0
  144. data/app/views/admin/assets/index.html.erb +1 -0
  145. data/app/views/admin/auth/passwords/edit.html.erb +20 -0
  146. data/app/views/admin/auth/passwords/new.html.erb +14 -0
  147. data/app/views/admin/auth/sessions/_form.html.erb +35 -0
  148. data/app/views/admin/auth/sessions/new.html.erb +14 -0
  149. data/app/views/admin/entries/index.html.erb +32 -0
  150. data/app/views/admin/pages/_breadcrumbs.html.erb +32 -0
  151. data/app/views/admin/pages/_slices.html.erb +27 -0
  152. data/app/views/admin/pages/new.html.erb +14 -0
  153. data/app/views/admin/pages/show.html.erb +50 -0
  154. data/app/views/admin/shared/_asset_storage.html.erb +17 -0
  155. data/app/views/admin/shared/_custom_links.html.erb +1 -0
  156. data/app/views/admin/shared/_custom_navigation.html.erb +1 -0
  157. data/app/views/admin/shared/_navigation.html.erb +5 -0
  158. data/app/views/admin/site_maps/_page_li.html.erb +20 -0
  159. data/app/views/admin/site_maps/_set_page_li.html.erb +23 -0
  160. data/app/views/admin/site_maps/index.html.erb +29 -0
  161. data/app/views/admin/snippets/form.html.erb +12 -0
  162. data/app/views/admin/snippets/index.html.erb +20 -0
  163. data/app/views/admin/snippets/update.html.erb +0 -0
  164. data/app/views/layouts/admin.html.erb +72 -0
  165. data/lib/ext/file_store_cache.rb +18 -0
  166. data/lib/generators/humans/USAGE +8 -0
  167. data/lib/generators/humans/humans_generator.rb +10 -0
  168. data/lib/generators/humans/templates/humans.txt +6 -0
  169. data/lib/generators/slice/USAGE +28 -0
  170. data/lib/generators/slice/slice_generator.rb +123 -0
  171. data/lib/generators/slice/templates/main_fields.hbs +11 -0
  172. data/lib/generators/slice/templates/meta_fields.hbs +11 -0
  173. data/lib/generators/slice/templates/page.rb +19 -0
  174. data/lib/generators/slice/templates/presenter.rb +53 -0
  175. data/lib/generators/slice/templates/set.html.erb +8 -0
  176. data/lib/generators/slice/templates/set_slice.rb +14 -0
  177. data/lib/generators/slice/templates/set_slice_fields.hbs +5 -0
  178. data/lib/generators/slice/templates/show.html.erb +48 -0
  179. data/lib/generators/slice/templates/show_slice.rb +20 -0
  180. data/lib/generators/slice/templates/slice.rb +58 -0
  181. data/lib/generators/slice/templates/slice_fields.hbs +74 -0
  182. data/lib/generators/templates/slices.rb +211 -0
  183. data/lib/mongo_search.rb +84 -0
  184. data/lib/paperclip_validator.rb +5 -0
  185. data/lib/rack_utf8_fix.rb +10 -0
  186. data/lib/sRGB.icc +0 -0
  187. data/lib/set_link_renderer.rb +31 -0
  188. data/lib/slices.rb +68 -0
  189. data/lib/slices/asset/maker.rb +55 -0
  190. data/lib/slices/asset/rename.rb +67 -0
  191. data/lib/slices/available_slices.rb +43 -0
  192. data/lib/slices/cms_form_builder.rb +42 -0
  193. data/lib/slices/config.rb +93 -0
  194. data/lib/slices/container_parser.rb +70 -0
  195. data/lib/slices/generator_macros.rb +36 -0
  196. data/lib/slices/has_attachments.rb +111 -0
  197. data/lib/slices/has_slices.rb +88 -0
  198. data/lib/slices/i18n.rb +6 -0
  199. data/lib/slices/i18n/backend.rb +32 -0
  200. data/lib/slices/i18n_backend.rb +24 -0
  201. data/lib/slices/paperclip.rb +13 -0
  202. data/lib/slices/position_helper.rb +98 -0
  203. data/lib/slices/renderer.rb +52 -0
  204. data/lib/slices/slices_engine.rb +51 -0
  205. data/lib/slices/split_date_time_field.rb +14 -0
  206. data/lib/slices/tasks/assets.rake +35 -0
  207. data/lib/slices/tasks/db.rake +50 -0
  208. data/lib/slices/tasks/seeds.rake +93 -0
  209. data/lib/slices/tasks/validate.rake +62 -0
  210. data/lib/slices/tree.rb +306 -0
  211. data/lib/slices/version.rb +4 -0
  212. data/lib/slices/will_paginate.rb +12 -0
  213. data/lib/slices/will_paginate_mongoid.rb +45 -0
  214. data/lib/standard_tree.rb +193 -0
  215. metadata +483 -0
@@ -0,0 +1,6 @@
1
+ // moment.js
2
+ // version : 1.7.2
3
+ // author : Tim Wood
4
+ // license : MIT
5
+ // momentjs.com
6
+ (function(a){function E(a,b,c,d){var e=c.lang();return e[a].call?e[a](c,d):e[a][b]}function F(a,b){return function(c){return K(a.call(this,c),b)}}function G(a){return function(b){var c=a.call(this,b);return c+this.lang().ordinal(c)}}function H(a,b,c){this._d=a,this._isUTC=!!b,this._a=a._a||null,this._lang=c||!1}function I(a){var b=this._data={},c=a.years||a.y||0,d=a.months||a.M||0,e=a.weeks||a.w||0,f=a.days||a.d||0,g=a.hours||a.h||0,h=a.minutes||a.m||0,i=a.seconds||a.s||0,j=a.milliseconds||a.ms||0;this._milliseconds=j+i*1e3+h*6e4+g*36e5,this._days=f+e*7,this._months=d+c*12,b.milliseconds=j%1e3,i+=J(j/1e3),b.seconds=i%60,h+=J(i/60),b.minutes=h%60,g+=J(h/60),b.hours=g%24,f+=J(g/24),f+=e*7,b.days=f%30,d+=J(f/30),b.months=d%12,c+=J(d/12),b.years=c,this._lang=!1}function J(a){return a<0?Math.ceil(a):Math.floor(a)}function K(a,b){var c=a+"";while(c.length<b)c="0"+c;return c}function L(a,b,c){var d=b._milliseconds,e=b._days,f=b._months,g;d&&a._d.setTime(+a+d*c),e&&a.date(a.date()+e*c),f&&(g=a.date(),a.date(1).month(a.month()+f*c).date(Math.min(g,a.daysInMonth())))}function M(a){return Object.prototype.toString.call(a)==="[object Array]"}function N(a,b){var c=Math.min(a.length,b.length),d=Math.abs(a.length-b.length),e=0,f;for(f=0;f<c;f++)~~a[f]!==~~b[f]&&e++;return e+d}function O(a,b,c,d){var e,f,g=[];for(e=0;e<7;e++)g[e]=a[e]=a[e]==null?e===2?1:0:a[e];return a[7]=g[7]=b,a[8]!=null&&(g[8]=a[8]),a[3]+=c||0,a[4]+=d||0,f=new Date(0),b?(f.setUTCFullYear(a[0],a[1],a[2]),f.setUTCHours(a[3],a[4],a[5],a[6])):(f.setFullYear(a[0],a[1],a[2]),f.setHours(a[3],a[4],a[5],a[6])),f._a=g,f}function P(a,c){var d,e,g=[];!c&&h&&(c=require("./lang/"+a));for(d=0;d<i.length;d++)c[i[d]]=c[i[d]]||f.en[i[d]];for(d=0;d<12;d++)e=b([2e3,d]),g[d]=new RegExp("^"+(c.months[d]||c.months(e,""))+"|^"+(c.monthsShort[d]||c.monthsShort(e,"")).replace(".",""),"i");return c.monthsParse=c.monthsParse||g,f[a]=c,c}function Q(a){var c=typeof a=="string"&&a||a&&a._lang||null;return c?f[c]||P(c):b}function R(a){return a.match(/\[.*\]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function S(a){var b=a.match(k),c,d;for(c=0,d=b.length;c<d;c++)D[b[c]]?b[c]=D[b[c]]:b[c]=R(b[c]);return function(e){var f="";for(c=0;c<d;c++)f+=typeof b[c].call=="function"?b[c].call(e,a):b[c];return f}}function T(a,b){function d(b){return a.lang().longDateFormat[b]||b}var c=5;while(c--&&l.test(b))b=b.replace(l,d);return A[b]||(A[b]=S(b)),A[b](a)}function U(a){switch(a){case"DDDD":return p;case"YYYY":return q;case"S":case"SS":case"SSS":case"DDD":return o;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return r;case"Z":case"ZZ":return s;case"T":return t;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return n;default:return new RegExp(a.replace("\\",""))}}function V(a,b,c,d){var e,f;switch(a){case"M":case"MM":c[1]=b==null?0:~~b-1;break;case"MMM":case"MMMM":for(e=0;e<12;e++)if(Q().monthsParse[e].test(b)){c[1]=e,f=!0;break}f||(c[8]=!1);break;case"D":case"DD":case"DDD":case"DDDD":b!=null&&(c[2]=~~b);break;case"YY":c[0]=~~b+(~~b>70?1900:2e3);break;case"YYYY":c[0]=~~Math.abs(b);break;case"a":case"A":d.isPm=(b+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":c[3]=~~b;break;case"m":case"mm":c[4]=~~b;break;case"s":case"ss":c[5]=~~b;break;case"S":case"SS":case"SSS":c[6]=~~(("0."+b)*1e3);break;case"Z":case"ZZ":d.isUTC=!0,e=(b+"").match(x),e&&e[1]&&(d.tzh=~~e[1]),e&&e[2]&&(d.tzm=~~e[2]),e&&e[0]==="+"&&(d.tzh=-d.tzh,d.tzm=-d.tzm)}b==null&&(c[8]=!1)}function W(a,b){var c=[0,0,1,0,0,0,0],d={tzh:0,tzm:0},e=b.match(k),f,g;for(f=0;f<e.length;f++)g=(U(e[f]).exec(a)||[])[0],g&&(a=a.slice(a.indexOf(g)+g.length)),D[e[f]]&&V(e[f],g,c,d);return d.isPm&&c[3]<12&&(c[3]+=12),d.isPm===!1&&c[3]===12&&(c[3]=0),O(c,d.isUTC,d.tzh,d.tzm)}function X(a,b){var c,d=a.match(m)||[],e,f=99,g,h,i;for(g=0;g<b.length;g++)h=W(a,b[g]),e=T(new H(h),b[g]).match(m)||[],i=N(d,e),i<f&&(f=i,c=h);return c}function Y(a){var b="YYYY-MM-DDT",c;if(u.exec(a)){for(c=0;c<4;c++)if(w[c][1].exec(a)){b+=w[c][0];break}return s.exec(a)?W(a,b+" Z"):W(a,b)}return new Date(a)}function Z(a,b,c,d,e){var f=e.relativeTime[a];return typeof f=="function"?f(b||1,!!c,a,d):f.replace(/%d/i,b||1)}function $(a,b,c){var e=d(Math.abs(a)/1e3),f=d(e/60),g=d(f/60),h=d(g/24),i=d(h/365),j=e<45&&["s",e]||f===1&&["m"]||f<45&&["mm",f]||g===1&&["h"]||g<22&&["hh",g]||h===1&&["d"]||h<=25&&["dd",h]||h<=45&&["M"]||h<345&&["MM",d(h/30)]||i===1&&["y"]||["yy",i];return j[2]=b,j[3]=a>0,j[4]=c,Z.apply({},j)}function _(a,c){b.fn[a]=function(a){var b=this._isUTC?"UTC":"";return a!=null?(this._d["set"+b+c](a),this):this._d["get"+b+c]()}}function ab(a){b.duration.fn[a]=function(){return this._data[a]}}function bb(a,c){b.duration.fn["as"+a]=function(){return+this/c}}var b,c="1.7.2",d=Math.round,e,f={},g="en",h=typeof module!="undefined"&&module.exports,i="months|monthsShort|weekdays|weekdaysShort|weekdaysMin|longDateFormat|calendar|relativeTime|ordinal|meridiem".split("|"),j=/^\/?Date\((\-?\d+)/i,k=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|.)/g,l=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?)/g,m=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,n=/\d\d?/,o=/\d{1,3}/,p=/\d{3}/,q=/\d{1,4}/,r=/[0-9a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+/i,s=/Z|[\+\-]\d\d:?\d\d/i,t=/T/i,u=/^\s*\d{4}-\d\d-\d\d(T(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,v="YYYY-MM-DDTHH:mm:ssZ",w=[["HH:mm:ss.S",/T\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/T\d\d:\d\d:\d\d/],["HH:mm",/T\d\d:\d\d/],["HH",/T\d\d/]],x=/([\+\-]|\d\d)/gi,y="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),z={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},A={},B="DDD w M D d".split(" "),C="M D H h m s w".split(" "),D={M:function(){return this.month()+1},MMM:function(a){return E("monthsShort",this.month(),this,a)},MMMM:function(a){return E("months",this.month(),this,a)},D:function(){return this.date()},DDD:function(){var a=new Date(this.year(),this.month(),this.date()),b=new Date(this.year(),0,1);return~~((a-b)/864e5+1.5)},d:function(){return this.day()},dd:function(a){return E("weekdaysMin",this.day(),this,a)},ddd:function(a){return E("weekdaysShort",this.day(),this,a)},dddd:function(a){return E("weekdays",this.day(),this,a)},w:function(){var a=new Date(this.year(),this.month(),this.date()-this.day()+5),b=new Date(a.getFullYear(),0,4);return~~((a-b)/864e5/7+1.5)},YY:function(){return K(this.year()%100,2)},YYYY:function(){return K(this.year(),4)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return K(~~(this.milliseconds()/10),2)},SSS:function(){return K(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return a<0&&(a=-a,b="-"),b+K(~~(a/60),2)+":"+K(~~a%60,2)},ZZ:function(){var a=-this.zone(),b="+";return a<0&&(a=-a,b="-"),b+K(~~(10*a/6),4)}};while(B.length)e=B.pop(),D[e+"o"]=G(D[e]);while(C.length)e=C.pop(),D[e+e]=F(D[e],2);D.DDDD=F(D.DDD,3),b=function(c,d){if(c===null||c==="")return null;var e,f;return b.isMoment(c)?new H(new Date(+c._d),c._isUTC,c._lang):(d?M(d)?e=X(c,d):e=W(c,d):(f=j.exec(c),e=c===a?new Date:f?new Date(+f[1]):c instanceof Date?c:M(c)?O(c):typeof c=="string"?Y(c):new Date(c)),new H(e))},b.utc=function(a,c){return M(a)?new H(O(a,!0),!0):(typeof a=="string"&&!s.exec(a)&&(a+=" +0000",c&&(c+=" Z")),b(a,c).utc())},b.unix=function(a){return b(a*1e3)},b.duration=function(a,c){var d=b.isDuration(a),e=typeof a=="number",f=d?a._data:e?{}:a,g;return e&&(c?f[c]=a:f.milliseconds=a),g=new I(f),d&&(g._lang=a._lang),g},b.humanizeDuration=function(a,c,d){return b.duration(a,c===!0?null:c).humanize(c===!0?!0:d)},b.version=c,b.defaultFormat=v,b.lang=function(a,c){var d;if(!a)return g;(c||!f[a])&&P(a,c);if(f[a]){for(d=0;d<i.length;d++)b[i[d]]=f[a][i[d]];b.monthsParse=f[a].monthsParse,g=a}},b.langData=Q,b.isMoment=function(a){return a instanceof H},b.isDuration=function(a){return a instanceof I},b.lang("en",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"}}),b.fn=H.prototype={clone:function(){return b(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this._d.toString()},toDate:function(){return this._d},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds(),!!this._isUTC]},isValid:function(){return this._a?this._a[8]!=null?!!this._a[8]:!N(this._a,(this._a[7]?b.utc(this._a):b(this._a)).toArray()):!isNaN(this._d.getTime())},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(a){return T(this,a?a:b.defaultFormat)},add:function(a,c){var d=c?b.duration(+c,a):b.duration(a);return L(this,d,1),this},subtract:function(a,c){var d=c?b.duration(+c,a):b.duration(a);return L(this,d,-1),this},diff:function(a,c,e){var f=this._isUTC?b(a).utc():b(a).local(),g=(this.zone()-f.zone())*6e4,h=this._d-f._d-g,i=this.year()-f.year(),j=this.month()-f.month(),k=this.date()-f.date(),l;return c==="months"?l=i*12+j+k/30:c==="years"?l=i+(j+k/30)/12:l=c==="seconds"?h/1e3:c==="minutes"?h/6e4:c==="hours"?h/36e5:c==="days"?h/864e5:c==="weeks"?h/6048e5:h,e?l:d(l)},from:function(a,c){return b.duration(this.diff(a)).lang(this._lang).humanize(!c)},fromNow:function(a){return this.from(b(),a)},calendar:function(){var a=this.diff(b().sod(),"days",!0),c=this.lang().calendar,d=c.sameElse,e=a<-6?d:a<-1?c.lastWeek:a<0?c.lastDay:a<1?c.sameDay:a<2?c.nextDay:a<7?c.nextWeek:d;return this.format(typeof e=="function"?e.apply(this):e)},isLeapYear:function(){var a=this.year();return a%4===0&&a%100!==0||a%400===0},isDST:function(){return this.zone()<b([this.year()]).zone()||this.zone()<b([this.year(),5]).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return a==null?b:this.add({d:a-b})},startOf:function(a){switch(a.replace(/s$/,"")){case"year":this.month(0);case"month":this.date(1);case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return this},endOf:function(a){return this.startOf(a).add(a.replace(/s?$/,"s"),1).subtract("ms",1)},sod:function(){return this.clone().startOf("day")},eod:function(){return this.clone().endOf("day")},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return b.utc([this.year(),this.month()+1,0]).date()},lang:function(b){return b===a?Q(this):(this._lang=b,this)}};for(e=0;e<y.length;e++)_(y[e].toLowerCase(),y[e]);_("year","FullYear"),b.duration.fn=I.prototype={weeks:function(){return J(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months*2592e6},humanize:function(a){var b=+this,c=this.lang().relativeTime,d=$(b,!a,this.lang()),e=b<=0?c.past:c.future;return a&&(typeof e=="function"?d=e(d):d=e.replace(/%s/i,d)),d},lang:b.fn.lang};for(e in z)z.hasOwnProperty(e)&&(bb(e,z[e]),ab(e.toLowerCase()));bb("Weeks",6048e5),h&&(module.exports=b),typeof ender=="undefined"&&(this.moment=b),typeof define=="function"&&define.amd&&define("moment",[],function(){return b})}).call(this);
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Unobtrusive scripting adapter for jQuery
3
+ *
4
+ * Requires jQuery 1.4.4 or later.
5
+ * https://github.com/rails/jquery-ujs
6
+
7
+ * Uploading file using rails.js
8
+ * =============================
9
+ *
10
+ * By default, browsers do not allow files to be uploaded via AJAX. As a result, if there are any non-blank file fields
11
+ * in the remote form, this adapter aborts the AJAX submission and allows the form to submit through standard means.
12
+ *
13
+ * The `ajax:aborted:file` event allows you to bind your own handler to process the form submission however you wish.
14
+ *
15
+ * Ex:
16
+ * $('form').live('ajax:aborted:file', function(event, elements){
17
+ * // Implement own remote file-transfer handler here for non-blank file inputs passed in `elements`.
18
+ * // Returning false in this handler tells rails.js to disallow standard form submission
19
+ * return false;
20
+ * });
21
+ *
22
+ * The `ajax:aborted:file` event is fired when a file-type input is detected with a non-blank value.
23
+ *
24
+ * Third-party tools can use this hook to detect when an AJAX file upload is attempted, and then use
25
+ * techniques like the iframe method to upload the file instead.
26
+ *
27
+ * Required fields in rails.js
28
+ * ===========================
29
+ *
30
+ * If any blank required inputs (required="required") are detected in the remote form, the whole form submission
31
+ * is canceled. Note that this is unlike file inputs, which still allow standard (non-AJAX) form submission.
32
+ *
33
+ * The `ajax:aborted:required` event allows you to bind your own handler to inform the user of blank required inputs.
34
+ *
35
+ * !! Note that Opera does not fire the form's submit event if there are blank required inputs, so this event may never
36
+ * get fired in Opera. This event is what causes other browsers to exhibit the same submit-aborting behavior.
37
+ *
38
+ * Ex:
39
+ * $('form').live('ajax:aborted:required', function(event, elements){
40
+ * // Returning false in this handler tells rails.js to submit the form anyway.
41
+ * // The blank required inputs are passed to this function in `elements`.
42
+ * return ! confirm("Would you like to submit the form with missing info?");
43
+ * });
44
+ */
45
+
46
+ (function($) {
47
+ // Shorthand to make it a little easier to call public rails functions from within rails.js
48
+ var rails;
49
+
50
+ $.rails = rails = {
51
+ // Link elements bound by jquery-ujs
52
+ linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]',
53
+
54
+ // Form elements bound by jquery-ujs
55
+ formSubmitSelector: 'form',
56
+
57
+ // Form input elements bound by jquery-ujs
58
+ formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',
59
+
60
+ // Form input elements disabled during form submission
61
+ disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',
62
+
63
+ // Form input elements re-enabled after form submission
64
+ enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',
65
+
66
+ // Form required input elements
67
+ requiredInputSelector: 'input[name][required]:not([disabled]),textarea[name][required]:not([disabled])',
68
+
69
+ // Form file input elements
70
+ fileInputSelector: 'input:file',
71
+
72
+ // Make sure that every Ajax request sends the CSRF token
73
+ CSRFProtection: function(xhr) {
74
+ var token = $('meta[name="csrf-token"]').attr('content');
75
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
76
+ },
77
+
78
+ // Triggers an event on an element and returns false if the event result is false
79
+ fire: function(obj, name, data) {
80
+ var event = $.Event(name);
81
+ obj.trigger(event, data);
82
+ return event.result !== false;
83
+ },
84
+
85
+ // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
86
+ confirm: function(message) {
87
+ return confirm(message);
88
+ },
89
+
90
+ // Default ajax function, may be overridden with custom function in $.rails.ajax
91
+ ajax: function(options) {
92
+ return $.ajax(options);
93
+ },
94
+
95
+ // Submits "remote" forms and links with ajax
96
+ handleRemote: function(element) {
97
+ var method, url, data,
98
+ dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
99
+
100
+ if (rails.fire(element, 'ajax:before')) {
101
+
102
+ if (element.is('form')) {
103
+ method = element.attr('method');
104
+ url = element.attr('action');
105
+ data = element.serializeArray();
106
+ // memoized value from clicked submit button
107
+ var button = element.data('ujs:submit-button');
108
+ if (button) {
109
+ data.push(button);
110
+ element.data('ujs:submit-button', null);
111
+ }
112
+ } else {
113
+ method = element.data('method');
114
+ url = element.attr('href');
115
+ data = element.data('params') || null;
116
+ }
117
+
118
+ rails.ajax({
119
+ url: url, type: method || 'GET', data: data, dataType: dataType,
120
+ // stopping the "ajax:beforeSend" event will cancel the ajax request
121
+ beforeSend: function(xhr, settings) {
122
+ if (settings.dataType === undefined) {
123
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
124
+ }
125
+ return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);
126
+ },
127
+ success: function(data, status, xhr) {
128
+ element.trigger('ajax:success', [data, status, xhr]);
129
+ },
130
+ complete: function(xhr, status) {
131
+ element.trigger('ajax:complete', [xhr, status]);
132
+ },
133
+ error: function(xhr, status, error) {
134
+ element.trigger('ajax:error', [xhr, status, error]);
135
+ }
136
+ });
137
+ }
138
+ },
139
+
140
+ // Handles "data-method" on links such as:
141
+ // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
142
+ handleMethod: function(link) {
143
+ var href = link.attr('href'),
144
+ method = link.data('method'),
145
+ csrf_token = $('meta[name=csrf-token]').attr('content'),
146
+ csrf_param = $('meta[name=csrf-param]').attr('content'),
147
+ form = $('<form method="post" action="' + href + '"></form>'),
148
+ metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
149
+
150
+ if (csrf_param !== undefined && csrf_token !== undefined) {
151
+ metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
152
+ }
153
+
154
+ form.hide().append(metadata_input).appendTo('body');
155
+ form.submit();
156
+ },
157
+
158
+ /* Disables form elements:
159
+ - Caches element value in 'ujs:enable-with' data store
160
+ - Replaces element text with value of 'data-disable-with' attribute
161
+ - Adds disabled=disabled attribute
162
+ */
163
+ disableFormElements: function(form) {
164
+ form.find(rails.disableSelector).each(function() {
165
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
166
+ element.data('ujs:enable-with', element[method]());
167
+ element[method](element.data('disable-with'));
168
+ element.attr('disabled', 'disabled');
169
+ });
170
+ },
171
+
172
+ /* Re-enables disabled form elements:
173
+ - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
174
+ - Removes disabled attribute
175
+ */
176
+ enableFormElements: function(form) {
177
+ form.find(rails.enableSelector).each(function() {
178
+ var element = $(this), method = element.is('button') ? 'html' : 'val';
179
+ if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
180
+ element.removeAttr('disabled');
181
+ });
182
+ },
183
+
184
+ /* For 'data-confirm' attribute:
185
+ - Fires `confirm` event
186
+ - Shows the confirmation dialog
187
+ - Fires the `confirm:complete` event
188
+
189
+ Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
190
+ Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
191
+ Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
192
+ return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
193
+ */
194
+ allowAction: function(element) {
195
+ var message = element.data('confirm'),
196
+ answer = false, callback;
197
+ if (!message) { return true; }
198
+
199
+ if (rails.fire(element, 'confirm')) {
200
+ answer = rails.confirm(message);
201
+ callback = rails.fire(element, 'confirm:complete', [answer]);
202
+ }
203
+ return answer && callback;
204
+ },
205
+
206
+ // Helper function which checks for blank inputs in a form that match the specified CSS selector
207
+ blankInputs: function(form, specifiedSelector, nonBlank) {
208
+ var inputs = $(), input,
209
+ selector = specifiedSelector || 'input,textarea';
210
+ form.find(selector).each(function() {
211
+ input = $(this);
212
+ // Collect non-blank inputs if nonBlank option is true, otherwise, collect blank inputs
213
+ if (nonBlank ? input.val() : !input.val()) {
214
+ inputs = inputs.add(input);
215
+ }
216
+ });
217
+ return inputs.length ? inputs : false;
218
+ },
219
+
220
+ // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
221
+ nonBlankInputs: function(form, specifiedSelector) {
222
+ return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
223
+ },
224
+
225
+ // Helper function, needed to provide consistent behavior in IE
226
+ stopEverything: function(e) {
227
+ $(e.target).trigger('ujs:everythingStopped');
228
+ e.stopImmediatePropagation();
229
+ return false;
230
+ },
231
+
232
+ // find all the submit events directly bound to the form and
233
+ // manually invoke them. If anyone returns false then stop the loop
234
+ callFormSubmitBindings: function(form) {
235
+ var events = form.data('events'), continuePropagation = true;
236
+ if (events !== undefined && events['submit'] !== undefined) {
237
+ $.each(events['submit'], function(i, obj){
238
+ if (typeof obj.handler === 'function') return continuePropagation = obj.handler(obj.data);
239
+ });
240
+ }
241
+ return continuePropagation;
242
+ }
243
+ };
244
+
245
+ // ajaxPrefilter is a jQuery 1.5 feature
246
+ if ('ajaxPrefilter' in $) {
247
+ $.ajaxPrefilter(function(options, originalOptions, xhr){ rails.CSRFProtection(xhr); });
248
+ } else {
249
+ $(document).ajaxSend(function(e, xhr){ rails.CSRFProtection(xhr); });
250
+ }
251
+
252
+ $(rails.linkClickSelector).live('click.rails', function(e) {
253
+ var link = $(this);
254
+ if (!rails.allowAction(link)) return rails.stopEverything(e);
255
+
256
+ if (link.data('remote') !== undefined) {
257
+ rails.handleRemote(link);
258
+ return false;
259
+ } else if (link.data('method')) {
260
+ rails.handleMethod(link);
261
+ return false;
262
+ }
263
+ });
264
+
265
+ $(rails.formSubmitSelector).live('submit.rails', function(e) {
266
+ var form = $(this),
267
+ remote = form.data('remote') !== undefined,
268
+ blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),
269
+ nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
270
+
271
+ if (!rails.allowAction(form)) return rails.stopEverything(e);
272
+
273
+ // skip other logic when required values are missing or file upload is present
274
+ if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
275
+ return rails.stopEverything(e);
276
+ }
277
+
278
+ if (remote) {
279
+ if (nonBlankFileInputs) {
280
+ return rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
281
+ }
282
+
283
+ // If browser does not support submit bubbling, then this live-binding will be called before direct
284
+ // bindings. Therefore, we should directly call any direct bindings before remotely submitting form.
285
+ if (!$.support.submitBubbles && rails.callFormSubmitBindings(form) === false) return rails.stopEverything(e);
286
+
287
+ rails.handleRemote(form);
288
+ return false;
289
+ } else {
290
+ // slight timeout so that the submit button gets properly serialized
291
+ setTimeout(function(){ rails.disableFormElements(form); }, 13);
292
+ }
293
+ });
294
+
295
+ $(rails.formInputClickSelector).live('click.rails', function(event) {
296
+ var button = $(this);
297
+
298
+ if (!rails.allowAction(button)) return rails.stopEverything(event);
299
+
300
+ // register the pressed submit button
301
+ var name = button.attr('name'),
302
+ data = name ? {name:name, value:button.val()} : null;
303
+
304
+ button.closest('form').data('ujs:submit-button', data);
305
+ });
306
+
307
+ $(rails.formSubmitSelector).live('ajax:beforeSend.rails', function(event) {
308
+ if (this == event.target) rails.disableFormElements($(this));
309
+ });
310
+
311
+ $(rails.formSubmitSelector).live('ajax:complete.rails', function(event) {
312
+ if (this == event.target) rails.enableFormElements($(this));
313
+ });
314
+
315
+ })( jQuery );
@@ -0,0 +1 @@
1
+ !function(e,t){"use strict";var n=t.prototype.trim,r=t.prototype.trimRight,i=t.prototype.trimLeft,s=function(e){return e*1||0},o=function(e,t){if(t<1)return"";var n="";while(t>0)t&1&&(n+=e),t>>=1,e+=e;return n},u=[].slice,a=function(e){return e==null?"\\s":e.source?e.source:"["+p.escapeRegExp(e)+"]"},f={lt:"<",gt:">",quot:'"',apos:"'",amp:"&"},l={};for(var c in f)l[f[c]]=c;var h=function(){function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}var n=o,r=function(){return r.cache.hasOwnProperty(arguments[0])||(r.cache[arguments[0]]=r.parse(arguments[0])),r.format.call(null,r.cache[arguments[0]],arguments)};return r.format=function(r,i){var s=1,o=r.length,u="",a,f=[],l,c,p,d,v,m;for(l=0;l<o;l++){u=e(r[l]);if(u==="string")f.push(r[l]);else if(u==="array"){p=r[l];if(p[2]){a=i[s];for(c=0;c<p[2].length;c++){if(!a.hasOwnProperty(p[2][c]))throw new Error(h('[_.sprintf] property "%s" does not exist',p[2][c]));a=a[p[2][c]]}}else p[1]?a=i[p[1]]:a=i[s++];if(/[^s]/.test(p[8])&&e(a)!="number")throw new Error(h("[_.sprintf] expecting number but found %s",e(a)));switch(p[8]){case"b":a=a.toString(2);break;case"c":a=t.fromCharCode(a);break;case"d":a=parseInt(a,10);break;case"e":a=p[7]?a.toExponential(p[7]):a.toExponential();break;case"f":a=p[7]?parseFloat(a).toFixed(p[7]):parseFloat(a);break;case"o":a=a.toString(8);break;case"s":a=(a=t(a))&&p[7]?a.substring(0,p[7]):a;break;case"u":a=Math.abs(a);break;case"x":a=a.toString(16);break;case"X":a=a.toString(16).toUpperCase()}a=/[def]/.test(p[8])&&p[3]&&a>=0?"+"+a:a,v=p[4]?p[4]=="0"?"0":p[4].charAt(1):" ",m=p[6]-t(a).length,d=p[6]?n(v,m):"",f.push(p[5]?a+d:d+a)}}return f.join("")},r.cache={},r.parse=function(e){var t=e,n=[],r=[],i=0;while(t){if((n=/^[^\x25]+/.exec(t))!==null)r.push(n[0]);else if((n=/^\x25{2}/.exec(t))!==null)r.push("%");else{if((n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t))===null)throw new Error("[_.sprintf] huh?");if(n[2]){i|=1;var s=[],o=n[2],u=[];if((u=/^([a-z_][a-z_\d]*)/i.exec(o))===null)throw new Error("[_.sprintf] huh?");s.push(u[1]);while((o=o.substring(u[0].length))!=="")if((u=/^\.([a-z_][a-z_\d]*)/i.exec(o))!==null)s.push(u[1]);else{if((u=/^\[(\d+)\]/.exec(o))===null)throw new Error("[_.sprintf] huh?");s.push(u[1])}n[2]=s}else i|=2;if(i===3)throw new Error("[_.sprintf] mixing positional and named placeholders is not (yet) supported");r.push(n)}t=t.substring(n[0].length)}return r},r}(),p={VERSION:"2.3.0",isBlank:function(e){return e==null&&(e=""),/^\s*$/.test(e)},stripTags:function(e){return e==null?"":t(e).replace(/<\/?[^>]+>/g,"")},capitalize:function(e){return e=e==null?"":t(e),e.charAt(0).toUpperCase()+e.slice(1)},chop:function(e,n){return e==null?[]:(e=t(e),n=~~n,n>0?e.match(new RegExp(".{1,"+n+"}","g")):[e])},clean:function(e){return p.strip(e).replace(/\s+/g," ")},count:function(e,n){return e==null||n==null?0:t(e).split(n).length-1},chars:function(e){return e==null?[]:t(e).split("")},swapCase:function(e){return e==null?"":t(e).replace(/\S/g,function(e){return e===e.toUpperCase()?e.toLowerCase():e.toUpperCase()})},escapeHTML:function(e){return e==null?"":t(e).replace(/[&<>"']/g,function(e){return"&"+l[e]+";"})},unescapeHTML:function(e){return e==null?"":t(e).replace(/\&([^;]+);/g,function(e,n){var r;return n in f?f[n]:(r=n.match(/^#x([\da-fA-F]+)$/))?t.fromCharCode(parseInt(r[1],16)):(r=n.match(/^#(\d+)$/))?t.fromCharCode(~~r[1]):e})},escapeRegExp:function(e){return e==null?"":t(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},splice:function(e,t,n,r){var i=p.chars(e);return i.splice(~~t,~~n,r),i.join("")},insert:function(e,t,n){return p.splice(e,t,0,n)},include:function(e,n){return n===""?!0:e==null?!1:t(e).indexOf(n)!==-1},join:function(){var e=u.call(arguments),t=e.shift();return t==null&&(t=""),e.join(t)},lines:function(e){return e==null?[]:t(e).split("\n")},reverse:function(e){return p.chars(e).reverse().join("")},startsWith:function(e,n){return n===""?!0:e==null||n==null?!1:(e=t(e),n=t(n),e.length>=n.length&&e.slice(0,n.length)===n)},endsWith:function(e,n){return n===""?!0:e==null||n==null?!1:(e=t(e),n=t(n),e.length>=n.length&&e.slice(e.length-n.length)===n)},succ:function(e){return e==null?"":(e=t(e),e.slice(0,-1)+t.fromCharCode(e.charCodeAt(e.length-1)+1))},titleize:function(e){return e==null?"":t(e).replace(/(?:^|\s)\S/g,function(e){return e.toUpperCase()})},camelize:function(e){return p.trim(e).replace(/[-_\s]+(.)?/g,function(e,t){return t.toUpperCase()})},underscored:function(e){return p.trim(e).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()},dasherize:function(e){return p.trim(e).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},classify:function(e){return p.titleize(t(e).replace(/_/g," ")).replace(/\s/g,"")},humanize:function(e){return p.capitalize(p.underscored(e).replace(/_id$/,"").replace(/_/g," "))},trim:function(e,r){return e==null?"":!r&&n?n.call(e):(r=a(r),t(e).replace(new RegExp("^"+r+"+|"+r+"+$","g"),""))},ltrim:function(e,n){return e==null?"":!n&&i?i.call(e):(n=a(n),t(e).replace(new RegExp("^"+n+"+"),""))},rtrim:function(e,n){return e==null?"":!n&&r?r.call(e):(n=a(n),t(e).replace(new RegExp(n+"+$"),""))},truncate:function(e,n,r){return e==null?"":(e=t(e),r=r||"...",n=~~n,e.length>n?e.slice(0,n)+r:e)},prune:function(e,n,r){if(e==null)return"";e=t(e),n=~~n,r=r!=null?t(r):"...";if(e.length<=n)return e;var i=function(e){return e.toUpperCase()!==e.toLowerCase()?"A":" "},s=e.slice(0,n+1).replace(/.(?=\W*\w*$)/g,i);return s.slice(s.length-2).match(/\w\w/)?s=s.replace(/\s*\S+$/,""):s=p.rtrim(s.slice(0,s.length-1)),(s+r).length>e.length?e:e.slice(0,s.length)+r},words:function(e,t){return p.isBlank(e)?[]:p.trim(e,t).split(t||/\s+/)},pad:function(e,n,r,i){e=e==null?"":t(e),n=~~n;var s=0;r?r.length>1&&(r=r.charAt(0)):r=" ";switch(i){case"right":return s=n-e.length,e+o(r,s);case"both":return s=n-e.length,o(r,Math.ceil(s/2))+e+o(r,Math.floor(s/2));default:return s=n-e.length,o(r,s)+e}},lpad:function(e,t,n){return p.pad(e,t,n)},rpad:function(e,t,n){return p.pad(e,t,n,"right")},lrpad:function(e,t,n){return p.pad(e,t,n,"both")},sprintf:h,vsprintf:function(e,t){return t.unshift(e),h.apply(null,t)},toNumber:function(e,n){if(e==null||e=="")return 0;e=t(e);var r=s(s(e).toFixed(~~n));return r===0&&!e.match(/^0+$/)?Number.NaN:r},numberFormat:function(e,t,n,r){if(isNaN(e)||e==null)return"";e=e.toFixed(~~t),r=r||",";var i=e.split("."),s=i[0],o=i[1]?(n||".")+i[1]:"";return s.replace(/(\d)(?=(?:\d{3})+$)/g,"$1"+r)+o},strRight:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.indexOf(n):-1;return~r?e.slice(r+n.length,e.length):e},strRightBack:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.lastIndexOf(n):-1;return~r?e.slice(r+n.length,e.length):e},strLeft:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.indexOf(n):-1;return~r?e.slice(0,r):e},strLeftBack:function(e,t){if(e==null)return"";e+="",t=t!=null?""+t:t;var n=e.lastIndexOf(t);return~n?e.slice(0,n):e},toSentence:function(e,t,n,r){t=t||", ",n=n||" and ";var i=e.slice(),s=i.pop();return e.length>2&&r&&(n=p.rtrim(t)+n),i.length?i.join(t)+n+s:s},toSentenceSerial:function(){var e=u.call(arguments);return e[3]=!0,p.toSentence.apply(p,e)},slugify:function(e){if(e==null)return"";var n="ąàáäâãåæćęèéëêìíïîłńòóöôõøùúüûñçżź",r="aaaaaaaaceeeeeiiiilnoooooouuuunczz",i=new RegExp(a(n),"g");return e=t(e).toLowerCase().replace(i,function(e){var t=n.indexOf(e);return r.charAt(t)||"-"}),p.dasherize(e.replace(/[^\w\s-]/g,""))},surround:function(e,t){return[t,e,t].join("")},quote:function(e){return p.surround(e,'"')},exports:function(){var e={};for(var t in this){if(!this.hasOwnProperty(t)||t.match(/^(?:include|contains|reverse)$/))continue;e[t]=this[t]}return e},repeat:function(e,n,r){if(e==null)return"";n=~~n;if(r==null)return o(t(e),n);for(var i=[];n>0;i[--n]=e);return i.join(r)},levenshtein:function(e,n){if(e==null&&n==null)return 0;if(e==null)return t(n).length;if(n==null)return t(e).length;e=t(e),n=t(n);var r=[],i,s;for(var o=0;o<=n.length;o++)for(var u=0;u<=e.length;u++)o&&u?e.charAt(u-1)===n.charAt(o-1)?s=i:s=Math.min(r[u],r[u-1],i)+1:s=o+u,i=r[u],r[u]=s;return r.pop()}};p.strip=p.trim,p.lstrip=p.ltrim,p.rstrip=p.rtrim,p.center=p.lrpad,p.rjust=p.lpad,p.ljust=p.rpad,p.contains=p.include,p.q=p.quote,typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(module.exports=p),exports._s=p):typeof define=="function"&&define.amd?define("underscore.string",[],function(){return p}):(e._=e._||{},e._.string=e._.str=p)}(this,String);
@@ -0,0 +1,5 @@
1
+ // Underscore.js 1.4.2
2
+ // http://underscorejs.org
3
+ // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
4
+ // Underscore may be freely distributed under the MIT license.
5
+ (function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.push,u=r.slice,a=r.concat,f=r.unshift,l=i.toString,c=i.hasOwnProperty,h=r.forEach,p=r.map,d=r.reduce,v=r.reduceRight,m=r.filter,g=r.every,y=r.some,b=r.indexOf,w=r.lastIndexOf,E=Array.isArray,S=Object.keys,x=s.bind,T=function(e){if(e instanceof T)return e;if(!(this instanceof T))return new T(e);this._wrapped=e};typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=T),exports._=T):e._=T,T.VERSION="1.4.2";var N=T.each=T.forEach=function(e,t,r){if(e==null)return;if(h&&e.forEach===h)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i<s;i++)if(t.call(r,e[i],i,e)===n)return}else for(var o in e)if(T.has(e,o)&&t.call(r,e[o],o,e)===n)return};T.map=T.collect=function(e,t,n){var r=[];return e==null?r:p&&e.map===p?e.map(t,n):(N(e,function(e,i,s){r[r.length]=t.call(n,e,i,s)}),r)},T.reduce=T.foldl=T.inject=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(d&&e.reduce===d)return r&&(t=T.bind(t,r)),i?e.reduce(t,n):e.reduce(t);N(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.reduceRight=T.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(v&&e.reduceRight===v)return r&&(t=T.bind(t,r)),arguments.length>2?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=T.keys(e);s=o.length}N(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError("Reduce of empty array with no initial value");return n},T.find=T.detect=function(e,t,n){var r;return C(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},T.filter=T.select=function(e,t,n){var r=[];return e==null?r:m&&e.filter===m?e.filter(t,n):(N(e,function(e,i,s){t.call(n,e,i,s)&&(r[r.length]=e)}),r)},T.reject=function(e,t,n){var r=[];return e==null?r:(N(e,function(e,i,s){t.call(n,e,i,s)||(r[r.length]=e)}),r)},T.every=T.all=function(e,t,r){t||(t=T.identity);var i=!0;return e==null?i:g&&e.every===g?e.every(t,r):(N(e,function(e,s,o){if(!(i=i&&t.call(r,e,s,o)))return n}),!!i)};var C=T.some=T.any=function(e,t,r){t||(t=T.identity);var i=!1;return e==null?i:y&&e.some===y?e.some(t,r):(N(e,function(e,s,o){if(i||(i=t.call(r,e,s,o)))return n}),!!i)};T.contains=T.include=function(e,t){var n=!1;return e==null?n:b&&e.indexOf===b?e.indexOf(t)!=-1:(n=C(e,function(e){return e===t}),n)},T.invoke=function(e,t){var n=u.call(arguments,2);return T.map(e,function(e){return(T.isFunction(t)?t:e[t]).apply(e,n)})},T.pluck=function(e,t){return T.map(e,function(e){return e[t]})},T.where=function(e,t){return T.isEmpty(t)?[]:T.filter(e,function(e){for(var n in t)if(t[n]!==e[n])return!1;return!0})},T.max=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&T.isEmpty(e))return-Infinity;var r={computed:-Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o>=r.computed&&(r={value:e,computed:o})}),r.value},T.min=function(e,t,n){if(!t&&T.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&T.isEmpty(e))return Infinity;var r={computed:Infinity};return N(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;o<r.computed&&(r={value:e,computed:o})}),r.value},T.shuffle=function(e){var t,n=0,r=[];return N(e,function(e){t=T.random(n++),r[n-1]=r[t],r[t]=e}),r};var k=function(e){return T.isFunction(e)?e:function(t){return t[e]}};T.sortBy=function(e,t,n){var r=k(t);return T.pluck(T.map(e,function(e,t,i){return{value:e,index:t,criteria:r.call(n,e,t,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index<t.index?-1:1}),"value")};var L=function(e,t,n,r){var i={},s=k(t);return N(e,function(t,o){var u=s.call(n,t,o,e);r(i,u,t)}),i};T.groupBy=function(e,t,n){return L(e,t,n,function(e,t,n){(T.has(e,t)?e[t]:e[t]=[]).push(n)})},T.countBy=function(e,t,n){return L(e,t,n,function(e,t,n){T.has(e,t)||(e[t]=0),e[t]++})},T.sortedIndex=function(e,t,n,r){n=n==null?T.identity:k(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},T.toArray=function(e){return e?e.length===+e.length?u.call(e):T.values(e):[]},T.size=function(e){return e.length===+e.length?e.length:T.keys(e).length},T.first=T.head=T.take=function(e,t,n){return t!=null&&!n?u.call(e,0,t):e[0]},T.initial=function(e,t,n){return u.call(e,0,e.length-(t==null||n?1:t))},T.last=function(e,t,n){return t!=null&&!n?u.call(e,Math.max(e.length-t,0)):e[e.length-1]},T.rest=T.tail=T.drop=function(e,t,n){return u.call(e,t==null||n?1:t)},T.compact=function(e){return T.filter(e,function(e){return!!e})};var A=function(e,t,n){return N(e,function(e){T.isArray(e)?t?o.apply(n,e):A(e,t,n):n.push(e)}),n};T.flatten=function(e,t){return A(e,t,[])},T.without=function(e){return T.difference(e,u.call(arguments,1))},T.uniq=T.unique=function(e,t,n,r){var i=n?T.map(e,n,r):e,s=[],o=[];return N(i,function(n,r){if(t?!r||o[o.length-1]!==n:!T.contains(o,n))o.push(n),s.push(e[r])}),s},T.union=function(){return T.uniq(a.apply(r,arguments))},T.intersection=function(e){var t=u.call(arguments,1);return T.filter(T.uniq(e),function(e){return T.every(t,function(t){return T.indexOf(t,e)>=0})})},T.difference=function(e){var t=a.apply(r,u.call(arguments,1));return T.filter(e,function(e){return!T.contains(t,e)})},T.zip=function(){var e=u.call(arguments),t=T.max(T.pluck(e,"length")),n=new Array(t);for(var r=0;r<t;r++)n[r]=T.pluck(e,""+r);return n},T.object=function(e,t){var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},T.indexOf=function(e,t,n){if(e==null)return-1;var r=0,i=e.length;if(n){if(typeof n!="number")return r=T.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(b&&e.indexOf===b)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},T.lastIndexOf=function(e,t,n){if(e==null)return-1;var r=n!=null;if(w&&e.lastIndexOf===w)return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},T.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var O=function(){};T.bind=function(t,n){var r,i;if(t.bind===x&&x)return x.apply(t,u.call(arguments,1));if(!T.isFunction(t))throw new TypeError;return i=u.call(arguments,2),r=function(){if(this instanceof r){O.prototype=t.prototype;var e=new O,s=t.apply(e,i.concat(u.call(arguments)));return Object(s)===s?s:e}return t.apply(n,i.concat(u.call(arguments)))}},T.bindAll=function(e){var t=u.call(arguments,1);return t.length==0&&(t=T.functions(e)),N(t,function(t){e[t]=T.bind(e[t],e)}),e},T.memoize=function(e,t){var n={};return t||(t=T.identity),function(){var r=t.apply(this,arguments);return T.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},T.delay=function(e,t){var n=u.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},T.defer=function(e){return T.delay.apply(T,[e,1].concat(u.call(arguments,1)))},T.throttle=function(e,t){var n,r,i,s,o,u,a=T.debounce(function(){o=s=!1},t);return function(){n=this,r=arguments;var f=function(){i=null,o&&(u=e.apply(n,r)),a()};return i||(i=setTimeout(f,t)),s?o=!0:(s=!0,u=e.apply(n,r)),a(),u}},T.debounce=function(e,t,n){var r,i;return function(){var s=this,o=arguments,u=function(){r=null,n||(i=e.apply(s,o))},a=n&&!r;return clearTimeout(r),r=setTimeout(u,t),a&&(i=e.apply(s,o)),i}},T.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},T.wrap=function(e,t){return function(){var n=[e];return o.apply(n,arguments),t.apply(this,n)}},T.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},T.after=function(e,t){return e<=0?t():function(){if(--e<1)return t.apply(this,arguments)}},T.keys=S||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)T.has(e,n)&&(t[t.length]=n);return t},T.values=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push(e[n]);return t},T.pairs=function(e){var t=[];for(var n in e)T.has(e,n)&&t.push([n,e[n]]);return t},T.invert=function(e){var t={};for(var n in e)T.has(e,n)&&(t[e[n]]=n);return t},T.functions=T.methods=function(e){var t=[];for(var n in e)T.isFunction(e[n])&&t.push(n);return t.sort()},T.extend=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]=t[n]}),e},T.pick=function(e){var t={},n=a.apply(r,u.call(arguments,1));return N(n,function(n){n in e&&(t[n]=e[n])}),t},T.omit=function(e){var t={},n=a.apply(r,u.call(arguments,1));for(var i in e)T.contains(n,i)||(t[i]=e[i]);return t},T.defaults=function(e){return N(u.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},T.clone=function(e){return T.isObject(e)?T.isArray(e)?e.slice():T.extend({},e):e},T.tap=function(e,t){return t(e),e};var M=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof T&&(e=e._wrapped),t instanceof T&&(t=t._wrapped);var i=l.call(e);if(i!=l.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;n.push(e),r.push(t);var o=0,u=!0;if(i=="[object Array]"){o=e.length,u=o==t.length;if(u)while(o--)if(!(u=M(e[o],t[o],n,r)))break}else{var a=e.constructor,f=t.constructor;if(a!==f&&!(T.isFunction(a)&&a instanceof a&&T.isFunction(f)&&f instanceof f))return!1;for(var c in e)if(T.has(e,c)){o++;if(!(u=T.has(t,c)&&M(e[c],t[c],n,r)))break}if(u){for(c in t)if(T.has(t,c)&&!(o--))break;u=!o}}return n.pop(),r.pop(),u};T.isEqual=function(e,t){return M(e,t,[],[])},T.isEmpty=function(e){if(e==null)return!0;if(T.isArray(e)||T.isString(e))return e.length===0;for(var t in e)if(T.has(e,t))return!1;return!0},T.isElement=function(e){return!!e&&e.nodeType===1},T.isArray=E||function(e){return l.call(e)=="[object Array]"},T.isObject=function(e){return e===Object(e)},N(["Arguments","Function","String","Number","Date","RegExp"],function(e){T["is"+e]=function(t){return l.call(t)=="[object "+e+"]"}}),T.isArguments(arguments)||(T.isArguments=function(e){return!!e&&!!T.has(e,"callee")}),typeof /./!="function"&&(T.isFunction=function(e){return typeof e=="function"}),T.isFinite=function(e){return T.isNumber(e)&&isFinite(e)},T.isNaN=function(e){return T.isNumber(e)&&e!=+e},T.isBoolean=function(e){return e===!0||e===!1||l.call(e)=="[object Boolean]"},T.isNull=function(e){return e===null},T.isUndefined=function(e){return e===void 0},T.has=function(e,t){return c.call(e,t)},T.noConflict=function(){return e._=t,this},T.identity=function(e){return e},T.times=function(e,t,n){for(var r=0;r<e;r++)t.call(n,r)},T.random=function(e,t){return t==null&&(t=e,e=0),e+(0|Math.random()*(t-e+1))};var _={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};_.unescape=T.invert(_.escape);var D={escape:new RegExp("["+T.keys(_.escape).join("")+"]","g"),unescape:new RegExp("("+T.keys(_.unescape).join("|")+")","g")};T.each(["escape","unescape"],function(e){T[e]=function(t){return t==null?"":(""+t).replace(D[e],function(t){return _[e][t]})}}),T.result=function(e,t){if(e==null)return null;var n=e[t];return T.isFunction(n)?n.call(e):n},T.mixin=function(e){N(T.functions(e),function(t){var n=T[t]=e[t];T.prototype[t]=function(){var e=[this._wrapped];return o.apply(e,arguments),F.call(this,n.apply(T,e))}})};var P=0;T.uniqueId=function(e){var t=P++;return e?e+t:t},T.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var H=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},j=/\\|'|\r|\n|\t|\u2028|\u2029/g;T.template=function(e,t,n){n=T.defaults({},n,T.templateSettings);var r=new RegExp([(n.escape||H).source,(n.interpolate||H).source,(n.evaluate||H).source].join("|")+"|$","g"),i=0,s="__p+='";e.replace(r,function(t,n,r,o,u){s+=e.slice(i,u).replace(j,function(e){return"\\"+B[e]}),s+=n?"'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?"'+\n((__t=("+r+"))==null?'':__t)+\n'":o?"';\n"+o+"\n__p+='":"",i=u+t.length}),s+="';\n",n.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{var o=new Function(n.variable||"obj","_",s)}catch(u){throw u.source=s,u}if(t)return o(t,T);var a=function(e){return o.call(this,e,T)};return a.source="function("+(n.variable||"obj")+"){\n"+s+"}",a},T.chain=function(e){return T(e).chain()};var F=function(e){return this._chain?T(e).chain():e};T.mixin(T),N(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=r[e];T.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],F.call(this,n)}}),N(["concat","join","slice"],function(e){var t=r[e];T.prototype[e]=function(){return F.call(this,t.apply(this._wrapped,arguments))}}),T.extend(T.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
@@ -0,0 +1 @@
1
+ /* This file is overrideable by the host app, allowing stylesheet customisation. */
@@ -0,0 +1,2237 @@
1
+ html {
2
+ overflow-x: hidden;
3
+ overflow-y: scroll;
4
+ }
5
+ body {
6
+ font: 0.75em/1.2 Helvetica, Arial, sans-serif;
7
+ background-color: #fff;
8
+ min-width: 860px;
9
+ height: auto;
10
+ min-height: 100%;
11
+ position: relative;
12
+ }
13
+ #main {
14
+ margin: 0 auto;
15
+ padding: 20px 0;
16
+ }
17
+ body.devise {
18
+ background-color: #bbb;
19
+ }
20
+ body.site-maps {
21
+ background-color: #bbb;
22
+ }
23
+ body.devise header {
24
+ display: none
25
+ }
26
+ body.pages {
27
+ background-color: #bbb;
28
+ }
29
+ body.assets {
30
+ background-color: #666;
31
+ }
32
+ body.site-maps #main,
33
+ body.pages #main {
34
+ width: 811px;
35
+ }
36
+ body.site-maps #main {
37
+ padding-top: 17px;
38
+ }
39
+ body.pages #main section {
40
+ background-color: #fff;
41
+ padding: 20px 15px;
42
+ -moz-box-shadow: 0px 3px 8px rgba(0,0,0,0.2); /* FF3.5+ */
43
+ -webkit-box-shadow: 0px 3px 8px rgba(0,0,0,0.2); /* Saf3.0+, Chrome */
44
+ box-shadow: 0px 3px 8px rgba(0,0,0,0.2); /* Opera 10.5, IE9 */
45
+ border-radius: 2px;
46
+ }
47
+ p, h1, h2, h3, h4, h5, label {
48
+ -webkit-user-select: auto;
49
+ }
50
+ #show-meta {
51
+ margin-bottom: 1.5em;
52
+ display: block;
53
+ overflow: hidden;
54
+ }
55
+ #show-meta a {
56
+ background-color: #E2E2E2;
57
+ border: 1px solid #D7D7D7;
58
+ border-top: 0 none;
59
+ color: #333;
60
+ cursor: hand;
61
+ cursor: pointer;
62
+ display: block;
63
+ float: left;
64
+ font-size: 11px;
65
+ font-weight: bold;
66
+ padding: 4px 10px;
67
+ text-decoration: none;
68
+ }
69
+ #show-meta.open {
70
+ margin-top: -1px;
71
+ }
72
+
73
+ /*IE Warning*/
74
+ .notice {
75
+ padding: 0.8em;
76
+ text-align: center;
77
+ background: yellow;
78
+ color: black;
79
+ font-weight: bold;
80
+ font-size: 15px;
81
+ margin-top: 0px;
82
+ margin-bottom: 20px;
83
+ }
84
+ .notice a {
85
+ text-decoration: underline;
86
+ color: black;
87
+ }
88
+
89
+ /*End IE Warning*/
90
+ #server-communication {
91
+ position: fixed;
92
+ top: 0;
93
+ margin: 0 auto;
94
+ right: 0;
95
+ background: #D82E32;
96
+ color: #fff;
97
+ padding: 3px 10px;
98
+ font-weight: bold;
99
+ z-index: 9999;
100
+ display: none;
101
+ }
102
+ #container {
103
+ min-width: 720px;
104
+ padding-top: 80px;
105
+ }
106
+ input,
107
+ textarea,
108
+ select,
109
+ button,
110
+ .add,
111
+ .button,
112
+ .standard,
113
+ .switcher li a {
114
+ font-family: Helvetica, Arial, sans-serif;
115
+ font-size: 12px;
116
+ margin: 0;
117
+ }
118
+ input[type="text"],
119
+ input[type="search"],
120
+ input[type="password"],
121
+ textarea,
122
+ button {
123
+ -webkit-appearance: none
124
+ }
125
+
126
+ /* Master button styles*/
127
+ input[type="submit"],
128
+ button[type="submit"],
129
+ input[type="reset"],
130
+ .add,
131
+ .button,
132
+ .standard,
133
+ button {
134
+ padding: 6px 10px;
135
+ border-radius: 2px;
136
+ border: solid 1px rgb(153, 153, 153);
137
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 255, 255)), to(rgb(221, 221, 221)));
138
+ color: #333;
139
+ text-decoration: none;
140
+ cursor: pointer;
141
+ display: inline-block;
142
+ text-align: center;
143
+ text-shadow: 0px 1px 1px rgba(255,255,255,1);
144
+ line-height: 1;
145
+ -webkit-user-select: none;
146
+ -moz-user-select: none;
147
+ -ms-user-select: none;
148
+ -o-user-select: none;
149
+ user-select: none;
150
+ }
151
+
152
+ button[type="submit"]:active,
153
+ input[type="submit"]:active,
154
+ input[type="reset"]:active,
155
+ .add:active,
156
+ .button:active,
157
+ .standard:active,
158
+ button:active {
159
+ box-shadow:
160
+ inset 0px 0px 16px rgba(0,0,0,0.2),
161
+ inset 0px 1px 4px rgba(0,0,0,0.6);
162
+ border-color: #888;
163
+ border-top-color: #666;
164
+ color: rgba(0,0,0,0.65);
165
+ }
166
+
167
+ /*
168
+ Submit Button
169
+ */
170
+
171
+ button[type="submit"],
172
+ input[type="submit"] {
173
+ background-color: hsl(107, 40%, 46%);
174
+ background: -webkit-linear-gradient(
175
+ hsl(106, 42%, 57%) 17%,
176
+ hsl(107, 40%, 46%) 80%
177
+ );
178
+ border: 1px solid hsl(107, 64%, 32%);
179
+ color: white;
180
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
181
+ font-weight: bold;
182
+ }
183
+
184
+ button[type="submit"]:active,
185
+ input[type="submit"]:active {
186
+ border: 1px solid hsl(107, 64%, 26%);
187
+ box-shadow:
188
+ inset 0px 0px 16px rgba(0,0,0,0.2),
189
+ inset 0px 1px 4px rgba(0,0,0,0.2);
190
+ color: white;
191
+ }
192
+
193
+ button[type="submit"]:disabled,
194
+ input[type="submit"]:disabled {
195
+ background: hsl(106, 22%, 57%);
196
+ background: -webkit-linear-gradient(
197
+ hsl(106, 22%, 57%) 17%,
198
+ hsl(107, 20%, 46%) 80%
199
+ );
200
+ border: 1px solid hsl(107, 30%, 32%);
201
+ cursor: default;
202
+ opacity: 0.5;
203
+ }
204
+
205
+ /*
206
+ Search
207
+ */
208
+
209
+ input[type="search"] {
210
+ box-sizing: border-box;
211
+ padding-left: 18px;
212
+ background: #fff url(<%= asset_path('slices/icon_search.png') %>) no-repeat 6px 4px;
213
+ border: 1px solid #d7d7d7;
214
+ vertical-align: baseline;
215
+ }
216
+ input[type="search"]:focus {
217
+ outline: none;
218
+ border-color: #aaa;
219
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
220
+ }
221
+ button.delete {
222
+ background: #8a1c1c;
223
+ background: -webkit-linear-gradient(top, #8a1c1c 0%, #611111 100%);
224
+ border-color: rgb(97, 17, 17);
225
+ color: #fff;
226
+ text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.75);
227
+ }
228
+
229
+ .small-button {
230
+ padding: 2px 6px;
231
+ }
232
+
233
+ .slices-holder .ui-sortable-helper {
234
+ -webkit-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
235
+ -moz-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
236
+ -ms-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
237
+ box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
238
+ -webkit-background-clip: padding-box;
239
+ -moz-background-clip: padding-box;
240
+ -ms-background-clip: padding-box;
241
+ background-clip: padding-box;
242
+ }
243
+
244
+ .button:hover {
245
+ text-decoration: none;
246
+ }
247
+
248
+ /* End button styles*/
249
+ #sitemap li .button {
250
+ padding: 5px 10px 4px;
251
+ margin-top: 4px;
252
+ }
253
+ #sitemap .item-actions {
254
+ visibility: hidden;
255
+ }
256
+ #sitemap .item-actions.primary {}
257
+ #sitemap .item-actions.secondary {
258
+ position: absolute;
259
+ right: 7px;
260
+ opacity: 0.5;
261
+ }
262
+ #sitemap .item-actions.secondary:hover {
263
+ opacity: 1;
264
+ }
265
+ #sitemap li > div:hover .item-actions {
266
+ visibility: visible;
267
+ }
268
+ #sitemap.unlocked li > div:hover .item-actions {
269
+ visibility: hidden;
270
+ }
271
+ #sitemap .item-actions .view-page {
272
+ margin-left: 20px;
273
+ color: #888;
274
+ }
275
+ #sitemap .item-actions .view-page:hover {
276
+ color: #222;
277
+ text-decoration: none;
278
+ }
279
+
280
+ .toolbar {
281
+ background: #DADADA;
282
+ height: 40px;
283
+ background: -webkit-gradient(linear, 0% 100%, 0% 0%, from(#D2D2D2), to(#F0F0F0));
284
+ -webkit-box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 3px;
285
+ -moz-box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 3px;
286
+ -ms-box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 3px;
287
+ box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 3px;
288
+ }
289
+ .toolbar input[type="search"] {
290
+ float: left;
291
+ height: 24px;
292
+ margin-left: 15px;
293
+ margin-top: 8px;
294
+ width: 204px;
295
+ }
296
+ .search-form input[type="text"] {
297
+ border: none;
298
+ width: 160px;
299
+ padding: 1px 1px 1px 1px;
300
+ }
301
+ .search-form input[type="submit"] {
302
+ border: none;
303
+ background: url(<%= asset_path('slices/icon_search.png') %>) no-repeat 0 0;
304
+ height: 16px;
305
+ text-indent: -9999em;
306
+ padding: 0;
307
+ margin: 0;
308
+ width: 16px;
309
+ }
310
+ .toolbar .breadcrumb {
311
+ float: left;
312
+ padding-top: 0.5em;
313
+ }
314
+ .toolbar a {
315
+ cursor: pointer;
316
+ }
317
+ #container-actions {
318
+ top: 40px;
319
+ position: absolute;
320
+ right: 0;
321
+ left: 0;
322
+ z-index: 5;
323
+ }
324
+ a {
325
+ color: #0075D8;
326
+ text-decoration: none;
327
+ }
328
+ a:hover {
329
+ text-decoration: underline
330
+ }
331
+ header {
332
+ background: #282828;
333
+ left: 0;
334
+ top: 0;
335
+ position: absolute;
336
+ right: 0;
337
+ z-index: 5;
338
+ overflow: hidden;
339
+ *display: inline-block;
340
+ padding: 0;
341
+ text-align: right;
342
+ color: #666666;
343
+ line-height: 11px;
344
+ background: -webkit-gradient(linear, 0% 100%, 0% 0%, from(black), to(#282828));
345
+ border-bottom: 1px solid #1F201F;
346
+ height: 40px;
347
+ }
348
+ .toolbar nav {
349
+ float: left;
350
+ padding-left: 19px;
351
+ }
352
+ header ul {
353
+ float: right;
354
+ overflow: visible;
355
+ height: 40px;
356
+ margin-left: 4px;
357
+ margin-right: 19px;
358
+ }
359
+ header ul li {
360
+ float: left;
361
+ height: 39px;
362
+ line-height: 39px;
363
+ font-size: 11px;
364
+ color: #6b6b6b;
365
+ font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
366
+ text-shadow: 0 1px 0 rgba(0, 0, 0, 1);
367
+ }
368
+ header ul li a {
369
+ color: #aaaaaa;
370
+ display: inline-block;
371
+ padding: 0px 5px;
372
+ background-repeat: no-repeat;
373
+ background-position: 8px 50%;
374
+ }
375
+ header nav {
376
+ -webkit-font-smoothing: antialiased;
377
+ }
378
+ header nav ul li:first-child a {
379
+ background-image: url(<%= asset_path('slices/icon_sitemap.png') %>)
380
+ }
381
+ header nav ul li:nth-child(2) a {
382
+ background-image: url(<%= asset_path('slices/icon_assets.png') %>)
383
+ }
384
+ header nav ul li:nth-child(3) a {
385
+ background-image: url(<%= asset_path('slices/icon_snippets.png') %>)
386
+ }
387
+ header nav ul li#admin-nav-administrators a {
388
+ background-image: url(<%= asset_path('slices/icon_admins.png') %>)
389
+ }
390
+ header ul li:first-child {
391
+ /*Correct margin for text only username*/
392
+ margin-right: 9px;
393
+ }
394
+ header nav ul li:first-child {
395
+ /*Correct nav*/
396
+ margin-right: 0px;
397
+ }
398
+ header ul li:first-child {
399
+ /*margin-left: -1em;_NO__DOTCOMMA__AFTER__*/
400
+ }
401
+ header nav ul {
402
+ overflow: hidden;
403
+ float: left;
404
+ font-size: 1.083em;
405
+ font-weight: bold;
406
+ margin-left: 15px;
407
+ }
408
+ header nav ul li {
409
+ margin: 0px;
410
+ padding: 0px;
411
+ margin-left: 0px;
412
+ font-family: Arial, Helvetica, sans-serif;
413
+ }
414
+ header nav li a {
415
+ display: inline-block;
416
+ color: #fff!important;
417
+ padding: 0px 10px;
418
+ padding-left: 30px;
419
+ padding-right: 15px;
420
+ font-size: 13px;
421
+ }
422
+ header nav .active {
423
+ color: #fff;
424
+ background-color: #000;
425
+ }
426
+ header nav li:hover a {
427
+ background-color: #222222;
428
+ text-decoration: none!important;
429
+ }
430
+ header nav .active a {
431
+ color: #4C4C4C
432
+ }
433
+ header ul li,
434
+ .toolbar ul li {
435
+ display: inline
436
+ }
437
+ .actions {
438
+ float: right;
439
+ }
440
+ .toolbar .actions {
441
+ position: absolute;
442
+ right: 24px;
443
+ top: 0;
444
+ }
445
+ .toolbar .actions li {
446
+ margin-left: 7px
447
+ }
448
+ .toolbar .actions a,
449
+ .toolbar .actions input {
450
+ position: relative;
451
+ top: 8px;
452
+ padding-top: 5px;
453
+ padding-bottom: 5px;
454
+ vertical-align: baseline;
455
+ }
456
+ .toolbar .actions .button {
457
+ position: relative;
458
+ top: 8px;
459
+ text-decoration: none;
460
+ }
461
+
462
+ /* Sitemap page */
463
+ .toolbar p,
464
+ .toolbar nav ul li.back a {
465
+ color: #696969;
466
+ font-weight: normal;
467
+ font-size: 11px;
468
+ font-family: "Lucida Grande", Arial, Helvetica, sans-serif;
469
+ line-height: 38px;
470
+ letter-spacing: 0px;
471
+ }
472
+ .toolbar a {
473
+ text-decoration: underline
474
+ }
475
+ #structure-locked,
476
+ #structure-unlocked p {
477
+ padding-left: 24px;
478
+ float: left;
479
+ }
480
+ #structure-locked a,
481
+ #structure-unlocked a {
482
+ color: #696969;
483
+ font-weight: normal;
484
+ text-decoration: underline;
485
+ }
486
+ #structure-unlocked {
487
+ display: none
488
+ }
489
+ #structure-unlocked p {
490
+ background-position: 0 -18px
491
+ }
492
+ #sitemap ol,
493
+ #virtual-pages ol {
494
+ margin: 0 0 0 30px
495
+ }
496
+ #sitemap li,
497
+ #virtual-pages li {
498
+ list-style: none;
499
+ text-align: left;
500
+ margin-top: 3px !important;
501
+ position: relative;
502
+ }
503
+ #sitemap.unlocked li {
504
+ cursor: move
505
+ }
506
+ #sitemap li a.delete,
507
+ #virtual-pages li a.delete {
508
+ position: absolute;
509
+ top: 0;
510
+ right: 5px;
511
+ color: #860202;
512
+ }
513
+ #sitemap ol,
514
+ #virtual-pages ol {
515
+ margin-top: 3px !important
516
+ }
517
+ #sitemap ol li:last-child,
518
+ #virtual-pages ol li:last-child {
519
+ padding-bottom: 0
520
+ }
521
+ #sitemap .placeholder,
522
+ #virtual-pages .placeholder {
523
+ background-color: #d2d2d2
524
+ }
525
+ #sitemap li h2,
526
+ #virtual-pages li h2 {
527
+ float: left;
528
+ padding-left: 6px;
529
+ margin-left: 5px;
530
+ line-height: 31px;
531
+ background-repeat: no-repeat;
532
+ background-position: 0px 50%;
533
+ }
534
+ #sitemap li h2 a,
535
+ #virtual-pages li h2 a {
536
+ color: #4f4f4f;
537
+ margin-right: 25px;
538
+ }
539
+ #sitemap li.set-link h2,
540
+ #virtual-pages li.set-link h2 {
541
+ background-image: url(<%= asset_path('slices/icon_set-link.png') %>);
542
+ padding-left: 20px;
543
+ }
544
+ #sitemap li a.sort,
545
+ #virtual-pages li a.sort {
546
+ margin: 0 0 0 1em;
547
+ display: none;
548
+ }
549
+ #sitemap.unlocked li a.sort,
550
+ #virtual-pages.unlocked li a.sort {
551
+ margin-left: -20px;
552
+ text-align: left;
553
+ display: block;
554
+ }
555
+ #sitemap li.set>ul>li>div a.sort,
556
+ #sitemap li.set>ul>li>div:hover a.sort {
557
+ display: none
558
+ }
559
+ #sitemap li>div,
560
+ #virtual-pages li>div {
561
+ background: #fff;
562
+ overflow: hidden;
563
+ -moz-border-radius: 2px; /* FF1+ */
564
+ -webkit-border-radius: 2px; /* Saf3-4 */
565
+ border-radius: 2px; /* Opera 10.5, IE9, Saf5, Chrome */
566
+ -moz-box-shadow: 0px 1px 2px rgba(0,0,0,0.1); /* FF3.5+ */
567
+ -webkit-box-shadow: 0px 1px 2px rgba(0,0,0,0.1); /* Saf3.0+, Chrome */
568
+ box-shadow: 0px 1px 2px rgba(0,0,0,0.1); /* Opera 10.5, IE9 */
569
+ padding-left: 22px;
570
+ background-repeat: no-repeat;
571
+ }
572
+ #sitemap li.page > div {
573
+ background-image: url(<%= asset_path('slices/sitemap_icon_page.png') %>);
574
+ }
575
+ #virtual-pages li.page > div {
576
+ background-image: url(<%= asset_path('slices/sitemap_icon_virtual_page.png') %>);
577
+ }
578
+ #sitemap li.home > div {
579
+ background-image: url(<%= asset_path('slices/sitemap_icon_home.png') %>);
580
+ }
581
+ #sitemap li.set-page > div {
582
+ background-image: url(<%= asset_path('slices/sitemap_icon_set_page.png') %>);
583
+ }
584
+ #sitemap li>div:hover,
585
+ #virtual-pages li>div:hover {
586
+ background-color: #f1f1f1
587
+ }
588
+ #sitemap .nested-error,
589
+ #virtual-pages .nested-error {
590
+ background-color: #f1888c;
591
+ color: #8a1f11;
592
+ }
593
+ #sitemap
594
+ #virtual-pages {
595
+ margin-left: 15px;
596
+ margin-right: 15px;
597
+ }
598
+ #sitemap {
599
+ background: url(<%= asset_path('slices/sitemap_overlay.png') %>);
600
+ padding-bottom: 60px;
601
+ }
602
+ #sitemap-divider {
603
+ display: block;
604
+ height: 64px;
605
+ margin: 0;
606
+ margin-top: -60px;
607
+ color: transparent;
608
+ border: none;
609
+
610
+ background: -moz-linear-gradient(top, rgba(187,187,187,0) 0%, rgba(187,187,187,1) 100%);
611
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(187,187,187,0)), color-stop(100%,rgba(187,187,187,1)));
612
+ background: -webkit-linear-gradient(top, rgba(187,187,187,0) 0%,rgba(187,187,187,1) 100%);
613
+ background: -o-linear-gradient(top, rgba(187,187,187,0) 0%,rgba(187,187,187,1) 100%);
614
+ background: -ms-linear-gradient(top, rgba(187,187,187,0) 0%,rgba(187,187,187,1) 100%);
615
+ background: linear-gradient(top, rgba(187,187,187,0) 0%,rgba(187,187,187,1) 100%);
616
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ece5eb', endColorstr='#bbbbbb',GradientType=0 );
617
+ }
618
+
619
+ /* Edit slices pages */
620
+ #page-meta {
621
+ display: none;
622
+ background-color: #E2E2E2;
623
+ overflow: auto;
624
+ border: 1px solid #CFCFCF;
625
+ border-top: 0 none;
626
+ padding-bottom: 5px;
627
+ }
628
+ #page-meta > li {
629
+ padding: 5px 10px 10px;
630
+ border-bottom: 1px solid #999;
631
+ border-bottom: 1px dotted #c8c8c8;
632
+ }
633
+ #page-meta > li:last-child {
634
+ border-bottom: 0 none;
635
+ }
636
+ #page-meta .label {
637
+ margin-bottom: 4px
638
+ }
639
+ #page-meta .field-items {
640
+ line-height: 2;
641
+ }
642
+ #page-meta .field-items label {
643
+ display: inline;
644
+ font-weight: normal;
645
+ }
646
+ #page-meta input[type="checkbox"] {
647
+ margin: 0 5px 0 2px;
648
+ }
649
+ input[type='text']:focus,
650
+ textarea:focus {
651
+ outline: none
652
+ }
653
+ span.editinplace {
654
+ display: block;
655
+ cursor: pointer;
656
+ min-height: 1em;
657
+ }
658
+ span.editinplace:hover {
659
+ background: #DCDCDC;
660
+ cursor: text;
661
+ }
662
+ input[type="checkbox"],
663
+ input[type="radio"] {
664
+ width: auto;
665
+ margin: 0 5px 0 0;
666
+ border: 0;
667
+ }
668
+ fieldset label {
669
+ width: auto !important;
670
+ margin-left: 0 !important;
671
+ float: none !important;
672
+ display: inline !important;
673
+ color: #999 !important;
674
+ }
675
+ aside fieldset label {
676
+ /*float: left !important;_NO__DOTCOMMA__AFTER__*/
677
+ }
678
+ form ul fieldset li {
679
+ display: inline
680
+ }
681
+ form aside ul fieldset li {
682
+ display: block
683
+ }
684
+ form ul li {
685
+ display: block;
686
+ padding: 0;
687
+ margin: 0;
688
+ overflow: visible;
689
+ *display: inline-block;
690
+ }
691
+ form #main ul {
692
+ padding: 0
693
+ }
694
+ form #main #meta-top ol,
695
+ form #main #meta-top ul {
696
+ margin-left: 0
697
+ }
698
+ form #main ul ul.multi-tag-list,
699
+ form #main ul ul.single-tag-list {
700
+ margin: 0.5em 0 0 0;
701
+ }
702
+ .multi-tag-list li,
703
+ .single-tag-list li {
704
+ display: inline-block;
705
+ color: #007de6;
706
+ cursor: pointer;
707
+ }
708
+ .multi-tag-list li.on,
709
+ .single-tag-list li.on {
710
+ color: #999
711
+ }
712
+ .multi-tag-list li:after,
713
+ .single-tag-list li:after {
714
+ content: ',';
715
+ color: #007de6 !important;
716
+ }
717
+ .multi-tag-list li:last-child:after,
718
+ .single-tag-list li:last-child:after {
719
+ content: '';
720
+ }
721
+ form #main ul ul {
722
+ margin-left: 0
723
+ }
724
+ #container-slices {
725
+ background: #FAFAFA;
726
+ border: 1px solid #cfcfcf;
727
+ text-align: center;
728
+ -webkit-border-bottom-left-radius: 2px;
729
+ -webkit-border-bottom-right-radius: 2px;
730
+ }
731
+ form #main #container-tab-controls {
732
+ margin: 0em;
733
+ text-align: left;
734
+ background: #E2E2E2;
735
+ padding: 5px;
736
+ }
737
+ .switcher {
738
+ float: left;
739
+ position: relative;
740
+ top: 8px;
741
+ margin-left: 10px;
742
+ }
743
+ .switcher li {
744
+ float: left
745
+ }
746
+ #container-tab-controls li,
747
+ .switcher li {
748
+ display: inline;
749
+ list-style: none;
750
+ }
751
+ #container-tab-controls li a,
752
+ .switcher li a {
753
+ font-weight: bold;
754
+ color: #696969;
755
+ display: inline-block;
756
+ padding: 5px 12px;
757
+ text-decoration: none!important;
758
+ margin: 0;
759
+ font-size: 11px;
760
+ text-shadow: 0px 1px 0px rgba(255,255,255,0.7);
761
+ border-right: 1px solid #989898;
762
+ border-bottom: 1px solid #989898;
763
+ border-top: 1px solid #989898;
764
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 255, 255)), to(rgb(221, 221, 221)));
765
+ }
766
+ #container-tab-controls li a:hover,
767
+ .switcher li a:hover {
768
+ text-decoration: none
769
+ }
770
+ #container-tab-controls li a.active,
771
+ .switcher li.active a {
772
+ text-decoration: none!important;
773
+ color: #696969;
774
+ background: #CECECE;
775
+ -webkit-box-shadow: inset 1px 1px 2px 0px rgba(0,0,0,0.3);
776
+ -moz-box-shadow: inset 1px 1px 2px 0px rgba(0,0,0,0.3);
777
+ box-shadow: inset 1px 1px 2px 0px rgba(0,0,0,0.3);
778
+ }
779
+ #container-tab-controls li a.field-with-errors {
780
+ color: #B30D0D
781
+ }
782
+ #container-tab-controls li:first-child {
783
+ margin-left: 0
784
+ }
785
+ #container-tab-controls li:first-child a,
786
+ .switcher li:first-child a {
787
+ border-left: 1px solid #989898;
788
+ border-right: 1px solid #989898;
789
+ border-bottom: 1px solid #989898;
790
+ border-top: 1px solid #989898;
791
+ -webkit-border-top-left-radius: 2px;
792
+ -webkit-border-bottom-left-radius: 2px;
793
+ -moz-border-radius-topleft: 2px;
794
+ -moz-border-radius-bottomleft: 2px;
795
+ border-top-left-radius: 2px;
796
+ border-bottom-left-radius: 2px;
797
+ }
798
+ #container-tab-controls li:last-child a,
799
+ .switcher li:last-child a {
800
+ border-right: 1px solid #989898;
801
+ border-bottom: 1px solid #989898;
802
+ border-top: 1px solid #989898;
803
+ -webkit-border-top-right-radius: 2px;
804
+ -webkit-border-bottom-right-radius: 2px;
805
+ -moz-border-radius-topright: 2px;
806
+ -moz-border-radius-bottomright: 2px;
807
+ border-top-right-radius: 2px;
808
+ border-bottom-right-radius: 2px;
809
+ }
810
+ form #main .slices-holder {
811
+ text-align: left;
812
+ margin: 0;
813
+ border-top: 1px solid #cfcfcf;
814
+ }
815
+ .slices-holder > li {
816
+ border: 1px solid #cfcfcf;
817
+ background: #F7F7F7;
818
+ margin-bottom: 0px;
819
+ position: relative;
820
+ padding-bottom: 0px;
821
+ margin: -1px;
822
+ }
823
+ .control-bar {
824
+ background: #E8E8E8;
825
+ border-bottom: 1px solid #cfcfcf;
826
+ padding: 5px 12px;
827
+ overflow: hidden;
828
+ font-size: 12px;
829
+ font-weight: bold;
830
+ cursor: pointer;
831
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F0F0F0), to(#DDDDDD));
832
+ color: #333;
833
+ text-decoration: none;
834
+ text-shadow: 0px 1px 1px rgba(255,255,255,1);
835
+ position: relative;
836
+ }
837
+ .control-bar:active {
838
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDDDDD), to(#F0F0F0));
839
+ }
840
+ .add-slice-fields {
841
+ padding: 5px 0;
842
+ background-color: #E2E2E2;
843
+ border-top: 1px solid #cfcfcf;
844
+ margin-top: -1px;
845
+ -webkit-border-bottom-left-radius: 2px;
846
+ -webkit-border-bottom-right-radius: 2px;
847
+ }
848
+ .slice-content{
849
+ padding: 15px;
850
+ background-color: #fff;
851
+ }
852
+ .slice-content ul > li {
853
+ margin-bottom: 15px;
854
+ }
855
+ .slice-content ul > li:last-child {
856
+ margin-bottom: 0;
857
+ }
858
+ .slice-content label,
859
+ .slice-content legend {
860
+ margin-bottom: 0.5em;
861
+ margin-right: 1%;
862
+ color: #5A5A5A;
863
+ font-weight: bold;
864
+ }
865
+ .slice-content input[type='text'],
866
+ .slice-content textarea,
867
+ .modal form textarea,
868
+ .modal form input[type='text'] {
869
+ padding: 0.5em;
870
+ color: #333;
871
+ }
872
+ .slice-content textarea {
873
+ display: block;
874
+ max-width: 100%;
875
+ padding-right: 1em;
876
+ }
877
+ .slice-content select {
878
+ margin: 0;
879
+ }
880
+ .slice .delete {
881
+ display: block;
882
+ position: absolute;
883
+ width: 24px;
884
+ height: 24px;
885
+ text-indent: -999px;
886
+ overflow: hidden;
887
+ background: url(<%= asset_path('slices/trash.png') %>) no-repeat center;
888
+ top: 0; right: 0;
889
+ }
890
+ .slice .delete:active {
891
+ opacity: 0.5;
892
+ }
893
+ .slice .container-select-wrapper {
894
+ display: block;
895
+ position: absolute;
896
+ right: 27px;
897
+ top: 0px;
898
+ line-height: 23px;
899
+ }
900
+ .slice .container-select {
901
+ margin: 0;
902
+ }
903
+ section label,
904
+ section h1 {
905
+ color: #5A5A5A;
906
+ font-weight: bold;
907
+ margin-bottom: 0.5em;
908
+ display: block;
909
+ }
910
+ input[type="text"],
911
+ input[type="password"],
912
+ textarea {
913
+ border: 1px solid #d7d7d7;
914
+ padding: 0.5em;
915
+ width: 100%;
916
+ -webkit-box-sizing: border-box;
917
+ -moz-box-sizing: border-box;
918
+ -ms-box-sizing: border-box;
919
+ box-sizing: border-box;
920
+ }
921
+ textarea {
922
+ display: block;
923
+ margin: 0;
924
+ }
925
+ section select {
926
+ margin-bottom: 2em
927
+ }
928
+ section textarea#meta-extended {
929
+ min-height: 200px
930
+ }
931
+ select#meta-layout {
932
+ width: 160px;
933
+ margin-bottom: 0px!important;
934
+ }
935
+ form ul li.field-with-errors,
936
+ form ul li.field-with-errors label,
937
+ form ul li.field-with-errors legend {
938
+ color: #b30d0d !important
939
+ }
940
+ form ul li.field-with-errors input,
941
+ form ul li.field-with-errors textarea,
942
+ form ul li.field-with-errors select {
943
+ border: 1px solid #b30d0d
944
+ }
945
+ #add-slice-option {
946
+ width: 300px;
947
+ margin: 0;
948
+ }
949
+
950
+ /* entries list */
951
+ .elements-table {
952
+ margin-top: -20px;
953
+ width: 100%;
954
+ }
955
+ .elements-table tr {
956
+ width: 100%;
957
+ list-style: none;
958
+ overflow: hidden;
959
+ *display: inline-block;
960
+ height: 25px;
961
+ border-bottom: 1px solid #e6e6e6;
962
+ background: white;
963
+ }
964
+
965
+ .elements-table .ui-sortable tr {
966
+ cursor: move;
967
+ }
968
+ .elements-table tr.ui-sortable-helper {
969
+ border: 1px solid #e6e6e6;
970
+ box-shadow: 0 0 10px 0 rgba(0,0,0,0.1);
971
+ }
972
+ .elements-table tr.ui-sortable-helper td:not(:first-child) {
973
+ display: none;
974
+ }
975
+
976
+ .elements-table tr td {
977
+ padding-top: 5px;
978
+ padding-bottom: 5px;
979
+ padding-left: 15px;
980
+ vertical-align: middle;
981
+ }
982
+ .elements-table tr td.action {
983
+ padding-top: 3px;
984
+ padding-bottom: 3px;
985
+ }
986
+ .elements-table tr td.right {
987
+ text-align: right;
988
+ padding-right: 15px;
989
+ }
990
+ .elements-table tr th.image {
991
+ width: 10%;
992
+ }
993
+ .elements-table td img {
994
+ padding-top: 5px;
995
+ padding-bottom: 5px;
996
+ }
997
+ .elements-table td span {
998
+ display: block
999
+ }
1000
+ .elements-table tr th {
1001
+ text-align: left;
1002
+ color: #666;
1003
+ font-size: 11px;
1004
+ font-weight: normal;
1005
+ background-color: #EFEFEF;
1006
+ padding: 5px 0;
1007
+ font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
1008
+ padding-left: 15px;
1009
+ }
1010
+ .elements-table tr td {
1011
+ width: auto
1012
+ }
1013
+ .elements-table .header {
1014
+ font-weight: bold;
1015
+ color: #999;
1016
+ }
1017
+ .asset .name {
1018
+ display: block;
1019
+ margin-bottom: 0.5em;
1020
+ }
1021
+
1022
+ /* JQModal Stuff */
1023
+ .jqmWindow {
1024
+ display: none;
1025
+ position: fixed;
1026
+ top: 52px;
1027
+ left: 50%;
1028
+ height: auto;
1029
+ overflow: auto;
1030
+ margin-left: -300px;
1031
+ width: 600px;
1032
+ background-color: #EEE;
1033
+ color: #333;
1034
+ overflow-x: hidden;
1035
+ -webkit-box-shadow: 0px 2px 6px rgba(0,0,0,0.2);
1036
+ -moz-box-shadow: 0px 2px 6px rgba(0,0,0,0.2);
1037
+ box-shadow: 0px 2px 6px rgba(0,0,0,0.2);
1038
+ }
1039
+ .jqmOverlay {
1040
+ background-color: #000
1041
+ }
1042
+ .modal {
1043
+ -webkit-border-radius: 2px;
1044
+ -moz-border-radius: 2px;
1045
+ -ms-border-radius: 2px;
1046
+ border-radius: 2px;
1047
+ }
1048
+ .modal header {
1049
+ display: none
1050
+ }
1051
+ .modal form {
1052
+ position: relative;
1053
+ }
1054
+ .modal .fields {
1055
+ padding: 10px;
1056
+ border-bottom: 1px solid #ccc;
1057
+ }
1058
+ .modal .fields li {
1059
+ margin-bottom: 10px;
1060
+ }
1061
+ .modal label {
1062
+ display: block;
1063
+ font-weight: bold;
1064
+ color: #5a5a5a;
1065
+ margin-bottom: 5px;
1066
+ }
1067
+ .modal label.legend {
1068
+ display: block;
1069
+ margin-bottom: 0.75em;
1070
+ text-shadow: 0px 1px 0px #fff;
1071
+ }
1072
+ .modal .legend em {
1073
+ font-style: normal;
1074
+ color: #333;
1075
+ }
1076
+
1077
+ .modal .bottom-toolbar {
1078
+ z-index: 5;
1079
+ border-top: 1px solid #fafafa;
1080
+ background: #DADADA;
1081
+ text-align: right;
1082
+ -webkit-box-shadow: rgba(0, 0, 0, 0.0976562) 0px 1px 2px;
1083
+ background: -webkit-gradient(linear, 0% 100%, 0% 0%, from(#D2D2D2), to(#F0F0F0));
1084
+ padding: 10px;
1085
+ -webkit-border-bottom-left-radius: 2px;
1086
+ -moz-border-bottom-left-radius: 2px;
1087
+ border-bottom-left-radius: 2px;
1088
+ -webkit-border-bottom-right-radius: 2px;
1089
+ -moz-border-bottom-right-radius: 2px;
1090
+ border-bottom-right-radius: 2px;
1091
+ }
1092
+
1093
+ /* Hacky CSS to skin hacky add page modal*/
1094
+ .modal #container {
1095
+ padding: 0px;
1096
+ margin: 0px;
1097
+ width: 600px;
1098
+ min-width: 600px!important;
1099
+ }
1100
+ /* End hacky css */
1101
+
1102
+ /* Related to asset management within slices - probably needs moving somewhere more sensible/ making consistent with everything else */
1103
+ form #main ul.manage-assets {
1104
+ margin-bottom: 2em
1105
+ }
1106
+ form #main ul.manage-assets li {
1107
+ overflow: visible;
1108
+ margin-bottom: 1em;
1109
+ }
1110
+ ul.manage-assets img {
1111
+ float: left;
1112
+ width: 90px;
1113
+ margin-right: 20px;
1114
+ }
1115
+ ul.manage-assets .sort {
1116
+ margin-right: 10px
1117
+ }
1118
+ ul.manage-assets input.caption {
1119
+ float: left;
1120
+ width: 420px;
1121
+ margin-right: 10px;
1122
+ }
1123
+ form #main ul.manage-assets.single a.sort {
1124
+ display: none
1125
+ }
1126
+ .elements-list {
1127
+ list-style-type: none
1128
+ }
1129
+ .elements-list .asset {
1130
+ display: block;
1131
+ border-bottom: 1px solid #e6e6e6;
1132
+ background-color: #fff;
1133
+ padding-left: 15px;
1134
+ padding-right: 15px;
1135
+ padding-top: 5px;
1136
+ padding-bottom: 5px;
1137
+ min-height: 73px;
1138
+ }
1139
+ .elements-list .asset ul li {
1140
+ height: auto
1141
+ }
1142
+ .elements-list .asset .meta {
1143
+ position: relative;
1144
+ top: -25px;
1145
+ }
1146
+ .elements-list .asset .actions {
1147
+ position: relative;
1148
+ top: 20px;
1149
+ }
1150
+ .elements-list .asset .thumb {
1151
+ width: 80px;
1152
+ overflow: hidden;
1153
+ padding-right: 15px;
1154
+ }
1155
+ .elements-list .asset .thumb,
1156
+ .elements-list .asset .meta,
1157
+ .elements-list .asset .actions {
1158
+ display: inline-block
1159
+ }
1160
+
1161
+ /* functional element styling */
1162
+ a.sort {
1163
+ display: inline-block;
1164
+ float: right !important;
1165
+ background: url(<%= asset_path('slices/icon_drag.png') %>) 0 0 no-repeat;
1166
+ text-indent: -9999em;
1167
+ width: 20px;
1168
+ text-align: left;
1169
+ margin: 0px 0 -5px;
1170
+ }
1171
+ body.site-maps a.sort {
1172
+ margin-top: 8px!important;
1173
+ margin-right: 19px;
1174
+ background-image: none!important;
1175
+ }
1176
+ a.collapse {
1177
+ display: inline-block;
1178
+ float: left !important;
1179
+ background: url(<%= asset_path('slices/icon_collapse.png') %>) 0 2px no-repeat;
1180
+ text-indent: -9999em;
1181
+ width: 10px;
1182
+ height: 10px;
1183
+ margin-top: 2px;
1184
+ }
1185
+ .closed a.collapse {
1186
+ background-position: 0 -40px
1187
+ }
1188
+ .closed {
1189
+ border-bottom: 0px!important
1190
+ }
1191
+ a.remove-asset {
1192
+ }
1193
+
1194
+ /* pagination */
1195
+ #pagination {
1196
+ float: left;
1197
+ margin-top: 7px;
1198
+ margin-left: 15px;
1199
+ }
1200
+ #pagination li {
1201
+ list-style: none;
1202
+ display: inline;
1203
+ }
1204
+ #pagination li:last-child {
1205
+
1206
+ }
1207
+ #pagination li a {
1208
+ display: inline-block;
1209
+ padding: 5px;
1210
+ }
1211
+ #pagination li a.active {
1212
+ font-weight: bold;
1213
+ color: #000;
1214
+ text-decoration: none;
1215
+ }
1216
+ .view-on-site {
1217
+ font-size: 1.083em;
1218
+ text-align: center;
1219
+ padding: 1em 0;
1220
+ font-weight: bold;
1221
+ }
1222
+ .icon {
1223
+ display: inline-block;
1224
+ width: 12px;
1225
+ }
1226
+ .devise .login {
1227
+ background-color: #ccc;
1228
+ width: 340px;
1229
+ margin: 0 auto;
1230
+ padding: 13px 0px;
1231
+ -webkit-border-radius: 3px;
1232
+ -moz-border-radius: 3px;
1233
+ border-radius: 3px;
1234
+ border: 1px solid #D2D2D2;
1235
+ background-color: #DCDCDC;
1236
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eee), to(#c4c4c4));
1237
+ -moz-box-shadow: 0px 2px 6px rgba(0,0,0,0.2); /* FF3.5+ */
1238
+ -webkit-box-shadow: 0px 2px 6px rgba(0,0,0,0.2); /* Saf3.0+, Chrome */
1239
+ box-shadow: 0px 2px 6px rgba(0,0,0,0.2); /* Opera 10.5, IE9 */
1240
+ }
1241
+ .devise .login form p {
1242
+ padding: 0px 15px;
1243
+ padding-top: 4px;
1244
+ }
1245
+ .devise .login form p label {
1246
+ color: #5a5a5a;
1247
+ font-weight: bold;
1248
+ }
1249
+ .devise .login form p input[type='email'],
1250
+ .login form p input[type='password'] {
1251
+ border: 1px solid #D2D2D2;
1252
+ margin-bottom: 1em;
1253
+ padding: 0.5em;
1254
+ font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
1255
+ font-size: 11px;
1256
+ margin-top: 6px;
1257
+ width: 100%;
1258
+ box-sizing: border-box;
1259
+ }
1260
+ .devise .login form p label[for='admin_remember_me'] {
1261
+ color: #696969;
1262
+ font-weight: normal;
1263
+ font-size: 11px;
1264
+ font-family: "Lucida Grande", Arial, Helvetica, sans-serif;
1265
+ }
1266
+ .devise .login form p input[type='submit'] {
1267
+ width: 312px;
1268
+ margin-bottom: 10px;
1269
+ font-size: 13px;
1270
+ }
1271
+ .devise .login form p a {
1272
+ float: right;
1273
+ font-size: 11px;
1274
+ text-decoration: underline;
1275
+ color: #696969;
1276
+ font-weight: normal;
1277
+ font-size: 11px;
1278
+ font-family: "Lucida Grande", Arial, Helvetica, sans-serif;
1279
+ }
1280
+
1281
+ /*SPECIFIC TO It's Nice That*/
1282
+ .multi-tag-list li.first_not_shown_in_category_list,
1283
+ .single-tag-list li.first_not_shown_in_category_list {
1284
+ display: block;
1285
+ float: left;
1286
+ clear: both;
1287
+ }
1288
+
1289
+ /* Livefield */
1290
+ .livefield-results,
1291
+ .livefield-result {
1292
+ color: #565656;
1293
+ font: 13px/1 Helvetica, Arial, sans-serif;
1294
+ }
1295
+ .livefield-input {
1296
+
1297
+ }
1298
+ .livefield-results {
1299
+ display: block;
1300
+ position: relative;
1301
+ list-style: none outside;
1302
+ margin: 0;
1303
+ padding: 2px 0;
1304
+ border: 1px solid #e6e6e6;
1305
+ border-top: 0 none;
1306
+ line-height: 1;
1307
+ background: #fff;
1308
+ }
1309
+ .livefield-drop-up {
1310
+ border-bottom: 0 none;
1311
+ border-top: 1px solid #d4d4d4;
1312
+ }
1313
+ .livefield-result {
1314
+ display: block;
1315
+ position: relative;
1316
+ list-style: none outside;
1317
+ margin: 0;
1318
+ padding: 4px 6px 5px;
1319
+ font-weight: bold;
1320
+ cursor: pointer;
1321
+ cursor: hand;
1322
+ }
1323
+ .livefield-result.livefield-highlighted {
1324
+ background-color: #dee5ea
1325
+ }
1326
+ .livefield-result .name {
1327
+ display: block;
1328
+ font-weight: bold;
1329
+ color: #565656;
1330
+ }
1331
+ .livefield-result .path {
1332
+ display: block;
1333
+ font-weight: normal;
1334
+ margin-top: 0.25em;
1335
+ color: #a2a2a2;
1336
+ }
1337
+
1338
+ /* Attachments */
1339
+
1340
+ .attachment-composer {}
1341
+ #page-extra-main .attachment-composer {
1342
+ border: 1px solid #d7d7d7;
1343
+ padding: 15px;
1344
+ padding-right: 18px;
1345
+ }
1346
+ #page-meta .attachment-composer {
1347
+ padding-right: 5px;
1348
+ }
1349
+ .attachment-composer .attachment-list {}
1350
+ .attachment-composer.not-empty .attachment-list,
1351
+ .attachment-composer.assets-over .attachment-list {
1352
+ margin-bottom: 15px;
1353
+ }
1354
+ .attachment-composer li {
1355
+ display: block;
1356
+ position: relative;
1357
+ padding: 0px;
1358
+ margin: 0 12px 16px 0;
1359
+ background: #fff;
1360
+ height: 180px;
1361
+ }
1362
+ .attachment-composer li:last-child {
1363
+ margin-bottom: 0;
1364
+ }
1365
+ #page-meta .attachment-composer li {
1366
+ background-color: #e2e2e2;
1367
+ }
1368
+ .attachment-composer .cursor {
1369
+ height: 2px;
1370
+ background: rgb(255, 190, 0);
1371
+ box-shadow: 0px 0px 8px rgb(255, 190, 0);
1372
+ }
1373
+ .attachment-composer .attachment-drop-target {
1374
+ padding: 28px 0 28px;
1375
+ text-align: center;
1376
+ color: #565656;
1377
+ }
1378
+ .attachment-composer .attachment-actions {
1379
+ display: block;
1380
+ text-align: center;
1381
+ }
1382
+ .attachment-composer .attachment-actions button {
1383
+ width: 170px;
1384
+ margin-right: 8px;
1385
+ }
1386
+ .attachment-composer .attachment-thumb {
1387
+ display: block;
1388
+ position: absolute;
1389
+ left: 0px;
1390
+ width: 180px;
1391
+ height: 180px;
1392
+ overflow: hidden;
1393
+ cursor: move;
1394
+ }
1395
+ .attachment-thumb img {
1396
+ background: url(<%= asset_path('slices/asset-background.png') %>) 0 0;
1397
+ }
1398
+ .attachment-thumb button {
1399
+ position: absolute;
1400
+ bottom: 0px;
1401
+ display: none;
1402
+ }
1403
+ .attachment-composer .attachment-fields {
1404
+ display: block;
1405
+ position: absolute;
1406
+ left: 195px;
1407
+ right: 0;
1408
+ margin: 0;
1409
+ height: 180px;
1410
+ }
1411
+ .attachment-composer .attachment-fields > * {
1412
+ margin-bottom: 15px;
1413
+ }
1414
+ .attachment-composer .attachment-fields > *:last-child {
1415
+ margin-bottom: 0;
1416
+ }
1417
+ .attachment-composer .attachment-fields textarea {
1418
+ display: block;
1419
+ padding: 5px;
1420
+ resize: none;
1421
+ }
1422
+ .attachment-composer .attachment-fields textarea.full-height {
1423
+ height: 180px;
1424
+ }
1425
+
1426
+ .upload-info {
1427
+ position: absolute;
1428
+ top: 0;
1429
+ left: 0;
1430
+ width: 180px;
1431
+ height: 180px;
1432
+ }
1433
+ .upload-info .canvas {
1434
+ display: block;
1435
+ position: absolute;
1436
+ top: 0;
1437
+ left: 0;
1438
+ }
1439
+ .upload-info .text {
1440
+ position: absolute;
1441
+ top: 115px;
1442
+ left: 0; right: 0;
1443
+ padding: 0 20px;
1444
+ text-align: center;
1445
+ color: #838383;
1446
+ }
1447
+ .upload-info .upload-name {
1448
+ display: block;
1449
+ margin-bottom: 0.333em;
1450
+ font-weight: bold;
1451
+ }
1452
+ .upload-info .upload-progress {
1453
+ display: block;
1454
+ }
1455
+
1456
+ .attachment-composer li .remove {
1457
+ position: absolute;
1458
+ background: url(<%= asset_path('slices/trash.png') %>) no-repeat 50% 50%;
1459
+ text-indent: -1000px;
1460
+ overflow: hidden;
1461
+ border: 0 none;
1462
+ outline: 0 none;
1463
+ width: 20px;
1464
+ height: 20px;
1465
+ top: -6px;
1466
+ right: -25px;
1467
+ cursor: hand; cursor: pointer;
1468
+ }
1469
+ .attachment-composer .status-uploading .remove,
1470
+ .attachment-composer .status-processing .remove {
1471
+ display: none;
1472
+ }
1473
+ .attachment-composer li .remove:active {
1474
+ opacity: 0.5;
1475
+ }
1476
+ .attachment-composer .ui-sortable-helper {
1477
+ -webkit-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
1478
+ -moz-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
1479
+ -ms-box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
1480
+ box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
1481
+ overflow: hidden;
1482
+ }
1483
+
1484
+ .attachment-composer .ui-sortable-helper .attachment-thumb:hover button,
1485
+ .attachment-composer .ui-sortable-helper .remove {
1486
+ display: none;
1487
+ }
1488
+
1489
+ /* Asset Library */
1490
+ .asset-library {
1491
+ position: absolute;
1492
+ top: 40px;
1493
+ bottom: 0;
1494
+ left: 0;
1495
+ right: 0;
1496
+ }
1497
+ .asset-library .library-container {
1498
+ position: relative;
1499
+ }
1500
+ .asset-library .toolbar {
1501
+ display: block;
1502
+ position: relative;
1503
+ z-index: 10;
1504
+ }
1505
+ .asset-library .library {
1506
+ display: block;
1507
+ position: relative;
1508
+ padding: 10px;
1509
+ margin: 0;
1510
+ list-style: none outside;
1511
+ overflow: hidden;
1512
+ -webkit-transform: translate3d(0, 0, 0);
1513
+ -moz-transform: translate3d(0, 0, 0);
1514
+ -ms-transform: translate3d(0, 0, 0);
1515
+ transform: translate3d(0, 0, 0);
1516
+ }
1517
+ .asset-library .library-container {
1518
+ overflow: auto;
1519
+ position: absolute;
1520
+ top: 40px;
1521
+ left: 0;
1522
+ right: 0;
1523
+ bottom: 0;
1524
+ }
1525
+
1526
+ .asset-library-item {
1527
+ display: block;
1528
+ position: relative;
1529
+ width: 180px;
1530
+ height: 180px;
1531
+ word-wrap: break-word;
1532
+ }
1533
+ .library .asset-library-item {
1534
+ margin: 5px;
1535
+ float: left;
1536
+ -webkit-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.5);
1537
+ -moz-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.5);
1538
+ -ms-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.5);
1539
+ box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.5);
1540
+ }
1541
+ .asset-library-item.selected {
1542
+ outline: 3px solid rgb(255, 190, 0);
1543
+ }
1544
+ .asset-library-item .name {
1545
+ display: block;
1546
+ position: absolute;
1547
+ left: 0;
1548
+ right: 0;
1549
+ bottom: 0;
1550
+ padding: 1em;
1551
+ text-align: center;
1552
+ font-weight: bold;
1553
+ color: #666;
1554
+ }
1555
+ .asset-library-item img {
1556
+ display: block;
1557
+ position: absolute;
1558
+ margin: 0;
1559
+ background: url(<%= asset_path('slices/asset-background.png') %>) 0 0 repeat;
1560
+ }
1561
+ .asset-library-item .meta {
1562
+ display: block;
1563
+ position: absolute;
1564
+ top: 0;
1565
+ left: 0;
1566
+ right: 0;
1567
+ bottom: 0;
1568
+ background: rgba(0, 0, 0, 0.75);
1569
+ color: #fff;
1570
+ margin: 0;
1571
+ padding: 10px;
1572
+ visibility: hidden;
1573
+ }
1574
+ .asset-library-item .meta dd {
1575
+ margin: 0 0 0.5em 0;
1576
+ }
1577
+ .asset-library-item .meta a {
1578
+ color: #fff;
1579
+ font-weight: bold;
1580
+ text-decoration: underline;
1581
+ }
1582
+ .asset-library-item:hover .meta,
1583
+ .asset-library-item.editing .meta {
1584
+ visibility: visible;
1585
+ }
1586
+
1587
+ .asset-library-item.destroying {
1588
+ opacity: 0.25;
1589
+ outline: none;
1590
+ }
1591
+ .asset-library-item.destroying .meta {
1592
+ visibility: hidden;
1593
+ }
1594
+
1595
+ .toolbar > * {
1596
+ position: relative;
1597
+ }
1598
+ .toolbar .count {
1599
+ color: rgba(0, 0, 0, 0.5);
1600
+ display: block;
1601
+ float: left;
1602
+ font-weight: bold;
1603
+ padding: 13px 1em;
1604
+ text-shadow: 0px 1px 0px #fff;
1605
+ }
1606
+ .toolbar .hint {
1607
+ color: rgba(0, 0, 0, 0.5);
1608
+ display: block;
1609
+ position: absolute;
1610
+ font-weight: bold;
1611
+ padding: 13px 0;
1612
+ text-shadow: 0px 1px 0px #fff;
1613
+ width: 240px;
1614
+ text-align: center;
1615
+ left: 50%;
1616
+ margin-left: -120px;
1617
+ }
1618
+ .toolbar .resize-handle {
1619
+ position: absolute;
1620
+ top: 0;
1621
+ right: 0;
1622
+ bottom: 0;
1623
+ left: 0;
1624
+ cursor: ns-resize;
1625
+ z-index: 0;
1626
+ }
1627
+
1628
+ .loading-indicator {
1629
+ display: block;
1630
+ margin: 5px;
1631
+ float: left;
1632
+ position: relative;
1633
+ width: 180px;
1634
+ height: 180px;
1635
+ background: url(<%= asset_path('slices/asset-spinner.gif') %>) 50% 50% no-repeat;
1636
+ box-shadow: none;
1637
+ }
1638
+ .loading-indicator .label {
1639
+ bottom: 20px;
1640
+ color: rgba(0, 0, 0, 0.45);
1641
+ display: block;
1642
+ font-size: 1.25em;
1643
+ font-weight: bold;
1644
+ left: 0;
1645
+ position: absolute;
1646
+ right: 0;
1647
+ text-align: center;
1648
+ text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.15);
1649
+ }
1650
+
1651
+
1652
+ #asset-drawer {
1653
+ background: #666;
1654
+ display: block;
1655
+ height: 0px;
1656
+ position: fixed;
1657
+ top: auto; right: 0; left: 0; bottom: 0;
1658
+ z-index: 10;
1659
+ -webkit-box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 5px;
1660
+ -moz-box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 5px;
1661
+ -ms-box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 5px;
1662
+ box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 5px;
1663
+ }
1664
+ #asset-drawer .toolbar {
1665
+ display: block;
1666
+ position: relative;
1667
+ z-index: 10;
1668
+ }
1669
+ #asset-drawer .library-container {
1670
+ overflow: auto;
1671
+ position: absolute;
1672
+ top: 40px;
1673
+ left: 0;
1674
+ right: 0;
1675
+ bottom: 0;
1676
+ }
1677
+
1678
+ .asset-drag-helper {
1679
+ position: absolute;
1680
+ margin-left: -18px;
1681
+ margin-top: -18px;
1682
+ z-index: 5000;
1683
+ white-space: nowrap;
1684
+ }
1685
+ .asset-drag-helper img {
1686
+ display: block;
1687
+ float: left;
1688
+ margin: 1px;
1689
+ width: 36px;
1690
+ height: 36px;
1691
+ box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.5);
1692
+ }
1693
+
1694
+ .receiver {
1695
+ box-shadow: inset 0px 0px 8px rgb(255, 190, 0);
1696
+ }
1697
+
1698
+ #page-extra-main > li {
1699
+ margin-bottom: 1.5em;
1700
+ }
1701
+
1702
+ .asset-editor {}
1703
+ .asset-editor .overview {
1704
+ position: relative;
1705
+ height: 180px;
1706
+ margin-bottom: 20px;
1707
+ }
1708
+ .asset-editor .overview .thumb {
1709
+ position: absolute;
1710
+ top: 0;
1711
+ left: 0;
1712
+ box-shadow:
1713
+ 0px 1px 5px rgba(0, 0, 0, 0.3);
1714
+ }
1715
+ .asset-editor .overview .thumb img {
1716
+ display: block;
1717
+ margin: 0;
1718
+ }
1719
+ .asset-editor .overview .meta {
1720
+ position: absolute;
1721
+ top: 0;
1722
+ left: 190px;
1723
+ right: 0;
1724
+ }
1725
+ .asset-editor .overview .meta dd {
1726
+ margin: 0 0 0.5em 0;
1727
+ }
1728
+ .asset-editor .overview .meta .options {
1729
+ margin-top: 1em;
1730
+ }
1731
+
1732
+ .asset-editor .tabs {}
1733
+ .asset-editor .tab {
1734
+ margin-bottom: 10px;
1735
+ }
1736
+
1737
+ .asset-editor .pages ul {
1738
+ list-style: none outside;
1739
+ margin: 0;
1740
+ }
1741
+ .asset-editor .pages li {
1742
+ display: inline;
1743
+ }
1744
+ .asset-editor .pages li:after {
1745
+ content: ', ';
1746
+ }
1747
+ .asset-editor .pages li:last-child:after {
1748
+ content: '';
1749
+ }
1750
+
1751
+
1752
+ /* Explanations */
1753
+ .explanation {
1754
+ color: #333;
1755
+ color: rgba(0, 0, 0, 0.666);
1756
+ text-shadow: 0px 1px 0px #fff;
1757
+ background: #e2e2e2;
1758
+ border: 1px solid #cfcfcf;
1759
+ padding: 15px;
1760
+ margin: 0 0 15px 0;
1761
+ font-weight: bold;
1762
+ border-top-left-radius: 2px;
1763
+ border-top-right-radius: 2px;
1764
+ text-align: center;
1765
+ }
1766
+
1767
+ /* Pinning */
1768
+ .pinned { position: absolute }
1769
+ .pinned.top { top: 0 }
1770
+ .pinned.right { right: 0 }
1771
+ .pinned.bottom { bottom: 0 }
1772
+ .pinned.left { left: 0 }
1773
+
1774
+ .bottom-toolbar { position: relative }
1775
+ .bottom-toolbar .pinned.top { top: 10px }
1776
+ .bottom-toolbar .pinned.right { right: 10px }
1777
+ .bottom-toolbar .pinned.bottom { bottom: 10px }
1778
+ .bottom-toolbar .pinned.left { left: 10px }
1779
+
1780
+ /* Button Group */
1781
+ .button-group {
1782
+ overflow: hidden;
1783
+ }
1784
+ .button-group button {
1785
+ display: block;
1786
+ float: left;
1787
+ margin-left: 0;
1788
+ margin-right: 8px;
1789
+ }
1790
+ .button-group.aligned-right button {
1791
+ float: right;
1792
+ margin-left: 8px;
1793
+ margin-right: 0;
1794
+ }
1795
+
1796
+
1797
+ #sitemap-search {
1798
+ position: absolute;
1799
+ right: 24px;
1800
+ }
1801
+ .sitemap-unlocked #sitemap-search {
1802
+ display: none;
1803
+ }
1804
+
1805
+ .slice-preview {
1806
+ display: none;
1807
+ font-family: courier;
1808
+ font-weight: normal;
1809
+ margin-left: 20px;
1810
+ color: #777;
1811
+ position: absolute;
1812
+ height: 1.2em;
1813
+ overflow: hidden;
1814
+ margin-right: 210px;
1815
+ word-break: break-all;
1816
+ }
1817
+
1818
+ .closed .slice-preview {
1819
+ display: inline-block;
1820
+ }
1821
+
1822
+ .admins-editor {
1823
+ padding: 0 50px;
1824
+ width: 781px;
1825
+ margin: 0 auto;
1826
+ }
1827
+ .admins-editor li {
1828
+ margin-bottom: 1em;
1829
+ }
1830
+
1831
+ label abbr[title] {
1832
+ text-decoration: none;
1833
+ border: none;
1834
+ }
1835
+
1836
+ /*
1837
+ Token Field
1838
+ */
1839
+
1840
+ .token-field {
1841
+ position: relative;
1842
+ }
1843
+ .token-field input {}
1844
+ .token-field .tokens {
1845
+ padding: 1px 7px 1px 2px;
1846
+ position: absolute;
1847
+ top: 0; left: 0;
1848
+ overflow: hidden;
1849
+ }
1850
+ .token-field .token {
1851
+ background: hsl(133, 53%, 79%);
1852
+ border-radius: 1px;
1853
+ border: 1px solid rgba(0, 0, 0, 0.25);
1854
+ color: rgba(0, 0, 0, 0.618);
1855
+ display: block;
1856
+ float: left;
1857
+ font-weight: bold;
1858
+ margin: 2px 1px;
1859
+ padding: 0.25em 1.75em 0.25em 0.5em;
1860
+ position: relative;
1861
+ -webkit-user-select: none;
1862
+ -moz-user-select: none;
1863
+ -ms-user-select: none;
1864
+ user-select: none;
1865
+ cursor: default;
1866
+ }
1867
+ .token-field .token.focus {
1868
+ background: hsl(133, 30%, 60%);
1869
+ }
1870
+ .token-field .token .del {
1871
+ background-clip: border;
1872
+ background: rgba(0, 0, 0, 0.25);
1873
+ border-radius: 7px;
1874
+ box-sizing: border-box;
1875
+ color: hsl(133, 53%, 79%);
1876
+ cursor: pointer;
1877
+ font-size: 10px;
1878
+ font-weight: normal;
1879
+ line-height: 1;
1880
+ padding: 0px 0 0 3px;
1881
+ position: absolute;
1882
+ top: 4px; right: 4px;
1883
+ width: 12px; height: 12px;
1884
+ box-shadow:
1885
+ inset 0px 1px rgba(0, 0, 0, 0.15),
1886
+ 0px 1px rgba(255, 255, 255, 0.5);
1887
+ text-shadow:
1888
+ 0px 1px 1px rgba(0, 0, 0, 0.3);
1889
+ }
1890
+ .token-field .token .del:hover {
1891
+ background: rgba(0, 0, 0, 0.5);
1892
+ }
1893
+ .token-field .token .del:active {
1894
+ background: rgba(0, 0, 0, 0.75);
1895
+ }
1896
+ .token-field .options {
1897
+ display: block;
1898
+ padding: 0.5em 0 0 0;
1899
+ -webkit-user-select: none;
1900
+ -moz-user-select: none;
1901
+ -ms-user-select: none;
1902
+ user-select: none;
1903
+ }
1904
+ .token-field .option {
1905
+ color: hsl(133, 53%, 40%);
1906
+ cursor: pointer;
1907
+ }
1908
+ .token-field .option:hover {
1909
+ text-decoration: none;
1910
+ }
1911
+ .token-field .option.used {
1912
+ color: hsl(133, 53%, 79%);
1913
+ }
1914
+ #page-meta .token-field .option.used {
1915
+ color: hsl(0, 0%, 75%);
1916
+ }
1917
+ .token-field .option:after {
1918
+ content: ', ';
1919
+ }
1920
+ .token-field .option:last-child:after {
1921
+ content: '';
1922
+ }
1923
+
1924
+
1925
+ /*
1926
+ Date Field
1927
+ */
1928
+
1929
+ .date-field {
1930
+ border: 1px solid #d7d7d7;
1931
+ padding: 0.7em;
1932
+ padding-left: 30px;
1933
+ position: relative;
1934
+ width: 100%; height: 32px;
1935
+ box-sizing: border-box;
1936
+ z-index: 4;
1937
+ }
1938
+ #page-meta .date-field {
1939
+ border: none;
1940
+ }
1941
+ .date-field .calendar-button {
1942
+ background-image: url(<%= asset_path('slices/calendar.svg') %>);
1943
+ background-size: 100%;
1944
+ border: none;
1945
+ margin: 0 1px;
1946
+ overflow: hidden;
1947
+ padding: 0;
1948
+ position: absolute;
1949
+ text-indent: -1000px;
1950
+ top: 2px; left: 2px;
1951
+ width: 20px; height: 24px;
1952
+ }
1953
+ .date-field .calendar-button:active {
1954
+ opacity: 0.5;
1955
+ box-shadow: none;
1956
+ }
1957
+ .date-field .display {
1958
+ color: #444;
1959
+ display: block;
1960
+ font-weight: bold;
1961
+ }
1962
+ .date-field select {
1963
+ margin: -2px 0 0 0;
1964
+ line-height: 1;
1965
+ vertical-align: baseline;
1966
+ }
1967
+ .date-field select.hour {
1968
+ margin-left: 3px;
1969
+ }
1970
+ .date-field select.minute {
1971
+ margin-left: 1px;
1972
+ }
1973
+ .date-field .clear {
1974
+ background: #ccc;
1975
+ border-radius: 18px;
1976
+ border: none;
1977
+ box-sizing: border-box;
1978
+ color: white;
1979
+ cursor: pointer;
1980
+ font-size: 14px;
1981
+ font-weight: normal;
1982
+ line-height: 1;
1983
+ padding: 0 0 2px 0;
1984
+ position: absolute;
1985
+ text-shadow: none;
1986
+ top: 7px; right: 7px;
1987
+ width: 16px; height: 16px;
1988
+ }
1989
+ .date-field .clear:hover {
1990
+ background: #bbb;
1991
+ }
1992
+ .date-field .clear:active {
1993
+ box-shadow: none;
1994
+ background: #999;
1995
+ }
1996
+
1997
+ /* Calendar View */
1998
+ .calendar-modal {
1999
+ position: absolute;
2000
+ top: 0; right: 0; bottom: 0; left: 0;
2001
+ z-index: 5000;
2002
+ }
2003
+
2004
+ .calendar-modal .background {
2005
+ position: absolute;
2006
+ top: 0; right: 0; bottom: 0; left: 0;
2007
+ background: rgba(0, 0, 0, 0.15);
2008
+ }
2009
+
2010
+ .calendar {
2011
+ background: white;
2012
+ border-radius: 2px;
2013
+ box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.5);
2014
+ line-height: 1;
2015
+ padding: 7px;
2016
+ position: absolute;
2017
+ margin: 10px 0 0 0;
2018
+
2019
+ -webkit-user-select: none;
2020
+ -moz-user-select: none;
2021
+ -o-user-select: none;
2022
+ user-select: none;
2023
+
2024
+ -webkit-transform-origin: 50% -7px;
2025
+ }
2026
+ .calendar:after {
2027
+ bottom: 100%; left: 50%;
2028
+ border: 10px solid transparent;
2029
+ border-bottom-color: white;
2030
+ content: ' ';
2031
+ width: 0; height: 0;
2032
+ position: absolute;
2033
+ pointer-events: none;
2034
+ border-width: 7px;
2035
+ margin-left: -7px;
2036
+ }
2037
+
2038
+ .calendar table {
2039
+ border-collapse: collapse;
2040
+ }
2041
+ .calendar th,
2042
+ .calendar td {
2043
+ text-align: center;
2044
+ vertical-align: middle;
2045
+ width: 2em; height: 2em;
2046
+ }
2047
+ .calendar th {
2048
+ color: hsl(207, 97%, 80%);
2049
+ pointer-events: none;
2050
+ }
2051
+ .calendar [data-action$="-month"] {
2052
+ cursor: pointer;
2053
+ font-weight: bold;
2054
+ color: hsl(207, 97%, 80%);
2055
+ }
2056
+
2057
+ .calendar [data-action$="-month"]:hover {
2058
+ color: hsl(207, 97%, 50%);
2059
+ }
2060
+ .calendar [data-action$="-month"]:active {
2061
+ color: hsl(207, 97%, 20%);
2062
+ }
2063
+
2064
+ .calendar time {
2065
+ box-sizing: border-box;
2066
+ cursor: pointer;
2067
+ display: block;
2068
+ padding: 6px 0;
2069
+ vertical-align: middle;
2070
+ width: 2em; height: 2em;
2071
+ }
2072
+ .calendar time:hover {
2073
+ background: hsl(0, 0%, 90%);
2074
+ color: hsl(0, 0%, 30%);
2075
+ }
2076
+
2077
+ .calendar .prev-month,
2078
+ .calendar .next-month {
2079
+ color: hsl(0, 0%, 80%);
2080
+ }
2081
+ .calendar .today {
2082
+ border: 1px solid hsl(0, 0%, 80%);
2083
+ }
2084
+ .calendar .highlight,
2085
+ .calendar .highlight:hover {
2086
+ background: hsl(207, 97%, 80%);
2087
+ color: white;
2088
+ font-weight: bold;
2089
+ text-shadow: 0px -1px rgba(0, 0, 0, 0.5);
2090
+ }
2091
+ .calendar .highlight.today {
2092
+ border-color: hsl(207, 50%, 50%)
2093
+ }
2094
+
2095
+ .calendar-modal[data-state="preparing"] .background {
2096
+ -webkit-transition: none;
2097
+ opacity: 0;
2098
+ }
2099
+ .calendar-modal[data-state="preparing"] .calendar {
2100
+ -webkit-transition: none;
2101
+ -webkit-transform: scale(0);
2102
+ }
2103
+
2104
+ .calendar-modal[data-state="showing"] .background {
2105
+ -webkit-transition: opacity 0.25s;
2106
+ opacity: 1;
2107
+ }
2108
+ .calendar-modal[data-state="showing"] .calendar {
2109
+ -webkit-transition: -webkit-transform 0.25s;
2110
+ -webkit-transform: scale(1);
2111
+ }
2112
+
2113
+ .calendar-modal[data-state="hiding"] .background {
2114
+ -webkit-transition: opacity 0.25s;
2115
+ opacity: 0;
2116
+ }
2117
+ .calendar-modal[data-state="hiding"] .calendar {
2118
+ -webkit-transition: -webkit-transform 0.25s;
2119
+ -webkit-transform: scale(0);
2120
+ }
2121
+
2122
+ /* In-page Navigation */
2123
+ .navigation {
2124
+ margin: 0 0 16px 0;
2125
+ position: relative;
2126
+ }
2127
+
2128
+ /* Breadcrumbs */
2129
+ #breadcrumbs {
2130
+ display: block;
2131
+ position: relative;
2132
+ color: hsl(0, 0%, 50%);
2133
+ }
2134
+ #breadcrumbs:after {
2135
+ display: block;
2136
+ content: ' ';
2137
+ clear: both;
2138
+ }
2139
+ #breadcrumbs li:before {
2140
+ content: '/';
2141
+ margin: 0 0.333em;
2142
+ }
2143
+ #breadcrumbs li:first-child:before {
2144
+ display: none;
2145
+ }
2146
+ #breadcrumbs li {
2147
+ display: block;
2148
+ float: left;
2149
+ }
2150
+ #breadcrumbs a {
2151
+ color: inherit;
2152
+ }
2153
+ #breadcrumbs a:hover {
2154
+ color: hsl(0, 0%, 25%);
2155
+ text-decoration: none;
2156
+ }
2157
+ #breadcrumbs li.current a {
2158
+ color: hsl(0, 0%, 25%);
2159
+ }
2160
+ #breadcrumbs li.current a:hover {
2161
+ color: hsl(0, 0%, 25%);
2162
+ }
2163
+ #breadcrumbs select {
2164
+ background: none;
2165
+ border: none;
2166
+ color: inherit;
2167
+ cursor: pointer;
2168
+ display: inline;
2169
+ font-size: 1em;
2170
+ outline: none;
2171
+ vertical-align: baseline;
2172
+ -webkit-appearance: none;
2173
+ }
2174
+ #breadcrumbs select:hover {
2175
+ color: hsl(0, 0%, 25%);
2176
+ }
2177
+
2178
+ /* Composer */
2179
+ .composer {}
2180
+
2181
+ .composer-item {
2182
+ background: white;
2183
+ display: block;
2184
+ margin: 0 9px 15px -13px;
2185
+ padding: 0px;
2186
+ position: relative;
2187
+ }
2188
+ .composer-item:last-child {
2189
+ margin-bottom: 0;
2190
+ }
2191
+ .composer.not-empty .composer-actions {
2192
+ padding-top: 15px;
2193
+ }
2194
+ .composer-item input {
2195
+ margin-bottom: 4px;
2196
+ }
2197
+ .composer-item input:last-child {
2198
+ margin-bottom: 0;
2199
+ }
2200
+ .composer-item .item-fields {
2201
+ padding: 0 0 0 32px;
2202
+ }
2203
+ .composer-item [data-role="drag-handle"] {
2204
+ position: absolute;
2205
+ top: 0px; left: 0px;
2206
+ width: 30px; height: 30px;
2207
+ background: url(<%= asset_path('slices/drag-handle.svg') %>) no-repeat 50% 6px;
2208
+ opacity: 0.2;
2209
+ cursor: move;
2210
+ }
2211
+ .composer-item [data-role="drag-handle"]:hover {
2212
+ opacity: 0.5;
2213
+ }
2214
+ .composer-item [data-action="remove"] {
2215
+ background: url(<%= asset_path('slices/trash.png') %>) no-repeat 50% 50%;
2216
+ border: 0 none;
2217
+ cursor: pointer;
2218
+ outline: 0 none;
2219
+ overflow: hidden;
2220
+ position: absolute;
2221
+ text-indent: -1000px;
2222
+ top: -3px; right: -22px;
2223
+ width: 20px; height: 20px;
2224
+
2225
+ -webkit-user-select: none;
2226
+ -moz-user-select: none;
2227
+ -ms-user-select: none;
2228
+ -o-user-select: none;
2229
+ user-select: none;
2230
+ }
2231
+ .composer-item [data-action="remove"]:active {
2232
+ box-shadow: none;
2233
+ opacity: 0.5;
2234
+ }
2235
+ .composer .ui-sortable-helper [data-action="remove"] {
2236
+ display: none;
2237
+ }