rmails 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/Gemfile +24 -0
  4. data/Gemfile.lock +167 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.markdown +9 -0
  7. data/Rakefile +31 -0
  8. data/Rakefile1 +9 -0
  9. data/Vagrantfile +51 -0
  10. data/app/assets/images/arrow_bottom.gif +0 -0
  11. data/app/assets/images/arrow_right.gif +0 -0
  12. data/app/assets/images/at-sign.png +0 -0
  13. data/app/assets/images/checkerboard.gif +0 -0
  14. data/app/assets/images/glyphicons-halflings-white.png +0 -0
  15. data/app/assets/images/glyphicons-halflings.png +0 -0
  16. data/app/assets/images/icon_draft.gif +0 -0
  17. data/app/assets/images/icon_layout.gif +0 -0
  18. data/app/assets/images/icon_move.gif +0 -0
  19. data/app/assets/images/icon_regular.gif +0 -0
  20. data/app/assets/images/icon_snippet.gif +0 -0
  21. data/app/assets/images/nav_arrow.png +0 -0
  22. data/app/assets/images/x.png +0 -0
  23. data/app/assets/javascripts/application.coffee.erb +27 -0
  24. data/app/assets/javascripts/canjs/can.construct.proxy.js +60 -0
  25. data/app/assets/javascripts/canjs/can.construct.super.js +44 -0
  26. data/app/assets/javascripts/canjs/can.control.plugin.js +245 -0
  27. data/app/assets/javascripts/canjs/can.control.view.js +88 -0
  28. data/app/assets/javascripts/canjs/can.dojo.js +3669 -0
  29. data/app/assets/javascripts/canjs/can.dojo.min.js +66 -0
  30. data/app/assets/javascripts/canjs/can.fixture.js +1020 -0
  31. data/app/assets/javascripts/canjs/can.jquery.js +2995 -0
  32. data/app/assets/javascripts/canjs/can.jquery.min.js +52 -0
  33. data/app/assets/javascripts/canjs/can.mootools.js +3462 -0
  34. data/app/assets/javascripts/canjs/can.mootools.min.js +63 -0
  35. data/app/assets/javascripts/canjs/can.observe.attributes.js +293 -0
  36. data/app/assets/javascripts/canjs/can.observe.backup.js +368 -0
  37. data/app/assets/javascripts/canjs/can.observe.delegate.js +359 -0
  38. data/app/assets/javascripts/canjs/can.observe.setter.js +58 -0
  39. data/app/assets/javascripts/canjs/can.observe.validations.js +374 -0
  40. data/app/assets/javascripts/canjs/can.view.modifiers.js +292 -0
  41. data/app/assets/javascripts/canjs/can.yui.js +3530 -0
  42. data/app/assets/javascripts/canjs/can.yui.min.js +65 -0
  43. data/app/assets/javascripts/canjs/can.zepto.js +3426 -0
  44. data/app/assets/javascripts/canjs/can.zepto.min.js +62 -0
  45. data/app/assets/javascripts/controls/admins.coffee.erb +105 -0
  46. data/app/assets/javascripts/controls/aliases.coffee.erb +91 -0
  47. data/app/assets/javascripts/controls/domains.coffee.erb +115 -0
  48. data/app/assets/javascripts/controls/settings.coffee.erb +47 -0
  49. data/app/assets/javascripts/controls/users.coffee.erb +94 -0
  50. data/app/assets/javascripts/lib/facebox.js +311 -0
  51. data/app/assets/javascripts/lib/html5.js +2 -0
  52. data/app/assets/javascripts/lib/jquery.js +9301 -0
  53. data/app/assets/javascripts/lib/jquery_formparams.js +108 -0
  54. data/app/assets/javascripts/lib/jquery_input_hint.js +20 -0
  55. data/app/assets/javascripts/lib/jquery_paginate.js +120 -0
  56. data/app/assets/javascripts/lib/jquery_ui_custom.js +6 -0
  57. data/app/assets/javascripts/lib/json2.js +487 -0
  58. data/app/assets/javascripts/lib/utils.coffee.erb +48 -0
  59. data/app/assets/javascripts/models/admin.coffee.erb +42 -0
  60. data/app/assets/javascripts/models/alias.coffee.erb +28 -0
  61. data/app/assets/javascripts/models/domain.coffee.erb +39 -0
  62. data/app/assets/javascripts/models/property.coffee.erb +18 -0
  63. data/app/assets/javascripts/models/user.coffee.erb +29 -0
  64. data/app/assets/stylesheets/application.sass +156 -0
  65. data/app/assets/stylesheets/base.css.sass +243 -0
  66. data/app/assets/stylesheets/facebox.css +80 -0
  67. data/app/assets/stylesheets/lib/bootstrap.css +9 -0
  68. data/app/assets/stylesheets/twitter/bootstrap-responsive.scss +1 -0
  69. data/app/assets/stylesheets/twitter/bootstrap.scss +63 -0
  70. data/app/assets/stylesheets/twitter/bootstrap/_accordion.scss +34 -0
  71. data/app/assets/stylesheets/twitter/bootstrap/_alerts.scss +79 -0
  72. data/app/assets/stylesheets/twitter/bootstrap/_breadcrumbs.scss +24 -0
  73. data/app/assets/stylesheets/twitter/bootstrap/_button-groups.scss +229 -0
  74. data/app/assets/stylesheets/twitter/bootstrap/_buttons.scss +228 -0
  75. data/app/assets/stylesheets/twitter/bootstrap/_carousel.scss +158 -0
  76. data/app/assets/stylesheets/twitter/bootstrap/_close.scss +32 -0
  77. data/app/assets/stylesheets/twitter/bootstrap/_code.scss +61 -0
  78. data/app/assets/stylesheets/twitter/bootstrap/_component-animations.scss +22 -0
  79. data/app/assets/stylesheets/twitter/bootstrap/_dropdowns.scss +237 -0
  80. data/app/assets/stylesheets/twitter/bootstrap/_forms.scss +689 -0
  81. data/app/assets/stylesheets/twitter/bootstrap/_grid.scss +21 -0
  82. data/app/assets/stylesheets/twitter/bootstrap/_hero-unit.scss +25 -0
  83. data/app/assets/stylesheets/twitter/bootstrap/_labels-badges.scss +83 -0
  84. data/app/assets/stylesheets/twitter/bootstrap/_layouts.scss +16 -0
  85. data/app/assets/stylesheets/twitter/bootstrap/_media.scss +55 -0
  86. data/app/assets/stylesheets/twitter/bootstrap/_mixins.scss +690 -0
  87. data/app/assets/stylesheets/twitter/bootstrap/_modals.scss +95 -0
  88. data/app/assets/stylesheets/twitter/bootstrap/_navbar.scss +497 -0
  89. data/app/assets/stylesheets/twitter/bootstrap/_navs.scss +409 -0
  90. data/app/assets/stylesheets/twitter/bootstrap/_pager.scss +43 -0
  91. data/app/assets/stylesheets/twitter/bootstrap/_pagination.scss +123 -0
  92. data/app/assets/stylesheets/twitter/bootstrap/_popovers.scss +133 -0
  93. data/app/assets/stylesheets/twitter/bootstrap/_progress-bars.scss +122 -0
  94. data/app/assets/stylesheets/twitter/bootstrap/_reset.scss +216 -0
  95. data/app/assets/stylesheets/twitter/bootstrap/_responsive-1200px-min.scss +28 -0
  96. data/app/assets/stylesheets/twitter/bootstrap/_responsive-767px-max.scss +193 -0
  97. data/app/assets/stylesheets/twitter/bootstrap/_responsive-768px-979px.scss +19 -0
  98. data/app/assets/stylesheets/twitter/bootstrap/_responsive-navbar.scss +189 -0
  99. data/app/assets/stylesheets/twitter/bootstrap/_responsive-utilities.scss +74 -0
  100. data/app/assets/stylesheets/twitter/bootstrap/_scaffolding.scss +53 -0
  101. data/app/assets/stylesheets/twitter/bootstrap/_sprites.scss +197 -0
  102. data/app/assets/stylesheets/twitter/bootstrap/_tables.scss +235 -0
  103. data/app/assets/stylesheets/twitter/bootstrap/_thumbnails.scss +53 -0
  104. data/app/assets/stylesheets/twitter/bootstrap/_tooltip.scss +70 -0
  105. data/app/assets/stylesheets/twitter/bootstrap/_type.scss +247 -0
  106. data/app/assets/stylesheets/twitter/bootstrap/_utilities.scss +45 -0
  107. data/app/assets/stylesheets/twitter/bootstrap/_variables.scss +301 -0
  108. data/app/assets/stylesheets/twitter/bootstrap/_wells.scss +29 -0
  109. data/app/assets/stylesheets/twitter/bootstrap/responsive.scss +48 -0
  110. data/app/controllers/admin_users_controller.rb +62 -0
  111. data/app/controllers/aliases_controller.rb +35 -0
  112. data/app/controllers/application_controller.rb +20 -0
  113. data/app/controllers/domains_controller.rb +48 -0
  114. data/app/controllers/server_controller.rb +28 -0
  115. data/app/controllers/users_controller.rb +35 -0
  116. data/app/helpers/admin_users_helper.rb +11 -0
  117. data/app/helpers/application_helper.rb +2 -0
  118. data/app/helpers/domains_helper.rb +25 -0
  119. data/app/helpers/server_helper.rb +30 -0
  120. data/app/mailers/.gitkeep +0 -0
  121. data/app/models/.gitkeep +0 -0
  122. data/app/models/admin_user.rb +54 -0
  123. data/app/models/certificate_manager.rb +46 -0
  124. data/app/models/property.rb +103 -0
  125. data/app/models/property/awstats.rb +15 -0
  126. data/app/models/property/dovecot.rb +61 -0
  127. data/app/models/property/dspam.rb +45 -0
  128. data/app/models/property/nginx.rb +47 -0
  129. data/app/models/property/postfix.rb +64 -0
  130. data/app/models/property_value_validator.rb +41 -0
  131. data/app/models/system_manager.rb +88 -0
  132. data/app/models/virtual_alias.rb +13 -0
  133. data/app/models/virtual_domain.rb +15 -0
  134. data/app/models/virtual_user.rb +51 -0
  135. data/app/views/admin_users/_form.html.haml +21 -0
  136. data/app/views/admin_users/first.html.haml +12 -0
  137. data/app/views/admin_users/index.html.haml +61 -0
  138. data/app/views/aliases/_form.html.haml +11 -0
  139. data/app/views/aliases/_list.html.haml +0 -0
  140. data/app/views/devise/confirmations/new.html.haml +9 -0
  141. data/app/views/devise/mailer/confirmation_instructions.html.haml +4 -0
  142. data/app/views/devise/mailer/reset_password_instructions.html.haml +6 -0
  143. data/app/views/devise/mailer/unlock_instructions.html.haml +5 -0
  144. data/app/views/devise/passwords/edit.html.haml +14 -0
  145. data/app/views/devise/passwords/new.html.haml +12 -0
  146. data/app/views/devise/registrations/edit.html.haml +18 -0
  147. data/app/views/devise/registrations/new.html.haml +10 -0
  148. data/app/views/devise/sessions/new.html.haml +16 -0
  149. data/app/views/devise/shared/_links.haml +17 -0
  150. data/app/views/devise/unlocks/new.html.haml +11 -0
  151. data/app/views/domains/_fields.html.haml +0 -0
  152. data/app/views/domains/_form.html.haml +7 -0
  153. data/app/views/domains/index.html.haml +133 -0
  154. data/app/views/domains/show.html.haml +1 -0
  155. data/app/views/layouts/_nav.html.haml +3 -0
  156. data/app/views/layouts/application.html.haml +29 -0
  157. data/app/views/server/_certificates.html.haml +10 -0
  158. data/app/views/server/_dovecot.html.haml +27 -0
  159. data/app/views/server/_dspam.html.haml +9 -0
  160. data/app/views/server/_postfix_info.html.haml +5 -0
  161. data/app/views/server/_postfix_test.html.haml +5 -0
  162. data/app/views/server/_status.html.haml +11 -0
  163. data/app/views/server/index.html.haml +36 -0
  164. data/app/views/users/_form.html.haml +11 -0
  165. data/app/views/users/_list.html.haml +0 -0
  166. data/bin/rmails +43 -0
  167. data/config.ru +4 -0
  168. data/config/application.rb +62 -0
  169. data/config/boot.rb +6 -0
  170. data/config/environment.rb +5 -0
  171. data/config/environments/development.rb +37 -0
  172. data/config/environments/production.rb +67 -0
  173. data/config/environments/test.rb +37 -0
  174. data/config/initializers/backtrace_silencers.rb +7 -0
  175. data/config/initializers/devise.rb +240 -0
  176. data/config/initializers/devise_encryptable.rb +37 -0
  177. data/config/initializers/devise_models.rb +86 -0
  178. data/config/initializers/inflections.rb +15 -0
  179. data/config/initializers/mime_types.rb +5 -0
  180. data/config/initializers/secret_token.rb +7 -0
  181. data/config/initializers/session_store.rb +8 -0
  182. data/config/initializers/simple_form.rb +142 -0
  183. data/config/initializers/simple_form_bootstrap.rb +45 -0
  184. data/config/initializers/wrap_parameters.rb +14 -0
  185. data/config/locales/cz.yml +45 -0
  186. data/config/locales/devise.cz.yml +47 -0
  187. data/config/locales/devise.en.yml +60 -0
  188. data/config/locales/en.yml +5 -0
  189. data/config/locales/server/cz.yml +14 -0
  190. data/config/locales/server/en.yml +7 -0
  191. data/config/locales/server/help/dovecot/cz.yml +21 -0
  192. data/config/locales/server/help/dovecot/en.yml +18 -0
  193. data/config/locales/server/help/dspam/cz.yml +10 -0
  194. data/config/locales/server/help/dspam/en.yml +4 -0
  195. data/config/locales/server/key/dovecot/cz.yml +23 -0
  196. data/config/locales/server/key/dovecot/en.yml +20 -0
  197. data/config/locales/server/key/dspam/cz.yml +10 -0
  198. data/config/locales/server/key/dspam/en.yml +4 -0
  199. data/config/locales/simple_form.en.yml +26 -0
  200. data/config/locales/views/admin_users/cz.yml +25 -0
  201. data/config/locales/views/admin_users/en.yml +5 -0
  202. data/config/locales/views/aliases/cz.yml +17 -0
  203. data/config/locales/views/aliases/en.yml +1 -0
  204. data/config/locales/views/devise/cz.yml +26 -0
  205. data/config/locales/views/devise/en.yml +13 -0
  206. data/config/locales/views/domains/cz.yml +15 -0
  207. data/config/locales/views/domains/en.yml +15 -0
  208. data/config/locales/views/server/cz.yml +19 -0
  209. data/config/locales/views/server/en.yml +3 -0
  210. data/config/locales/views/users/cz.yml +18 -0
  211. data/config/locales/views/users/en.yml +1 -0
  212. data/config/routes.rb +80 -0
  213. data/db/migrate/20121112201233_virtual_domain.rb +11 -0
  214. data/db/migrate/20121112201247_virtual_alias.rb +10 -0
  215. data/db/migrate/20121112201341_virtual_user.rb +34 -0
  216. data/db/migrate/20121112201359_create_admin_user.rb +30 -0
  217. data/db/migrate/20121112201411_server_configuration.rb +13 -0
  218. data/db/migrate/20130304083938_join_domains_users.rb +12 -0
  219. data/db/migrate/20130311214040_create_versions.rb +18 -0
  220. data/db/seeds.rb +45 -0
  221. data/lib/devise-encryptable.rb +1 -0
  222. data/lib/rmails.rb +5 -0
  223. data/lib/rmails/installer.rb +37 -0
  224. data/lib/rmails/version.rb +3 -0
  225. data/lib/tasks/.gitkeep +0 -0
  226. data/lib/templates/haml/scaffold/_form.html.haml +10 -0
  227. data/locals +0 -0
  228. data/log/.gitkeep +0 -0
  229. data/public/404.html +26 -0
  230. data/public/422.html +26 -0
  231. data/public/500.html +25 -0
  232. data/public/favicon.ico +0 -0
  233. data/public/fonts/London.eot +0 -0
  234. data/public/fonts/London.otf +0 -0
  235. data/public/fonts/London.woff +0 -0
  236. data/public/fonts/LondonBold.otf +0 -0
  237. data/public/robots.txt +5 -0
  238. data/rmails.gemspec +35 -0
  239. data/script/prepflog.pl +576 -0
  240. data/script/rails +6 -0
  241. data/system/config/automateit_env.rb +16 -0
  242. data/system/config/fields.yml +48 -0
  243. data/system/config/tags.yml +39 -0
  244. data/system/dist/README_AutomateIt_dist.txt +20 -0
  245. data/system/dist/amavis/spamassassin.cf.erb +85 -0
  246. data/system/dist/amavis/user.erb +33 -0
  247. data/system/dist/awstats/awstats.mail.conf.erb +41 -0
  248. data/system/dist/awstats/prepflog.pl +576 -0
  249. data/system/dist/dovecot/dovecot-sql.conf.ext.erb +14 -0
  250. data/system/dist/dovecot/dovecot.conf.erb +297 -0
  251. data/system/dist/dovecot/old_dovecot.conf.erb +63 -0
  252. data/system/dist/dspam/conf.erb +96 -0
  253. data/system/dist/dspam/pgsql.conf +33 -0
  254. data/system/dist/nginx/awstats.erb +17 -0
  255. data/system/dist/nginx/rmails.erb +40 -0
  256. data/system/dist/postfix/email2email.cf.erb +5 -0
  257. data/system/dist/postfix/main.cf.erb +118 -0
  258. data/system/dist/postfix/master.cf.erb +74 -0
  259. data/system/dist/postfix/sasl.conf.erb +3 -0
  260. data/system/dist/postfix/sender_login_maps.cf.erb +5 -0
  261. data/system/dist/postfix/virtual_alias_maps.cf.erb +5 -0
  262. data/system/dist/postfix/virtual_mailbox_domains.cf.erb +5 -0
  263. data/system/dist/postfix/virtual_mailbox_maps.cf.erb +5 -0
  264. data/system/dist/postgresql/postgresql.conf.erb +54 -0
  265. data/system/dist/rmails/Gemfile.1 +8 -0
  266. data/system/dist/rmails/Gemfile.2 +24 -0
  267. data/system/dist/rmails/database.yml.erb +15 -0
  268. data/system/dist/sudoers +37 -0
  269. data/system/lib/README_AutomateIt_lib.txt +22 -0
  270. data/system/lib/dkim_key.rb +9 -0
  271. data/system/lib/smtpd_key.rb +39 -0
  272. data/system/lib/ssl.rb +23 -0
  273. data/system/recipes/01_prepare_server.rb +84 -0
  274. data/system/recipes/02_setup_database.rb +65 -0
  275. data/system/recipes/03_setup_postfix.rb +124 -0
  276. data/system/recipes/04_setup_dovecot.rb +78 -0
  277. data/system/recipes/05_setup_nginx.rb +29 -0
  278. data/system/recipes/06_setup_dspam.rb +24 -0
  279. data/system/recipes/07_setup_amavis.rb +16 -0
  280. data/system/recipes/08_setup_spamassassin.rb +22 -0
  281. data/system/recipes/09_setup_awstats.rb +49 -0
  282. data/system/recipes/XX_start_services.rb +5 -0
  283. data/test/fixtures/.gitkeep +0 -0
  284. data/test/functional/.gitkeep +0 -0
  285. data/test/functional/aliases_controller_test.rb +7 -0
  286. data/test/functional/domains_controller_test.rb +7 -0
  287. data/test/functional/users_controller_test.rb +7 -0
  288. data/test/integration/.gitkeep +0 -0
  289. data/test/performance/browsing_test.rb +12 -0
  290. data/test/test_helper.rb +13 -0
  291. data/test/unit/.gitkeep +0 -0
  292. data/test/unit/helpers/aliases_helper_test.rb +4 -0
  293. data/test/unit/helpers/domains_helper_test.rb +4 -0
  294. data/test/unit/helpers/users_helper_test.rb +4 -0
  295. data/vendor/assets/javascripts/.gitkeep +0 -0
  296. data/vendor/assets/javascripts/canjs/can.construct.proxy.js +60 -0
  297. data/vendor/assets/javascripts/canjs/can.construct.super.js +44 -0
  298. data/vendor/assets/javascripts/canjs/can.control.plugin.js +245 -0
  299. data/vendor/assets/javascripts/canjs/can.control.view.js +88 -0
  300. data/vendor/assets/javascripts/canjs/can.dojo.js +3669 -0
  301. data/vendor/assets/javascripts/canjs/can.dojo.min.js +66 -0
  302. data/vendor/assets/javascripts/canjs/can.fixture.js +1020 -0
  303. data/vendor/assets/javascripts/canjs/can.jquery.js +2995 -0
  304. data/vendor/assets/javascripts/canjs/can.jquery.min.js +52 -0
  305. data/vendor/assets/javascripts/canjs/can.mootools.js +3462 -0
  306. data/vendor/assets/javascripts/canjs/can.mootools.min.js +63 -0
  307. data/vendor/assets/javascripts/canjs/can.observe.attributes.js +293 -0
  308. data/vendor/assets/javascripts/canjs/can.observe.backup.js +368 -0
  309. data/vendor/assets/javascripts/canjs/can.observe.delegate.js +359 -0
  310. data/vendor/assets/javascripts/canjs/can.observe.setter.js +58 -0
  311. data/vendor/assets/javascripts/canjs/can.observe.validations.js +374 -0
  312. data/vendor/assets/javascripts/canjs/can.view.modifiers.js +292 -0
  313. data/vendor/assets/javascripts/canjs/can.yui.js +3530 -0
  314. data/vendor/assets/javascripts/canjs/can.yui.min.js +65 -0
  315. data/vendor/assets/javascripts/canjs/can.zepto.js +3426 -0
  316. data/vendor/assets/javascripts/canjs/can.zepto.min.js +62 -0
  317. data/vendor/assets/javascripts/twitter/bootstrap-affix.js +104 -0
  318. data/vendor/assets/javascripts/twitter/bootstrap-alert.js +90 -0
  319. data/vendor/assets/javascripts/twitter/bootstrap-button.js +96 -0
  320. data/vendor/assets/javascripts/twitter/bootstrap-carousel.js +176 -0
  321. data/vendor/assets/javascripts/twitter/bootstrap-collapse.js +158 -0
  322. data/vendor/assets/javascripts/twitter/bootstrap-dropdown.js +150 -0
  323. data/vendor/assets/javascripts/twitter/bootstrap-modal.js +239 -0
  324. data/vendor/assets/javascripts/twitter/bootstrap-popover.js +103 -0
  325. data/vendor/assets/javascripts/twitter/bootstrap-scrollspy.js +151 -0
  326. data/vendor/assets/javascripts/twitter/bootstrap-tab.js +135 -0
  327. data/vendor/assets/javascripts/twitter/bootstrap-tooltip.js +275 -0
  328. data/vendor/assets/javascripts/twitter/bootstrap-transition.js +60 -0
  329. data/vendor/assets/javascripts/twitter/bootstrap-typeahead.js +300 -0
  330. data/vendor/assets/javascripts/twitter/my/bootstrap-typeahead.js +311 -0
  331. data/vendor/assets/stylesheets/.gitkeep +0 -0
  332. metadata +470 -0
@@ -0,0 +1,48 @@
1
+ window.dbg = (obj) ->
2
+ $('body').append('<pre>'+JSON.stringify(obj, null, '\t')+'</pre>')
3
+
4
+ window.dbg3 = (obj) ->
5
+ $('body').append('<pre>'+obj+'</pre>')
6
+
7
+ window.dbg2 = (node) ->
8
+ tmpNode = document.createElement( "div" )
9
+ tmpNode.appendChild( node.cloneNode( true ) )
10
+ str = tmpNode.innerHTML
11
+ tmpNode = node = null
12
+ escapedStr = str.replace( "<" , "&lt;" ).replace( ">" , "&gt;")
13
+ $('body').append('<pre>'+escapedStr+'</pre>')
14
+
15
+ $.fn.serializeObject = () ->
16
+ o = {}
17
+ a = this.serializeArray()
18
+ $.each(a, () ->
19
+ if (o[this.name] != undefined)
20
+ if (!o[this.name].push)
21
+ o[this.name] = [o[this.name]]
22
+ o[this.name].push(this.value || '')
23
+ else
24
+ o[this.name] = this.value || ''
25
+ )
26
+ return o
27
+
28
+ window.sticky = () ->
29
+ y = $(window).scrollTop()
30
+ if y > $('header').height()
31
+ height = $('nav.topbar').css({
32
+ 'position': 'fixed'
33
+ 'top': '0'
34
+ 'width': $('#page').width()
35
+ 'box-shadow': '0px 20px 20px -15px #CCC'
36
+ }).height()
37
+ $('#container').css({
38
+ 'padding-top': height
39
+ })
40
+ else
41
+ $('nav.topbar').removeAttr('style')
42
+ $('#container').removeAttr('style')
43
+
44
+
45
+ String.prototype.model = () ->
46
+ return can.capitalize( this.replace( /[-_]([a-z])/ig, (z,b) ->
47
+ return b.toUpperCase()
48
+ ))
@@ -0,0 +1,42 @@
1
+ window.Admin = can.Model({
2
+ findAll : 'GET <%= Rails.application.routes.url_helpers.admin_users_path %>'
3
+
4
+ findOne : ('GET ' + unescape('<%= Rails.application.routes.url_helpers.admin_user_path('{id}') %>'))
5
+
6
+ create : (attrs, callback) ->
7
+ url = '<%= Rails.application.routes.url_helpers.admin_users_path %>'
8
+ return $.post(url, attrs, callback, "json")
9
+
10
+ update : ('PUT ' + unescape('<%= Rails.application.routes.url_helpers.admin_user_path('{id}') %>'))
11
+
12
+ destroy : ('DELETE ' + unescape('<%= Rails.application.routes.url_helpers.admin_user_path('{id}') %>'))
13
+
14
+ attributes: {
15
+ virtual_domains: 'Models.Domain.models'
16
+ },
17
+
18
+ init: () ->
19
+ @validatePresenceOf ['name', 'email']
20
+
21
+ }, {
22
+
23
+ domain_ids: ->
24
+ ids = []
25
+ can.each @['domains'], (domain, index) ->
26
+ ids.push(domain.id)
27
+ ids
28
+
29
+ })
30
+
31
+ window.Admin.List = can.Model.List({
32
+ with_id: (id) ->
33
+ the_one = null
34
+ @each (admin) ->
35
+ if (admin.id == id)
36
+ the_one = admin
37
+ return admin
38
+ return the_one
39
+ })
40
+
41
+ window.Admin.prototype.alert = () ->
42
+ alert('<%= I18n.t('alert.admin') %>')
@@ -0,0 +1,28 @@
1
+ window.Alias = can.Model({
2
+ findAll : 'GET <%= Rails.application.routes.url_helpers.domain_aliases_path("{domain_id}") %>'
3
+
4
+ findOne : ('GET ' + unescape('<%= Rails.application.routes.url_helpers.domain_alias_path('{domain_id}', '{id}') %>'))
5
+
6
+ create : (attrs, domain_id, callback) ->
7
+ url = unescape('<%= Rails.application.routes.url_helpers.domain_aliases_path("{domain_id}") %>').replace("{domain_id}", domain_id)
8
+ return $.post(url, attrs, callback, "json")
9
+
10
+ update : (attrs, alias, url) ->
11
+ alias.attr(attrs['virtual_alias'])
12
+ attrs["_method"] = "PUT"
13
+ return $.ajax({
14
+ url: url + '/' + alias.id
15
+ type: 'POST'
16
+ data: attrs
17
+ dataType: 'json'
18
+ })
19
+
20
+ destroy : ('DELETE ' + unescape('<%= Rails.application.routes.url_helpers.domain_alias_path('{domain_id}', '{id}') %>'))
21
+
22
+ init: () ->
23
+ @validatePresenceOf ['source', 'destination']
24
+
25
+ }, {})
26
+
27
+ window.Alias.prototype.alert = () ->
28
+ alert('<%= I18n.t('alert.alias') %>')
@@ -0,0 +1,39 @@
1
+ window.Domain = can.Model({
2
+ findAll : 'GET <%= Rails.application.routes.url_helpers.domains_path %>'
3
+
4
+ findOne : ('GET ' + unescape('<%= Rails.application.routes.url_helpers.domain_path('{id}') %>'))
5
+
6
+ create : (attrs, callback) ->
7
+ url = '<%= Rails.application.routes.url_helpers.domains_path %>'
8
+ return $.post(url, attrs, callback, "json")
9
+
10
+ update : (attrs, domain ) ->
11
+ url = unescape('<%= Rails.application.routes.url_helpers.domain_path('{id}') %>').replace('{id}', domain.id)
12
+ return $.post(url, attrs, null, "json")
13
+
14
+ destroy : ('DELETE ' + unescape('<%= Rails.application.routes.url_helpers.domain_path('{id}') %>'))
15
+
16
+
17
+ attributes: {
18
+ virtual_users: 'Models.User.models',
19
+ virtual_aliases: 'Models.Alias.models'
20
+ },
21
+
22
+ init: () ->
23
+ @validatePresenceOf ['name']
24
+ #@validateFormatOf ['name'], /\A(?:[-a-z0-9]+\.)+[a-z]{2,}\Z/i
25
+
26
+ }, {})
27
+
28
+ window.Domain.List = can.Model.List({
29
+ with_id: (id) ->
30
+ the_one = null
31
+ @each (domain) ->
32
+ if (domain.id == id)
33
+ the_one = domain
34
+ return domain
35
+ return the_one
36
+ })
37
+
38
+ window.Domain.prototype.alert = () ->
39
+ alert('<%= I18n.t('alert.domain') %>')
@@ -0,0 +1,18 @@
1
+ window.Property = can.Model({
2
+ findAll : 'GET <%= Rails.application.routes.url_helpers.server_path :format => :json %>'
3
+
4
+ findOne : ('GET ' + unescape('<%= Rails.application.routes.url_helpers.server_property_path('{id}') %>'))
5
+
6
+ update : (id, new_value, callback) ->
7
+ url = unescape('<%= Rails.application.routes.url_helpers.server_property_path('{id}') %>').replace('{id}', id)
8
+ return $.post(url, {value: new_value}, callback, "json")
9
+
10
+ init: () ->
11
+ @validatePresenceOf ['key']
12
+ @validatePresenceOf ['value']
13
+
14
+ }, {})
15
+
16
+
17
+ window.Property.prototype.alert = () ->
18
+ alert('<%= I18n.t('alert.property') %>')
@@ -0,0 +1,29 @@
1
+ window.User = can.Model({
2
+ findAll : 'GET <%= Rails.application.routes.url_helpers.domain_users_path('{domain_id}') %>'
3
+
4
+ findOne : ('GET ' + unescape('<%= Rails.application.routes.url_helpers.domain_user_path('{domain_id}', '{id}') %>'))
5
+
6
+ create : (attrs, domain_id, callback) ->
7
+ url = unescape('<%= Rails.application.routes.url_helpers.domain_users_path("{domain_id}") %>').replace("{domain_id}", domain_id)
8
+ return $.post(url, attrs, callback, "json")
9
+
10
+ update : (attrs, user, url ) ->
11
+ attrs["_method"] = "PUT"
12
+ return $.ajax({
13
+ url: url + '/' + user.id
14
+ type: 'POST'
15
+ data: attrs
16
+ dataType: 'json'
17
+ success: (json) ->
18
+ dbg(json)
19
+ })
20
+
21
+ destroy : ('DELETE ' + unescape('<%= Rails.application.routes.url_helpers.domain_user_path('{domain_id}', '{id}') %>'))
22
+
23
+ init: () ->
24
+ @validatePresenceOf ['email']
25
+
26
+ }, {})
27
+
28
+ window.User.prototype.alert = () ->
29
+ alert('<%= I18n.t('alert.user') %>')
@@ -0,0 +1,156 @@
1
+ //= require base
2
+ //= require chosen
3
+ //= require_self
4
+
5
+ @font-face
6
+ font-family: 'london'
7
+ src: url("/fonts/London.eot")
8
+ src: url('/fonts/London.woff') format('woff'), url('/fonts/London.otf') format('truetype'), url('/fonts/LondonBold.otf') format('bold')
9
+
10
+ @import "facebox"
11
+ @import "twitter/bootstrap"
12
+
13
+ body
14
+ font: 13px "Lucida Grande","Tahoma",sans-serif
15
+ p
16
+ margin-bottom: 10px
17
+ ul
18
+ list-style: none outside none
19
+ a
20
+ text-decoration: none
21
+ input, button, textarea, select, optgroup, option
22
+ font-family: inherit
23
+ font-size: inherit
24
+ font-style: inherit
25
+ font-weight: inherit
26
+ input, button, textarea, select
27
+ *font-size: 100%
28
+
29
+ .dn
30
+ display: none
31
+ .di
32
+ display: inline
33
+ .dib
34
+ display: inline-block
35
+ .db
36
+ display: block
37
+ .out
38
+ clear: both
39
+ .left
40
+ float: left
41
+ .right
42
+ float: right
43
+ .tar
44
+ text-align: right!important
45
+
46
+ header
47
+ color: #9f9f9f
48
+ h1
49
+ font: "Lucida Grander", "Tahoma", serif
50
+ color: #9f9f9f
51
+ text-shadow: 1px 1px 1px #fff
52
+ padding-left: 11px
53
+ a
54
+ color: #9f9f9f
55
+ .right
56
+ padding-right: 2em
57
+ .tab-pane
58
+ display: none
59
+ .btn-group a
60
+ text-transform: uppercase
61
+ padding: 3px 4px
62
+ .chzn-choices
63
+ border-radius: 4px
64
+ .iconat
65
+ font-size: 28px !important
66
+ width: 30px
67
+ height: 30px
68
+ padding: 1px
69
+ margin: 1px
70
+ display: inline-block
71
+ cursor: default
72
+ float: left
73
+ text-decoration: none
74
+ border: none
75
+
76
+ #sys_nav li a
77
+ display: inline-block
78
+
79
+ #content .nav li
80
+ display: inline
81
+
82
+ #new_domain
83
+ background-color: #f5f5f5
84
+
85
+ #domains .empty, #domains .inedit
86
+ form
87
+ margin: 20px
88
+ label
89
+ padding-right: 5px
90
+ form, fieldset
91
+ display: inline-block
92
+ background: transparent
93
+ border: none
94
+ *
95
+ display: inline
96
+ //.actions
97
+ float: right
98
+ //.inputs
99
+ float: left
100
+ .iconat
101
+ color: #a4a4a4
102
+
103
+ #rmails
104
+ .list .table
105
+ tr td *
106
+ display: inline-block
107
+
108
+ .label
109
+ display: inline !important
110
+
111
+ .aliases, .users
112
+ margin: 0
113
+ label
114
+ display: block !important
115
+ text-align: left !important
116
+ width: auto !important
117
+ form, fieldset
118
+ display: inline-block !important
119
+ margin: 0 !important
120
+ padding: 0 !important
121
+ .actions
122
+ clear: both
123
+ width: 100%
124
+
125
+ .aliases
126
+ .control-group
127
+ float: left
128
+ input.string, textarea
129
+ display: block !important
130
+ textarea
131
+ height: 3em
132
+ width: 280px
133
+ form
134
+ vertical-align: top
135
+ .icon-hand-right
136
+ float: left
137
+ position: relative
138
+ top: 5ex
139
+ padding: 3px
140
+
141
+ .users
142
+ input.string, input.password
143
+ width: 254px !important
144
+ display: inline-block !important
145
+
146
+ #system
147
+ /*.control-label
148
+ width: 233px
149
+
150
+ #admins
151
+ .item>i
152
+ float: left
153
+
154
+ #new_admin_user
155
+ button[type="submit"], input[type="submit"]
156
+ margin-left: 11em
@@ -0,0 +1,243 @@
1
+ html, body#comfy, body#rmails
2
+ height: 100%
3
+
4
+ body#comfy, body#rmails
5
+ background-color: #252525
6
+
7
+ // -- Containers ----------------------------------------------------------
8
+ .body-wrapper
9
+ height: 100%
10
+ .left-column
11
+ width: 175px
12
+ float: left
13
+ .left-column-content
14
+ padding: 25px 0px
15
+ width: 175px
16
+ position: fixed
17
+ .center-column
18
+ position: relative
19
+ margin: 0px 250px 0px 175px
20
+ min-height: 100%
21
+ background-color: #e6e6e6
22
+ .center-column-content
23
+ padding: 25px
24
+ .right-column
25
+ width: 250px
26
+ float: right
27
+ .right-column-content
28
+ padding: 25px 10px
29
+ width: 250px
30
+ position: fixed
31
+
32
+ // -- Navigation ----------------------------------------------------------
33
+ .left-column-content ul.navigation
34
+ list-style: none
35
+ margin: 0
36
+ a
37
+ position: relative
38
+ display: block
39
+ padding: 7px 15px
40
+ color: #777
41
+ border-bottom: 1px solid #1a1a1a
42
+ text-decoration: none
43
+ a:hover, a.active
44
+ color: #ddd
45
+ a.active
46
+ background-color: #1f1f1f
47
+ box-shadow: inset 0px 0px 10px #000
48
+ a.active:after
49
+ position: absolute
50
+ top: 10px
51
+ right: -8px
52
+ z-index: 9999
53
+ content: ''
54
+ display: block
55
+ height: 16px
56
+ width: 8px
57
+ background: transparent image-url("nav_arrow.png")
58
+
59
+ // -- Right Side Boxes ----------------------------------------------------
60
+ .right-column-content
61
+ .box
62
+ background-color: #fff
63
+ padding: 5px
64
+ border-radius: 3px
65
+ margin-bottom: 10px
66
+ overflow: auto
67
+ #mirrors select
68
+ margin-bottom: 0
69
+ #form-save
70
+ label
71
+ padding-top: 0
72
+
73
+ // -- Common Elements -----------------------------------------------------
74
+ table.table, ul.list
75
+ .icon
76
+ width: 28px
77
+ height: 28px
78
+ background: image-url("icon_page.gif")
79
+ .dragger
80
+ width: 28px
81
+ height: 28px
82
+ background: image-url("icon_move.gif")
83
+ cursor: move
84
+ display: none
85
+ span
86
+ display: none
87
+ &:hover .dragger
88
+ display: block
89
+ .category
90
+ display: inline-block
91
+ vertical-align: top
92
+ font-size: 11px
93
+ line-height: 11px
94
+ border: 1px solid #ddd
95
+ padding: 2px 5px
96
+ background-color: #fff
97
+ border-radius: 3px
98
+ border-left-width: 7px
99
+ .item-title
100
+ color: #000
101
+ a
102
+ color: #000
103
+ .item-meta
104
+ font-size: 11px
105
+ line-height: 14px
106
+
107
+ // -- Categories Widget ---------------------------------------------------
108
+ .categories-widget
109
+ background: #f5f5f5
110
+ border-radius: 3px
111
+ border: 1px solid #ddd
112
+ padding: 5px 10px
113
+ margin-bottom: 10px
114
+ .categories-widget-label
115
+ width: 100px
116
+ float: left
117
+ color: #777
118
+ .categories
119
+ overflow: hidden
120
+ margin: 0px 50px 0px 110px
121
+ &.editable
122
+ display: none
123
+ .category
124
+ display: inline-block
125
+ font-size: 11px
126
+ line-height: 20px
127
+ border-radius: 3px
128
+ background-color: #fff
129
+ padding: 0 7px
130
+ border: 1px solid #eee
131
+ &.active
132
+ border-color: #a5a5a5
133
+ form
134
+ display: inline-block
135
+ vertical-align: middle
136
+ .action-links
137
+ float: right
138
+ margin-left: 10px
139
+ .done
140
+ display: none
141
+ form
142
+ margin: 0
143
+ .input-append
144
+ margin: 0
145
+ input[type=text]
146
+ width: 125px
147
+ font-size: 11px
148
+ line-height: 14px
149
+ padding: 3px
150
+
151
+ // -- Sortable List -------------------------------------------------------
152
+ ul.list
153
+ margin: 1em 0 0
154
+ list-style: none
155
+ .item
156
+ overflow: hidden
157
+ padding: 5px
158
+ border-radius: 3px
159
+ margin-bottom: 5px
160
+ background-color: #f1f1f1
161
+ &:hover
162
+ background-color: #f5f5f5
163
+ .toggle
164
+ float: left
165
+ height: 28px
166
+ width: 28px
167
+ &.open a
168
+ background-image: image-url("arrow_bottom.gif")
169
+ a
170
+ display: block
171
+ height: 28px
172
+ width: 28px
173
+ background: image-url("arrow_right.gif") center center no-repeat
174
+ span
175
+ display: none
176
+ .icon
177
+ float: left
178
+ width: 28px
179
+ height: 28px
180
+ &.draft
181
+ background: image-url("icon_draft.gif") left top no-repeat
182
+ &.atsign
183
+ background: image-url("at-sign.png") left top no-repeat
184
+ .item-content
185
+ margin-left: 32px
186
+ a.item-label
187
+ color: #1c2733
188
+ font-size: 15px
189
+ font-weight: 700
190
+ .label
191
+ display: none
192
+ opacity: 0.7
193
+ &:hover
194
+ opacity: 1
195
+ &:hover
196
+ .label
197
+ display: inline
198
+ .btn-group
199
+ float: right
200
+ li ul
201
+ list-style: none
202
+ margin: 0 0 0 28px
203
+
204
+ // -- Sites ---------------------------------------------------------------
205
+ &.c-cms-admin-sites
206
+ table .icon
207
+ background: image-url("icon_site.gif")
208
+
209
+ // -- Layouts -------------------------------------------------------------
210
+ &.c-cms-admin-layouts
211
+ ul.list
212
+ .item
213
+ .icon
214
+ background: image-url("icon_layout.gif")
215
+ .item-content
216
+ margin-left: 35px
217
+
218
+ // -- Pages ---------------------------------------------------------------
219
+ &.c-cms-admin-pages
220
+ #form-blocks
221
+ ul.nav-tabs
222
+ margin-left: 180px
223
+ .no-tags
224
+ margin-left: 180px
225
+ text-align: center
226
+ padding: 10px
227
+ background-color: #f5f5f5
228
+ margin-bottom: 10px
229
+ .files
230
+ margin: 5px 0
231
+ .file
232
+ display: inline-block
233
+ border: 1px solid #ccc
234
+ border-radius: 3px
235
+ padding: 0 5px
236
+ margin-bottom: 5px
237
+ font-size: 12px
238
+
239
+ // -- Snippets ------------------------------------------------------------
240
+ &.c-cms-admin-snippets
241
+ table .icon
242
+ background: image-url("icon_snippet.gif")
243
+