spud_core 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. data/README.markdown +41 -0
  2. data/app/assets/images/back_disabled.jpg +0 -0
  3. data/app/assets/images/back_enabled.jpg +0 -0
  4. data/app/assets/images/favicon.ico +0 -0
  5. data/app/assets/images/forward_disabled.jpg +0 -0
  6. data/app/assets/images/forward_enabled.jpg +0 -0
  7. data/app/assets/images/sort_asc.png +0 -0
  8. data/app/assets/images/sort_asc_disabled.png +0 -0
  9. data/app/assets/images/sort_both.png +0 -0
  10. data/app/assets/images/sort_desc.png +0 -0
  11. data/app/assets/images/sort_desc_disabled.png +0 -0
  12. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  13. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  14. data/app/assets/images/spud/admin/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
  15. data/app/assets/images/spud/admin/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
  16. data/app/assets/images/spud/admin/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
  17. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  18. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  19. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  20. data/app/assets/images/spud/admin/flick/ui-icons_0073ea_256x240.png +0 -0
  21. data/app/assets/images/spud/admin/flick/ui-icons_454545_256x240.png +0 -0
  22. data/app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png +0 -0
  23. data/app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png +0 -0
  24. data/app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png +0 -0
  25. data/app/assets/images/spud/admin/users_thumb.png +0 -0
  26. data/app/assets/javascripts/spud/admin/application.js +90 -0
  27. data/app/assets/javascripts/spud/admin/jquery.dataTables.min.js +151 -0
  28. data/app/assets/javascripts/spud/admin/settings.js +2 -0
  29. data/app/assets/javascripts/spud/admin/users.js +2 -0
  30. data/app/assets/javascripts/spud/setup.js +2 -0
  31. data/app/assets/javascripts/spud/sitemaps.js +2 -0
  32. data/app/assets/javascripts/spud/user_sessions.js +2 -0
  33. data/app/assets/javascripts/spud/users.js +2 -0
  34. data/app/assets/javascripts/wymeditor/iframe/default/lbl-article.png +0 -0
  35. data/app/assets/javascripts/wymeditor/iframe/default/lbl-aside.png +0 -0
  36. data/app/assets/javascripts/wymeditor/iframe/default/lbl-blockquote.png +0 -0
  37. data/app/assets/javascripts/wymeditor/iframe/default/lbl-command.png +0 -0
  38. data/app/assets/javascripts/wymeditor/iframe/default/lbl-details.png +0 -0
  39. data/app/assets/javascripts/wymeditor/iframe/default/lbl-figcaption.png +0 -0
  40. data/app/assets/javascripts/wymeditor/iframe/default/lbl-figure.png +0 -0
  41. data/app/assets/javascripts/wymeditor/iframe/default/lbl-footer.png +0 -0
  42. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h1.png +0 -0
  43. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h2.png +0 -0
  44. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h3.png +0 -0
  45. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h4.png +0 -0
  46. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h5.png +0 -0
  47. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h6.png +0 -0
  48. data/app/assets/javascripts/wymeditor/iframe/default/lbl-header.png +0 -0
  49. data/app/assets/javascripts/wymeditor/iframe/default/lbl-hgroup.png +0 -0
  50. data/app/assets/javascripts/wymeditor/iframe/default/lbl-mark.png +0 -0
  51. data/app/assets/javascripts/wymeditor/iframe/default/lbl-meter.png +0 -0
  52. data/app/assets/javascripts/wymeditor/iframe/default/lbl-nav.png +0 -0
  53. data/app/assets/javascripts/wymeditor/iframe/default/lbl-p.png +0 -0
  54. data/app/assets/javascripts/wymeditor/iframe/default/lbl-pre.png +0 -0
  55. data/app/assets/javascripts/wymeditor/iframe/default/lbl-progress.png +0 -0
  56. data/app/assets/javascripts/wymeditor/iframe/default/lbl-rp.png +0 -0
  57. data/app/assets/javascripts/wymeditor/iframe/default/lbl-rt.png +0 -0
  58. data/app/assets/javascripts/wymeditor/iframe/default/lbl-ruby.png +0 -0
  59. data/app/assets/javascripts/wymeditor/iframe/default/lbl-section.png +0 -0
  60. data/app/assets/javascripts/wymeditor/iframe/default/lbl-summary.png +0 -0
  61. data/app/assets/javascripts/wymeditor/iframe/default/lbl-time.png +0 -0
  62. data/app/assets/javascripts/wymeditor/iframe/default/readme.md +1 -0
  63. data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.css +91 -0
  64. data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.html +26 -0
  65. data/app/assets/javascripts/wymeditor/jquery.wymeditor.js +9983 -0
  66. data/app/assets/javascripts/wymeditor/jquery.wymeditor.min.js +34 -0
  67. data/app/assets/javascripts/wymeditor/lang/bg.js +45 -0
  68. data/app/assets/javascripts/wymeditor/lang/ca.js +45 -0
  69. data/app/assets/javascripts/wymeditor/lang/cs.js +45 -0
  70. data/app/assets/javascripts/wymeditor/lang/cy.js +45 -0
  71. data/app/assets/javascripts/wymeditor/lang/de.js +45 -0
  72. data/app/assets/javascripts/wymeditor/lang/en.js +45 -0
  73. data/app/assets/javascripts/wymeditor/lang/es.js +45 -0
  74. data/app/assets/javascripts/wymeditor/lang/fa.js +46 -0
  75. data/app/assets/javascripts/wymeditor/lang/fi.js +44 -0
  76. data/app/assets/javascripts/wymeditor/lang/fr.js +45 -0
  77. data/app/assets/javascripts/wymeditor/lang/gl.js +45 -0
  78. data/app/assets/javascripts/wymeditor/lang/he.js +45 -0
  79. data/app/assets/javascripts/wymeditor/lang/hr.js +45 -0
  80. data/app/assets/javascripts/wymeditor/lang/hu.js +45 -0
  81. data/app/assets/javascripts/wymeditor/lang/it.js +45 -0
  82. data/app/assets/javascripts/wymeditor/lang/ja.js +44 -0
  83. data/app/assets/javascripts/wymeditor/lang/lt.js +45 -0
  84. data/app/assets/javascripts/wymeditor/lang/nb.js +45 -0
  85. data/app/assets/javascripts/wymeditor/lang/nl.js +45 -0
  86. data/app/assets/javascripts/wymeditor/lang/nn.js +45 -0
  87. data/app/assets/javascripts/wymeditor/lang/pl.js +45 -0
  88. data/app/assets/javascripts/wymeditor/lang/pt-br.js +45 -0
  89. data/app/assets/javascripts/wymeditor/lang/pt.js +45 -0
  90. data/app/assets/javascripts/wymeditor/lang/ru.js +45 -0
  91. data/app/assets/javascripts/wymeditor/lang/sv.js +46 -0
  92. data/app/assets/javascripts/wymeditor/lang/tr.js +45 -0
  93. data/app/assets/javascripts/wymeditor/lang/zh_cn.js +47 -0
  94. data/app/assets/javascripts/wymeditor/plugins/embed/jquery.wymeditor.embed.js +82 -0
  95. data/app/assets/javascripts/wymeditor/plugins/fullscreen/icon_fullscreen.gif +0 -0
  96. data/app/assets/javascripts/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js +124 -0
  97. data/app/assets/javascripts/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js +49 -0
  98. data/app/assets/javascripts/wymeditor/plugins/list/jquery.wymeditor.list.js +60 -0
  99. data/app/assets/javascripts/wymeditor/plugins/rdfa/jquery.wymeditor.rdfa.js +186 -0
  100. data/app/assets/javascripts/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js +77 -0
  101. data/app/assets/javascripts/wymeditor/plugins/resizable/readme.txt +124 -0
  102. data/app/assets/javascripts/wymeditor/plugins/table/jquery.wymeditor.table.js +721 -0
  103. data/app/assets/javascripts/wymeditor/plugins/table/table_delete_column.png +0 -0
  104. data/app/assets/javascripts/wymeditor/plugins/table/table_delete_row.png +0 -0
  105. data/app/assets/javascripts/wymeditor/plugins/table/table_insert_column.png +0 -0
  106. data/app/assets/javascripts/wymeditor/plugins/table/table_insert_row.png +0 -0
  107. data/app/assets/javascripts/wymeditor/plugins/table/table_join_row.png +0 -0
  108. data/app/assets/javascripts/wymeditor/plugins/tidy/README +19 -0
  109. data/app/assets/javascripts/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js +78 -0
  110. data/app/assets/javascripts/wymeditor/plugins/tidy/tidy.php +58 -0
  111. data/app/assets/javascripts/wymeditor/plugins/tidy/wand.png +0 -0
  112. data/app/assets/javascripts/wymeditor/skins/compact/icons.png +0 -0
  113. data/app/assets/javascripts/wymeditor/skins/compact/skin.css +134 -0
  114. data/app/assets/javascripts/wymeditor/skins/compact/skin.js +37 -0
  115. data/app/assets/javascripts/wymeditor/skins/default/icons.png +0 -0
  116. data/app/assets/javascripts/wymeditor/skins/default/skin.css +133 -0
  117. data/app/assets/javascripts/wymeditor/skins/default/skin.js +40 -0
  118. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.header.gif +0 -0
  119. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.selector.silver.gif +0 -0
  120. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.wymeditor.png +0 -0
  121. data/app/assets/javascripts/wymeditor/skins/minimal/images/icons.silver.gif +0 -0
  122. data/app/assets/javascripts/wymeditor/skins/minimal/skin.css +131 -0
  123. data/app/assets/javascripts/wymeditor/skins/minimal/skin.js +30 -0
  124. data/app/assets/javascripts/wymeditor/skins/silver/COPYING +674 -0
  125. data/app/assets/javascripts/wymeditor/skins/silver/README +27 -0
  126. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.header.gif +0 -0
  127. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.selector.silver.gif +0 -0
  128. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.wymeditor.png +0 -0
  129. data/app/assets/javascripts/wymeditor/skins/silver/images/icons.silver.gif +0 -0
  130. data/app/assets/javascripts/wymeditor/skins/silver/skin.css +297 -0
  131. data/app/assets/javascripts/wymeditor/skins/silver/skin.js +61 -0
  132. data/app/assets/javascripts/wymeditor/skins/twopanels/icons.png +0 -0
  133. data/app/assets/javascripts/wymeditor/skins/twopanels/skin.css +134 -0
  134. data/app/assets/javascripts/wymeditor/skins/twopanels/skin.js +39 -0
  135. data/app/assets/javascripts/wymeditor/skins/wymeditor_icon.png +0 -0
  136. data/app/assets/stylesheets/spud/admin/application.css +464 -0
  137. data/app/assets/stylesheets/spud/admin/jquery-ui.css +568 -0
  138. data/app/assets/stylesheets/spud/admin/settings.css +4 -0
  139. data/app/assets/stylesheets/spud/admin/users.css +4 -0
  140. data/app/assets/stylesheets/spud/forms.css +108 -0
  141. data/app/assets/stylesheets/spud/login/application.css +302 -0
  142. data/app/assets/stylesheets/spud/login.css +58 -0
  143. data/app/assets/stylesheets/spud/setup.css +4 -0
  144. data/app/assets/stylesheets/spud/sitemaps.css +4 -0
  145. data/app/assets/stylesheets/spud/user_sessions.css +4 -0
  146. data/app/assets/stylesheets/spud/users.css +4 -0
  147. data/app/controllers/spud/admin/application_controller.rb +19 -0
  148. data/app/controllers/spud/admin/dashboard_controller.rb +7 -0
  149. data/app/controllers/spud/admin/settings_controller.rb +15 -0
  150. data/app/controllers/spud/admin/users_controller.rb +111 -0
  151. data/app/controllers/spud/application_controller.rb +48 -0
  152. data/app/controllers/spud/setup_controller.rb +22 -0
  153. data/app/controllers/spud/sitemaps_controller.rb +6 -0
  154. data/app/controllers/spud/user_sessions_controller.rb +28 -0
  155. data/app/controllers/spud/users_controller.rb +21 -0
  156. data/app/helpers/spud/admin/application_helper.rb +17 -0
  157. data/app/helpers/spud/admin/settings_helper.rb +2 -0
  158. data/app/helpers/spud/admin/users_helper.rb +2 -0
  159. data/app/helpers/spud/setup_helper.rb +2 -0
  160. data/app/helpers/spud/sitemaps_helper.rb +2 -0
  161. data/app/helpers/spud/user_sessions_helper.rb +2 -0
  162. data/app/helpers/spud/users_helper.rb +2 -0
  163. data/app/models/spud_admin_permission.rb +2 -0
  164. data/app/models/spud_setting.rb +2 -0
  165. data/app/models/spud_user.rb +16 -0
  166. data/app/models/spud_user_session.rb +3 -0
  167. data/app/views/layouts/spud/admin/application.html.erb +44 -0
  168. data/app/views/layouts/spud/admin/detail.html.erb +31 -0
  169. data/app/views/layouts/spud/login/application.html.erb +17 -0
  170. data/app/views/layouts/spud/setup.html.erb +47 -0
  171. data/app/views/spud/admin/dashboard/index.html.erb +11 -0
  172. data/app/views/spud/admin/users/_edit.html.erb +14 -0
  173. data/app/views/spud/admin/users/_form.html.erb +51 -0
  174. data/app/views/spud/admin/users/_new.html.erb +14 -0
  175. data/app/views/spud/admin/users/index.html.erb +41 -0
  176. data/app/views/spud/admin/users/show.html.erb +17 -0
  177. data/app/views/spud/setup/index.html.erb +25 -0
  178. data/app/views/spud/sitemaps/show.xml.builder +12 -0
  179. data/app/views/spud/user_sessions/new.html.erb +22 -0
  180. data/app/views/spud/users/_form.html.erb +35 -0
  181. data/app/views/spud/users/settings.html.erb +14 -0
  182. data/config/application.rb +48 -0
  183. data/config/boot.rb +6 -0
  184. data/config/routes.rb +15 -0
  185. data/lib/spud_core/belongs_to_app.rb +54 -0
  186. data/lib/spud_core/configuration.rb +9 -0
  187. data/lib/spud_core/engine.rb +34 -0
  188. data/lib/spud_core/test_files.rb +25 -0
  189. data/lib/spud_core.rb +8 -0
  190. metadata +311 -0
@@ -0,0 +1,108 @@
1
+ #dialog,
2
+ form {
3
+ margin:0 auto;
4
+ /*width:400px;*/
5
+ }
6
+ form input[type="text"],
7
+ form textarea {
8
+ padding: 3px;
9
+ font-size: 1.15em;
10
+ }
11
+ form input.full-width {
12
+ display: block;
13
+ width: 99%;
14
+ }
15
+ label {
16
+ display:block;
17
+ padding: 8px 0 3px;
18
+ }
19
+ label.inline {display:inline}
20
+ fieldset {
21
+ padding: 5px;
22
+ clear:both;
23
+ width: 100%;
24
+ margin: 0 auto 1.5em auto;
25
+ border: 1px solid #BFBAB0;
26
+ background-color: #F2EFE9;
27
+ background: #F2EFE9 -webkit-gradient(linear, left top, left 60%, from(#FFFFFF), to(#E9EFF2)) ;
28
+ background: -moz-linear-gradient(top, #FFFFFF 0%, #E9EFF2 100%);
29
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffFFFFFF,endColorstr=#ffE9EFF2);
30
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffFFFFFF,endColorstr=#ffE9EFF2)";
31
+ }
32
+ fieldset p {
33
+ padding:0 20px;
34
+ }
35
+ legend {
36
+ margin-left:1em;
37
+ color: #444;
38
+ font-weight:bold;
39
+ }
40
+ form ol,fieldset ol { padding: 1em 1em 0 1em; list-style-type:none;}
41
+ form ol li, fieldset ol li { padding-bottom: 1em;}
42
+ fieldset.submit {
43
+ border-style:none;
44
+ background-color: transparent;
45
+ background: none;
46
+ }
47
+ .left_aligned_form label {
48
+ display:inline;
49
+ float:left;
50
+ width: 10em;
51
+ margin-right: 1em;
52
+ }
53
+ .left_aligned_form ol li,
54
+ .right_aligned_form ol li {
55
+ float:left;
56
+ clear:left;
57
+ width: 100%;
58
+ padding-bottom:1em;
59
+ }
60
+ .left_aligned_form fieldset,
61
+ .right_aligned_form fieldset {
62
+ /*float:left ;*/
63
+ clear:left;
64
+ width: 100%;
65
+ margin: 0 0 1.5em 0;
66
+ }
67
+ .left_aligned_form fieldset.submit,
68
+ .right_aligned_form fieldset.submit {
69
+ margin:5px 0;
70
+ text-align:right;
71
+ width: auto;
72
+ border: 0 none #fff;
73
+ width:auto;
74
+ }
75
+ .right_aligned_form label {
76
+ float:left ;
77
+ display:inline;
78
+ width: 6em;
79
+ margin-right:1em;
80
+ text-align: right;
81
+ }
82
+ #form_tip {
83
+ position:absolute;
84
+ bottom:40px;
85
+ display:none;
86
+ width:190px;
87
+ /* margin: 10px 10px 10px 0;*/
88
+ padding: 10px;
89
+ background: #FEED77;
90
+ border: 1px solid #FEDF02;
91
+ text-align:justify;
92
+ }
93
+ #form_tip.active {
94
+ display:block;
95
+ }
96
+ div.field_with_errors {
97
+ display:inline;
98
+ }
99
+ .formError {
100
+ display:block;
101
+ color:#F00;
102
+ margin-left:100px;
103
+ }
104
+ div.field_with_errors label {
105
+ color:#F00;
106
+ background: url(/images/icons/error.png) top left no-repeat;
107
+ }
108
+ .formtab_buttons li {}
@@ -0,0 +1,302 @@
1
+ /* ...
2
+ *= require_self
3
+ *= require spud/admin/jquery-ui
4
+ *= require spud/forms
5
+ *= require spud/login
6
+ */
7
+ html {
8
+ font-family: Helvetica, Arial;
9
+ font-size:14px;
10
+ }
11
+ body {
12
+ background:#eee;
13
+ margin: 0 0;
14
+ }
15
+ a,a:visited {
16
+ color:#0073EA;
17
+ text-decoration:none;
18
+ }
19
+ a:hover {
20
+ text-decoration:underline;
21
+ }
22
+ a:hover .ui-button-text {
23
+ color:#fff;
24
+ }
25
+ #header {
26
+ height:100px;
27
+ background:rgb(199,90,0);
28
+ background-image: linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
29
+ background-image: -o-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
30
+ background-image: -moz-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
31
+ background-image: -webkit-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
32
+ background-image: -ms-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
33
+
34
+ background-image: -webkit-gradient(
35
+ linear,
36
+ left top,
37
+ left bottom,
38
+ color-stop(0.05, rgb(199,90,0)),
39
+ color-stop(0.53, rgb(179,72,0))
40
+ );
41
+
42
+ border-bottom:1px solid rgb(180,72,0);
43
+ color:#fff;
44
+ }
45
+ #header a,
46
+ #header a:visited {
47
+ color:#eee;
48
+ font-weight:normal;
49
+ }
50
+ .clear { clear: both; }
51
+ .greeting {
52
+ color:#ddd;
53
+ }
54
+
55
+ #header #user_meta {
56
+ float:right;
57
+ line-height:100px;
58
+ margin-right:15px;
59
+ }
60
+
61
+ #header h1 {
62
+ float:left;
63
+ color:#fff;
64
+ margin:0 15px;
65
+ line-height:100px;
66
+ }
67
+
68
+ #breadcrumbs {
69
+ background:#fff;
70
+ height:25px;
71
+ border-top:1px solid rgb(200,148,72);
72
+ border-bottom:1px solid #999;
73
+ line-height:25px;
74
+ padding:5px 15px;
75
+ box-shadow: 0px 0px 10px #888;
76
+
77
+ }
78
+ #breadcrumbs a,
79
+ #breadcrumbs a:visited {
80
+ color:#006699;
81
+ text-decoration:none;
82
+ }
83
+ #breadcrumbs a:hover {
84
+ color:#006699;
85
+ text-decoration:underline;
86
+ }
87
+ #breadcrumbs a.active,
88
+ #breadcrumbs a.active:hover {
89
+ color:#000;
90
+ text-decoration:none;
91
+ }
92
+
93
+ #content {
94
+ padding:15px 15px;
95
+ }
96
+
97
+ div.admin_application {
98
+ width:150px;
99
+ background:#fff;
100
+ /*height:150px;*/
101
+ float:left;
102
+
103
+ text-align:center;
104
+ border:1px solid transparent;
105
+ border-radius:10px;
106
+ margin: 0 10px 20px 10px;
107
+ }
108
+ div.admin_application:hover {
109
+ background:#fff;
110
+ border:1px solid #ccc;
111
+
112
+ }
113
+ .admin_application a,
114
+ .admin_application a:visited {
115
+ display:block;
116
+
117
+ color:#000;
118
+ padding:10px 10px;
119
+ text-decoration:none;
120
+ }
121
+ .admin_application img {
122
+ width:125px;
123
+ border:none;
124
+ height:125px;
125
+ }
126
+
127
+ #detail_wrapper {
128
+ background:#fff;
129
+ width:960px;
130
+ min-height:300px;
131
+ border-radius:10px;
132
+ margin:50px auto 0px auto;
133
+ }
134
+ #detail_wrapper h2
135
+ {
136
+
137
+ display:block;
138
+ line-height:50px;
139
+ color:#333;
140
+ }
141
+ #detail_wrapper .thumb_wrapper {
142
+ display:block;
143
+ width:100px;
144
+ height:100px;
145
+ float:left;
146
+
147
+ margin:-50px 10px 10px 10px;
148
+ }
149
+ #detail_wrapper h2 img {
150
+
151
+ width:100px;
152
+
153
+
154
+ }
155
+ .data_controls {
156
+ display:block;
157
+ margin-top:20px;
158
+ margin-right:10px;
159
+ float:right;
160
+ }
161
+ .data-table th {
162
+ position:relative;
163
+ padding-right:20px;
164
+ }
165
+ #details {
166
+ padding:0 10px;
167
+ }
168
+ #detail_nav_wrapper {
169
+ float:left;
170
+ width:225px;
171
+ min-height:200px;
172
+ }
173
+ #detail_nav {
174
+ padding-right:5px;
175
+ }
176
+ #detail_main_wrapper {
177
+ width:705px;
178
+ min-height:200px;
179
+ float:left;
180
+
181
+ }
182
+ #detail_main {
183
+ padding-left:5px;
184
+ }
185
+ .dataTables_length {
186
+ float:left;
187
+ line-height:22px;
188
+ font-size:12px;
189
+ margin-left:5px;
190
+ }
191
+ .dataTables_filter {
192
+ float:right;
193
+ }
194
+ .dataTables_info {
195
+ float:left;
196
+ line-height:22px;
197
+ font-size:12px;
198
+ margin-left:5px;
199
+ }
200
+ .dataTables_paginate {
201
+ float:right;
202
+ }
203
+ .dataTables_paginate .ui-button {
204
+ padding:2px 5px;
205
+
206
+ margin:0 5px;
207
+ }
208
+ .data-table .css_right {
209
+ position:absolute;
210
+ right:0;
211
+ top:1px;
212
+ }
213
+
214
+ /*Table Layout*/
215
+ .admin-table {
216
+ width:100%;
217
+ border:1px solid #eee;
218
+ border-radius:10px;
219
+ border-collapse:collapse;
220
+ }
221
+ .admin-table thead tr{
222
+ background:rgb(199,90,0);
223
+ color:#fff;
224
+
225
+ border-radius:10px 10px 0 0;
226
+ }
227
+ .admin-table th {
228
+ font-weight:normal;
229
+ text-align:left;
230
+ padding:2px 5px;
231
+ }
232
+ .admin-table td {
233
+ vertical-align:top;
234
+ padding:2px 5px;
235
+ }
236
+
237
+ .info_card {
238
+ width:400px;
239
+ padding:0 10px;
240
+ margin:0 auto;
241
+ border: 1px solid #BFBAB0;
242
+ background-color: #F2EFE9;
243
+ background: #F2EFE9 -webkit-gradient(linear, left top, left 60%, from(#FFFFFF), to(#E9EFF2)) ;
244
+ background: -moz-linear-gradient(top, #FFFFFF 0%, #E9EFF2 100%);
245
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffFFFFFF,endColorstr=#ffE9EFF2);
246
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffFFFFFF,endColorstr=#ffE9EFF2)";
247
+ }
248
+ .right_floated{
249
+ float:right;
250
+ }
251
+ .left_floated {
252
+ float:left;
253
+ }
254
+ .edit_controls {
255
+ float:right;
256
+ clear:both;
257
+ padding:2px;
258
+ }
259
+ .page_list
260
+ {
261
+ border-top:1px solid #eee;
262
+ padding-top:10px;
263
+ }
264
+ .page_row {
265
+ clear:both;
266
+ /*height:42px;*/
267
+ line-height:42px;
268
+ padding-left:5px;
269
+ }
270
+ .page_row:hover {
271
+ background:#eee;
272
+ }
273
+ .left_guide {
274
+ border-left:2px solid #999;
275
+ margin-left:20px;
276
+ }
277
+ /*WYM Editor Styles*/
278
+ /*.wym_skin_default .wym_section h2 {
279
+ display:none !important;
280
+ }*/
281
+
282
+ /*Flash Styles*/
283
+ div.flash {
284
+ padding:10px;
285
+ }
286
+ div.flash.notice {
287
+ background:#99ff99;
288
+ }
289
+ div.flash.warning {
290
+ background:#FFFACD;
291
+ }
292
+ div.flash.error {
293
+ background:#ff9999;
294
+ }
295
+ div.flash h2 {
296
+ color:white !important;
297
+ font-size:14px !important;
298
+ }
299
+ div.flash ul {
300
+ color:white !important;
301
+ font-size:12px !important;
302
+ }
@@ -0,0 +1,58 @@
1
+ body {
2
+ background:#eee;
3
+ margin:0;
4
+ }
5
+ #content_wrapper {
6
+ position: relative;
7
+ width: 100%;
8
+ height: 100%;
9
+ }
10
+ .login-form {
11
+ width: 460px;
12
+ margin: 75px auto 0;
13
+ padding: 0px;
14
+ color:#000;
15
+ background: #fff;
16
+ -webkit-border-radius: 10px;
17
+ -moz-border-radius: 10px;
18
+ border-radius:10px;
19
+ box-shadow: 2px 2px 10px #777;
20
+ overflow-x: hidden;
21
+ overflow-y: hidden;
22
+ }
23
+ .login-form h1 {
24
+ margin: 0;
25
+ padding: 10px;
26
+ background:rgb(199,90,0);
27
+ background-image: linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
28
+ background-image: -o-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
29
+ background-image: -moz-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
30
+ background-image: -webkit-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
31
+ background-image: -ms-linear-gradient(top, rgb(199,90,0) 5%, rgb(179,72,0) 53%);
32
+ background-image: -webkit-gradient(
33
+ linear,
34
+ left top,
35
+ left bottom,
36
+ color-stop(0.05, rgb(199,90,0)),
37
+ color-stop(0.53, rgb(179,72,0))
38
+ );
39
+ color: #fff;
40
+ }
41
+ .login-form form {
42
+ padding: 20px 20px 10px;
43
+ }
44
+ .login-form .field-group {
45
+ margin: 0 0 15px;
46
+ }
47
+ .login-form label {
48
+ margin: 0 0 5px;
49
+ }
50
+ .login-form input[type=text], .login-form input[type=password] {
51
+ display: block;
52
+ width: 410px;
53
+ padding: 3px;
54
+ font-size: 1.5em;
55
+ }
56
+ .login-form input[type=submit] {
57
+ font-size: 14px;
58
+ }
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,19 @@
1
+ class Spud::Admin::ApplicationController < Spud::ApplicationController
2
+ before_filter :require_admin_user
3
+ add_breadcrumb "Dashboard", :spud_admin_root_path
4
+ layout 'spud/admin/application'
5
+ respond_to :html,:json,:xml,:js
6
+ unloadable
7
+
8
+
9
+ private
10
+ def require_admin_user
11
+ return false if !require_user
12
+
13
+ if !@current_user.super_admin && current_user_permissions.count == 0
14
+ flash[:error] = "User must be an administrator to view this area."
15
+ redirect_to root_url() and return false
16
+ end
17
+ return true
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ class Spud::Admin::DashboardController < Spud::Admin::ApplicationController
2
+
3
+ def index
4
+ permission_set = current_user_permissions.collect{|p| p.name}
5
+ @admin_applications = Spud::Core.admin_applications.select{|app| @current_user.super_admin || permission_set.include?(app[:name])}
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ class Spud::Admin::SettingsController < Spud::Admin::ApplicationController
2
+ layout 'spud/admin/detail'
3
+ add_breadcrumb "Settings", :spud_admin_settings_path
4
+ def index
5
+ @spud_settings = SpudSetting.all
6
+ end
7
+
8
+ def create
9
+ @spud_settings = SpudSetting.all
10
+ if params[:spud_settings].blank?
11
+ flash[:error] = "Spud Settings not specified!"
12
+ redirect_to spud_admin_settings_url()
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,111 @@
1
+ class Spud::Admin::UsersController < Spud::Admin::ApplicationController
2
+ layout 'spud/admin/detail'
3
+ belongs_to_spud_app :users
4
+ add_breadcrumb "Users", :spud_admin_users_path
5
+
6
+ # filters
7
+ before_filter :load_user,:only => [:edit,:update,:show,:destroy]
8
+
9
+ def index
10
+ @users = SpudUser.order(:login).paginate :page => params[:page]
11
+ respond_with @users
12
+
13
+ end
14
+
15
+ def show
16
+ add_breadcrumb @user.full_name, :spud_admin_user_path
17
+ respond_with @user
18
+ end
19
+ def new
20
+ @user = SpudUser.new
21
+ Spud::Core.admin_applications.each do |application|
22
+ @user.spud_admin_permissions.new(:name => application[:name],:access => false)
23
+ end
24
+ respond_with @user do |format|
25
+ format.js { render :partial => "new"}
26
+ end
27
+
28
+
29
+ end
30
+
31
+ def create
32
+ status = 500
33
+ @user = SpudUser.new(params[:spud_user])
34
+ @user.super_admin = params[:spud_user][:super_admin]
35
+
36
+ if @user.save
37
+ status = 200
38
+ flash[:notice] = "User created successfully"
39
+
40
+ else
41
+ flash[:error] = "There was an error while saving the user."
42
+ render :action => "new"
43
+ end
44
+
45
+ respond_to do |format|
46
+ format.js { render :status => status, :json => @user.to_json}
47
+ format.html {
48
+ if status == 200
49
+ redirect_to spud_admin_users_url()
50
+ else
51
+ render :action => "new"
52
+ end
53
+ }
54
+ end
55
+ end
56
+
57
+
58
+ def edit
59
+ Spud::Core.admin_applications.each do |application|
60
+ permission = @user.spud_admin_permissions.select {|perm| perm.name == application[:name]}
61
+ if permission.blank?
62
+ @user.spud_admin_permissions.new(:name => application[:name],:access => @user.super_admin)
63
+ end
64
+ end
65
+ respond_to do |format|
66
+ format.js { render :partial => "edit"}
67
+ format.html { render }
68
+ end
69
+ end
70
+
71
+ def update
72
+ @user.attributes = params[:spud_user]
73
+ @user.super_admin = params[:spud_user][:super_admin]
74
+
75
+ if @user.save
76
+ flash[:notice] = "User saved successfully."
77
+ redirect_to spud_admin_users_url()
78
+ else
79
+ flash[:error] = "There was an error while saving the user."
80
+ render :action => "edit"
81
+ end
82
+ end
83
+
84
+ def destroy
85
+ status = 500
86
+ if @user.destroy
87
+ status = 200
88
+ flash[:notice] = "User removed."
89
+ else
90
+ flash[:error] = "There was an error removing the user"
91
+ end
92
+
93
+ respond_to do |format|
94
+ format.js { render :text => nil,:status => status }
95
+ format.html {redirect_to spud_admin_users_url()}
96
+ end
97
+
98
+ end
99
+
100
+ private
101
+
102
+ def load_user
103
+ @user = SpudUser.where(:id => params[:id]).first
104
+ if @user.blank?
105
+ flash[:error] = "User not found!"
106
+ redirect_to spud_admin_users_url() and return false
107
+ end
108
+ return true
109
+ end
110
+
111
+ end
@@ -0,0 +1,48 @@
1
+ class Spud::ApplicationController < ActionController::Base
2
+ unloadable
3
+ protect_from_forgery
4
+ helper_method :current_user_session, :current_user
5
+
6
+
7
+ private
8
+ def current_user_session
9
+ return @current_user_session if defined?(@current_user_session)
10
+ @current_user_session = SpudUserSession.find
11
+ end
12
+
13
+ def current_user
14
+ return @current_user if defined?(@current_user)
15
+ @current_user = current_user_session && current_user_session.spud_user
16
+ end
17
+ def current_user_permissions
18
+ return @current_user_permissions if defined?(@current_user_permissions)
19
+ @current_user_permissions = current_user.spud_admin_permissions.where(:access => true).all
20
+ end
21
+ def require_user
22
+ unless current_user
23
+ store_location
24
+ flash[:notice] = "You must be logged in to access this page"
25
+ redirect_to new_spud_user_session_url
26
+ return false
27
+ end
28
+ return true
29
+ end
30
+
31
+ def require_no_user
32
+ if current_user
33
+ store_location
34
+ flash[:notice] = "You must be logged out to access this page"
35
+ redirect_to root_url
36
+ return false
37
+ end
38
+ end
39
+
40
+ def store_location
41
+ session[:return_to] = request.url
42
+ end
43
+
44
+ def redirect_back_or_default(default)
45
+ redirect_to(session[:return_to] || default)
46
+ session[:return_to] = nil
47
+ end
48
+ end
@@ -0,0 +1,22 @@
1
+ class Spud::SetupController < Spud::ApplicationController
2
+ layout 'spud/setup'
3
+ def index
4
+ @page_thumbnail = "spud/admin/users_thumb.png"
5
+ @page_name = "First Time Setup"
6
+ if SpudUser.count != 0
7
+ flash[:error] = "Access Denied! This wizard may only be executed when the database is empty."
8
+ redirect_to root_url() and return
9
+ end
10
+
11
+ if request.post?
12
+ @user = SpudUser.new(:login => params[:login],:email => params[:email],:password => params[:password],:password_confirmation => params[:password_confirmation])
13
+ @user.super_admin = true
14
+ if @user.save
15
+ redirect_to spud_admin_root_url() and return
16
+ end
17
+
18
+ flash[:error] = "Error creating administrative account!"
19
+ else
20
+ end
21
+ end
22
+ end