slices 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }