compages 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. data/.project +18 -0
  2. data/README +180 -0
  3. data/Rakefile +10 -0
  4. data/app/controllers/application.rb +4 -0
  5. data/app/controllers/contents_controller.rb +116 -0
  6. data/app/controllers/pages_controller.rb +59 -0
  7. data/app/controllers/render_controller.rb +24 -0
  8. data/app/helpers/application_helper.rb +6 -0
  9. data/app/helpers/contents_helper.rb +5 -0
  10. data/app/helpers/pages_helper.rb +5 -0
  11. data/app/helpers/render_helper.rb +2 -0
  12. data/app/models/content.rb +26 -0
  13. data/app/models/meta_data.rb +3 -0
  14. data/app/models/page.rb +106 -0
  15. data/app/models/page_element.rb +9 -0
  16. data/app/views/contents/_content_preview.rhtml +1 -0
  17. data/app/views/contents/_contents_list.rhtml +3 -0
  18. data/app/views/contents/_show_library.rhtml +60 -0
  19. data/app/views/contents/_write_now.rhtml +42 -0
  20. data/app/views/layouts/pages.rhtml +24 -0
  21. data/app/views/layouts/render.rhtml +11 -0
  22. data/app/views/pages/_change_theme.rhtml +0 -0
  23. data/app/views/pages/_edit_menu.rhtml +62 -0
  24. data/app/views/pages/_page_listed.rhtml +13 -0
  25. data/app/views/pages/_select_theme.rhtml +4 -0
  26. data/app/views/pages/edit.rhtml +35 -0
  27. data/app/views/pages/index.rhtml +45 -0
  28. data/app/views/pages/list.rhtml +41 -0
  29. data/app/views/pages/list_a.rhtml +40 -0
  30. data/app/views/pages/welcome.rhtml +27 -0
  31. data/app/views/render/_blank.rhtml +3 -0
  32. data/app/views/render/show.rhtml +1 -0
  33. data/bin/compages +14 -0
  34. data/config/boot.rb +44 -0
  35. data/config/database.yml.home +35 -0
  36. data/config/environment.rb +53 -0
  37. data/config/environments/development.rb +21 -0
  38. data/config/environments/production.rb +18 -0
  39. data/config/environments/test.rb +19 -0
  40. data/config/routes.rb +32 -0
  41. data/db/Copia di schema.rb +48 -0
  42. data/db/migrate/001_create_pages.rb +12 -0
  43. data/db/migrate/002_create_contents.rb +12 -0
  44. data/db/migrate/003_create_meta_datas.rb +14 -0
  45. data/db/migrate/004_create_page_elements.rb +17 -0
  46. data/db/migrate/005_add_urlnames.rb +15 -0
  47. data/db/migrate/006_add_sessions.rb +15 -0
  48. data/db/schema.mysql.sql +65 -0
  49. data/db/schema.postgresql.sql +65 -0
  50. data/db/schema.rb +49 -0
  51. data/db/schema.sqlite.sql +65 -0
  52. data/db/schema.sqlserver.sql +71 -0
  53. data/db/schema_version +1 -0
  54. data/doc/ER-model/v1.dia +0 -0
  55. data/doc/ER-model/v2.dia +0 -0
  56. data/doc/ER-model/v3.dia +0 -0
  57. data/doc/README_FOR_APP +2 -0
  58. data/doc/esempi/doc-vir/ecds.htm +2362 -0
  59. data/doc/esempi/doc-vir/ecds_files/search.gif +0 -0
  60. data/doc/esempi/doc-vir/ecds_files/upld.gif +0 -0
  61. data/doc/esempi/doc-vir/ecds_files/upld.jpg +0 -0
  62. data/installer/apache13.conf.example.template +33 -0
  63. data/installer/apache20.conf.example.template +40 -0
  64. data/installer/lighttpd.conf.example.template +6 -0
  65. data/installer/rails_installer_defaults.yml +5 -0
  66. data/lib/redcloth.rb +1130 -0
  67. data/lib/render_engine.rb +94 -0
  68. data/lib/tasks/release.rake +46 -0
  69. data/public/.htaccess +41 -0
  70. data/public/404.html +8 -0
  71. data/public/500.html +8 -0
  72. data/public/_index.html +277 -0
  73. data/public/favicon.ico +0 -0
  74. data/public/images/body_bg.gif +0 -0
  75. data/public/images/body_bg_short.gif +0 -0
  76. data/public/images/ie_shadow.png +0 -0
  77. data/public/images/journal_reflex.gif +0 -0
  78. data/public/images/journal_shadow.gif +0 -0
  79. data/public/images/logo_journal_small.bmp +0 -0
  80. data/public/images/logo_journal_small.png +0 -0
  81. data/public/images/page_edit_shadow.png +0 -0
  82. data/public/images/restore_bar.png +0 -0
  83. data/public/images/spinner.gif +0 -0
  84. data/public/javascripts/application.js +23 -0
  85. data/public/javascripts/controls.js +815 -0
  86. data/public/javascripts/dragdrop.js +913 -0
  87. data/public/javascripts/effects.js +958 -0
  88. data/public/javascripts/lowpro.js +307 -0
  89. data/public/javascripts/prototype.js +2006 -0
  90. data/public/robots.txt +1 -0
  91. data/public/stylesheets/compages.css +196 -0
  92. data/public/stylesheets/editing.css +180 -0
  93. data/public/stylesheets/editing_ie_filth.css +36 -0
  94. data/public/themes/Doc_basic/_script.js +342 -0
  95. data/public/themes/Doc_basic/images/Thumbs.db +0 -0
  96. data/public/themes/Doc_basic/images/search.gif +0 -0
  97. data/public/themes/Doc_basic/images/upld.gif +0 -0
  98. data/public/themes/Doc_basic/images/upld.jpg +0 -0
  99. data/public/themes/Doc_basic/index.html +114 -0
  100. data/public/themes/Doc_basic/style.css +1743 -0
  101. data/public/themes/color7boxes/default2.css +42 -0
  102. data/public/themes/color7boxes/index.html +40 -0
  103. data/public/themes/prova/index.html +12 -0
  104. data/public/zDoc/images/search.gif +0 -0
  105. data/public/zDoc/images/upld.gif +0 -0
  106. data/public/zDoc/images/upld.jpg +0 -0
  107. data/public/zDoc/index.html +176 -0
  108. data/public/zDoc/script.js +342 -0
  109. data/public/zDoc/style.css +1741 -0
  110. data/script/about +3 -0
  111. data/script/breakpointer +3 -0
  112. data/script/console +3 -0
  113. data/script/destroy +3 -0
  114. data/script/generate +3 -0
  115. data/script/performance/benchmarker +3 -0
  116. data/script/performance/profiler +3 -0
  117. data/script/plugin +3 -0
  118. data/script/process/reaper +3 -0
  119. data/script/process/spawner +3 -0
  120. data/script/runner +3 -0
  121. data/script/server +3 -0
  122. data/test/fixtures/contents.yml +5 -0
  123. data/test/fixtures/meta_datas.yml +5 -0
  124. data/test/fixtures/page_elements.yml +5 -0
  125. data/test/fixtures/pages.yml +5 -0
  126. data/test/functional/contents_controller_test.rb +18 -0
  127. data/test/functional/pages_controller_test.rb +18 -0
  128. data/test/functional/render_controller_test.rb +18 -0
  129. data/test/test_helper.rb +28 -0
  130. data/test/unit/content_test.rb +10 -0
  131. data/test/unit/meta_data_test.rb +10 -0
  132. data/test/unit/page_element_test.rb +10 -0
  133. data/test/unit/page_test.rb +10 -0
  134. data/tmp/sessions/ruby_sess.0ced4c30e36477ab +0 -0
  135. data/tmp/sessions/ruby_sess.20fbe26671422e70 +0 -0
  136. data/tmp/sessions/ruby_sess.2c72521f3a7e2ba9 +0 -0
  137. data/tmp/sessions/ruby_sess.4107a69d982a2eb7 +0 -0
  138. data/tmp/sessions/ruby_sess.573ded9c7fdd9035 +0 -0
  139. data/tmp/sessions/ruby_sess.5a9767815bb96258 +0 -0
  140. data/tmp/sessions/ruby_sess.85d723b794005388 +0 -0
  141. data/tmp/sessions/ruby_sess.875b3b3e3529afdb +0 -0
  142. data/tmp/sessions/ruby_sess.936766f3a397c88b +0 -0
  143. data/tmp/sessions/ruby_sess.984e2e4c9a2e7891 +0 -0
  144. data/tmp/sessions/ruby_sess.a1faebd7448bc45d +0 -0
  145. data/tmp/sessions/ruby_sess.a415768c7635bc15 +0 -0
  146. data/tmp/sessions/ruby_sess.b2dadcbe6c1b0add +0 -0
  147. data/tmp/sessions/ruby_sess.ca9100beb103a428 +0 -0
  148. data/tmp/sessions/ruby_sess.d649c800a046efde +0 -0
  149. data/tmp/sessions/ruby_sess.db73bbfafd5a537c +0 -0
  150. data/tmp/sessions/ruby_sess.e32487b847524df1 +0 -0
  151. data/tmp/sessions/ruby_sess.f4e45d67828cc437 +0 -0
  152. data/tmp/sessions/ruby_sess.f5a3f064f2f7a26f +0 -0
  153. data/tmp/sessions/ruby_sess.ff0c47b35f238cda +0 -0
  154. data/vendor/plugins/acts_as_urlnameable.tar.gz +0 -0
  155. data/vendor/plugins/acts_as_urlnameable/LICENSE +19 -0
  156. data/vendor/plugins/acts_as_urlnameable/README +193 -0
  157. data/vendor/plugins/acts_as_urlnameable/Rakefile +25 -0
  158. data/vendor/plugins/acts_as_urlnameable/TODO +5 -0
  159. data/vendor/plugins/acts_as_urlnameable/db/00x_add_urlnames_table.rb +15 -0
  160. data/vendor/plugins/acts_as_urlnameable/db/urlnames_table.sql +7 -0
  161. data/vendor/plugins/acts_as_urlnameable/doc/classes/ActiveRecord/Acts/Urlnameable/ClassMethods.html +167 -0
  162. data/vendor/plugins/acts_as_urlnameable/doc/classes/ActiveRecord/Acts/Urlnameable/InstanceMethods.html +213 -0
  163. data/vendor/plugins/acts_as_urlnameable/doc/classes/ActiveRecord/Acts/Urlnameable/SingletonMethods.html +189 -0
  164. data/vendor/plugins/acts_as_urlnameable/doc/created.rid +1 -0
  165. data/vendor/plugins/acts_as_urlnameable/doc/files/LICENSE.html +129 -0
  166. data/vendor/plugins/acts_as_urlnameable/doc/files/README.html +333 -0
  167. data/vendor/plugins/acts_as_urlnameable/doc/files/TODO.html +121 -0
  168. data/vendor/plugins/acts_as_urlnameable/doc/files/lib/acts_as_urlnameable_rb.html +101 -0
  169. data/vendor/plugins/acts_as_urlnameable/doc/fr_class_index.html +29 -0
  170. data/vendor/plugins/acts_as_urlnameable/doc/fr_file_index.html +30 -0
  171. data/vendor/plugins/acts_as_urlnameable/doc/fr_method_index.html +34 -0
  172. data/vendor/plugins/acts_as_urlnameable/doc/index.html +24 -0
  173. data/vendor/plugins/acts_as_urlnameable/doc/rdoc-style.css +208 -0
  174. data/vendor/plugins/acts_as_urlnameable/init.rb +3 -0
  175. data/vendor/plugins/acts_as_urlnameable/lib/acts_as_urlnameable.rb +159 -0
  176. data/vendor/plugins/acts_as_urlnameable/lib/urlname.rb +3 -0
  177. data/vendor/plugins/acts_as_urlnameable/test/acts_as_urlnameable_test.rb +233 -0
  178. data/vendor/plugins/acts_as_urlnameable/test/connection.rb +8 -0
  179. data/vendor/plugins/acts_as_urlnameable/test/fixtures/article.rb +13 -0
  180. data/vendor/plugins/acts_as_urlnameable/test/fixtures/articles.yml +62 -0
  181. data/vendor/plugins/acts_as_urlnameable/test/fixtures/page.rb +14 -0
  182. data/vendor/plugins/acts_as_urlnameable/test/fixtures/pages.yml +35 -0
  183. data/vendor/plugins/acts_as_urlnameable/test/fixtures/people.yml +9 -0
  184. data/vendor/plugins/acts_as_urlnameable/test/fixtures/person.rb +26 -0
  185. data/vendor/plugins/acts_as_urlnameable/test/fixtures/schema.rb +24 -0
  186. data/vendor/plugins/acts_as_urlnameable/test/fixtures/section.rb +5 -0
  187. data/vendor/plugins/acts_as_urlnameable/test/fixtures/sections.yml +9 -0
  188. data/vendor/plugins/acts_as_urlnameable/test/fixtures/urlnames.yml +153 -0
  189. data/vendor/plugins/acts_as_urlnameable/test/test_helper.rb +42 -0
  190. data/vendor/plugins/gems/README +30 -0
  191. data/vendor/plugins/gems/init.rb +9 -0
  192. data/vendor/plugins/gems/tasks/gems_tasks.rake +32 -0
  193. data/vendor/plugins/unobtrusive_javascript/CHANGELOG +72 -0
  194. data/vendor/plugins/unobtrusive_javascript/README +73 -0
  195. data/vendor/plugins/unobtrusive_javascript/Rakefile +33 -0
  196. data/vendor/plugins/unobtrusive_javascript/about.yml +6 -0
  197. data/vendor/plugins/unobtrusive_javascript/assets/javascripts/lowpro.js +307 -0
  198. data/vendor/plugins/unobtrusive_javascript/init.rb +21 -0
  199. data/vendor/plugins/unobtrusive_javascript/install.rb +1 -0
  200. data/vendor/plugins/unobtrusive_javascript/lib/actionview_helpers_patches.rb +17 -0
  201. data/vendor/plugins/unobtrusive_javascript/lib/asset_tag_helper_patches.rb +33 -0
  202. data/vendor/plugins/unobtrusive_javascript/lib/behaviour_caching.rb +70 -0
  203. data/vendor/plugins/unobtrusive_javascript/lib/controllers/unobtrusive_javascript_controller.rb +52 -0
  204. data/vendor/plugins/unobtrusive_javascript/lib/prototype_helper_patches.rb +72 -0
  205. data/vendor/plugins/unobtrusive_javascript/lib/scriptaculous_helper_patches.rb +62 -0
  206. data/vendor/plugins/unobtrusive_javascript/lib/tag_helper_patches.rb +37 -0
  207. data/vendor/plugins/unobtrusive_javascript/lib/ujs.rb +32 -0
  208. data/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_helper.rb +62 -0
  209. data/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_script.rb +54 -0
  210. data/vendor/plugins/unobtrusive_javascript/lib/ujs/behaviour_script_converter.rb +23 -0
  211. data/vendor/plugins/unobtrusive_javascript/lib/ujs/controller_methods.rb +55 -0
  212. data/vendor/plugins/unobtrusive_javascript/lib/ujs/helpers.rb +152 -0
  213. data/vendor/plugins/unobtrusive_javascript/lib/ujs/javascript_proxies.rb +57 -0
  214. data/vendor/plugins/unobtrusive_javascript/tasks/unobtrusive_javascript_tasks.rake +15 -0
  215. data/vendor/plugins/unobtrusive_javascript/test/asset_tag_helper_patches_test.rb +32 -0
  216. data/vendor/plugins/unobtrusive_javascript/test/behaviour_helper_test.rb +180 -0
  217. data/vendor/plugins/unobtrusive_javascript/test/behaviour_script_converter_test.rb +72 -0
  218. data/vendor/plugins/unobtrusive_javascript/test/behaviour_script_test.rb +98 -0
  219. data/vendor/plugins/unobtrusive_javascript/test/config/environment.rb +8 -0
  220. data/vendor/plugins/unobtrusive_javascript/test/config/routes.rb +4 -0
  221. data/vendor/plugins/unobtrusive_javascript/test/config/schema.rb +3 -0
  222. data/vendor/plugins/unobtrusive_javascript/test/controller_methods_test.rb +48 -0
  223. data/vendor/plugins/unobtrusive_javascript/test/helpers_test.rb +186 -0
  224. data/vendor/plugins/unobtrusive_javascript/test/javascript_proxies_test.rb +3 -0
  225. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/boot.rb +26 -0
  226. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/action_controller.rb +11 -0
  227. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/action_mailer.rb +4 -0
  228. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/active_record.rb +27 -0
  229. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/gem/rails.rb +31 -0
  230. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/ptk.rb +148 -0
  231. data/vendor/plugins/unobtrusive_javascript/test/lib/ptk/suite/difference.rb +23 -0
  232. data/vendor/plugins/unobtrusive_javascript/test/lib/stubs/controller_stub.rb +10 -0
  233. data/vendor/plugins/unobtrusive_javascript/test/ptk_helper.rb +29 -0
  234. data/vendor/plugins/unobtrusive_javascript/test/tag_helper_patches_test.rb +59 -0
  235. data/vendor/plugins/unobtrusive_javascript/test/test_helper.rb +25 -0
  236. data/vendor/plugins/unobtrusive_javascript/test/unobtrusive_javascript_controller_test.rb +95 -0
  237. data/vendor/plugins/unobtrusive_javascript/uninstall.rb +1 -0
  238. data/vendor/redcloth/bin/redcloth +3 -0
  239. data/vendor/redcloth/doc/CHANGELOG +160 -0
  240. data/vendor/redcloth/doc/COPYING +25 -0
  241. data/vendor/redcloth/doc/README +106 -0
  242. data/vendor/redcloth/doc/REFERENCE +216 -0
  243. data/vendor/redcloth/doc/make.rb +359 -0
  244. data/vendor/redcloth/lib/redcloth.rb +1130 -0
  245. data/vendor/redcloth/run-tests.rb +28 -0
  246. data/vendor/redcloth/setup.rb +1376 -0
  247. data/vendor/redcloth/tests/code.yml +105 -0
  248. data/vendor/redcloth/tests/hard_breaks.yml +26 -0
  249. data/vendor/redcloth/tests/images.yml +171 -0
  250. data/vendor/redcloth/tests/instiki.yml +39 -0
  251. data/vendor/redcloth/tests/links.yml +155 -0
  252. data/vendor/redcloth/tests/lists.yml +77 -0
  253. data/vendor/redcloth/tests/markdown.yml +218 -0
  254. data/vendor/redcloth/tests/poignant.yml +64 -0
  255. data/vendor/redcloth/tests/table.yml +198 -0
  256. data/vendor/redcloth/tests/textism.yml +406 -0
  257. metadata +432 -0
@@ -0,0 +1,3 @@
1
+ class MetaData < ActiveRecord::Base
2
+ belongs_to :content
3
+ end
@@ -0,0 +1,106 @@
1
+ class Page < ActiveRecord::Base
2
+ attr_reader :page_html
3
+ has_many :page_elements, :include=>:content, :order=>"area_name, position ASC" do
4
+ def of_area (area_name)
5
+ find_all "area_name = '#{area_name}'"
6
+ end
7
+ end
8
+ # returns an array of strings with all the area_names associated to the elements of this page
9
+ has_many :areas, :class_name=>"PageElement", :select=>"area_name", :group=>"area_name"
10
+ has_many :contents, :through => :page_elements
11
+ acts_as_urlnameable :title, :overwrite=>true, :message=>'is unavailable.', :validate=>:class
12
+
13
+
14
+ THEMES_BASE_PATH = RAILS_ROOT+"/public/themes/"
15
+
16
+ def render( mode = :show )
17
+ @page_html = theme_body
18
+ fill_areas do |area_name|
19
+ area_html = ""
20
+ area_html = %(<div class='compages_area' id='area_#{ area_name }'>) if mode == :edit
21
+ for page_element in page_elements.of_area area_name
22
+ unless page_element.content.nil?
23
+ area_html << %(<div class='compages_element' id='element_#{ page_element.id }'>) if mode == :edit
24
+ area_html << page_element.content.body_to_html
25
+ area_html << %(</div>) if mode == :edit
26
+ else
27
+ page_element.destroy
28
+ end
29
+ end
30
+ area_html << %(</div>) if mode == :edit
31
+ area_html
32
+ end
33
+ fill_theme_vars
34
+ end
35
+
36
+ # renders the whole page with its theme and contents
37
+ def to_html
38
+ @page_html = theme_body
39
+ # subsitute areas definition (like %%area:my_area_name%%)
40
+ # with the html for the area elements
41
+ @page_html.gsub!( %r{%%area:([a-z_]+)%%} ) do ||
42
+ area_name, area_html = $1, ""
43
+ for page_element in page_elements.of_area area_name
44
+ area_html = page_element.content.body_to_html
45
+ end
46
+ area_html
47
+ end
48
+ fill_theme_vars
49
+ end
50
+
51
+ #
52
+ def fill_areas
53
+ # subsitute areas definition (like %%area:myareaname%%)
54
+ # with the html for the area elements
55
+ @page_html.gsub!( %r{%%area:([a-z_]+)%%} ) do ||
56
+ area_name = $1
57
+ yield area_name
58
+ end
59
+ return @page_html
60
+ end
61
+
62
+
63
+ def fill_theme_vars
64
+ # subsitutes some other %%-style "variables" (see above)
65
+ @page_html.gsub!( %r{%%([a-z_]+):([a-z_]*)%%} ) do ||
66
+ case $1
67
+ when "page"
68
+ title if $2 == "title"
69
+ when "theme"
70
+ THEMES_BASE_PATH[(RAILS_ROOT+"/public").length..-1] + theme_name if $2 == "path"
71
+ end
72
+ end
73
+ return @page_html
74
+ end
75
+
76
+ # returns the theme main file code
77
+ def Page.theme_body (theme_name)
78
+ File.open( THEMES_BASE_PATH + theme_name + "/index.html" ).read
79
+ end
80
+
81
+ # returns the theme main file code
82
+ def theme_body
83
+ Page.theme_body( theme_name )
84
+ end
85
+
86
+ # returns an array with all the available theme names
87
+ def Page.available_themes
88
+ Dir.entries(THEMES_BASE_PATH).collect {|f| f.gsub("_", "_") unless (f =~ /\..*/ ) }.compact
89
+ end
90
+
91
+ def Page.theme_areas (theme_name)
92
+ areas_colection = []
93
+ (Page.theme_body theme_name).gsub %r{%%area:([a-z_]+)%%} do |match|
94
+ areas_colection << $1
95
+ end
96
+ return areas_colection
97
+ end
98
+ def theme_areas
99
+ Page.theme_areas( theme_name )
100
+ end
101
+
102
+ def area_names #of the page
103
+ theme_areas #areas.collect {|area| area.area_name }.compact
104
+ end
105
+
106
+ end
@@ -0,0 +1,9 @@
1
+ class PageElement < ActiveRecord::Base
2
+ belongs_to :page
3
+ belongs_to :content
4
+
5
+ # acts_as_list :scope => "area_name = '#{area_name}'"
6
+
7
+
8
+
9
+ end
@@ -0,0 +1 @@
1
+ <%= @content.body_to_html %>
@@ -0,0 +1,3 @@
1
+ <% for content in @contents %>
2
+ <%= %(<option value="#{content.id}"> #{truncate strip_tags content.body} </option>) %>
3
+ <% end %>
@@ -0,0 +1,60 @@
1
+ <!--table id="library_widget" class="widget bar_content" -->
2
+ <div id="library_widget" class="widget bar_content" style="width:90%;margin:auto;background-color:#fff;">
3
+ <!--tbody><tr>
4
+ <td-->
5
+ <div class="widget_instructions" style="width:30%; float:left;">
6
+ <h2>About library</h2>
7
+ <p></p>
8
+ </div>
9
+ <!--/td>
10
+ <td-->
11
+ <div id="library" style="width:30%; float:left;">
12
+ <div id="contents_list">
13
+ <label for="searchtext">Search Library:</label>
14
+ <%= text_field_tag :searchtext %><br/>
15
+ <%= image_tag "spinner.gif", :id=>"spinner", :style=>"display:none;" %>
16
+ <span id="search_comment"></span><br/>
17
+ <select name="content[id]" id="select_content" style="overflow:auto;width:20em;" size="10">
18
+ <%= render :partial=>"contents_list" %>
19
+ </select><br/>
20
+ <small id="content_actions" style="display:none">Selected content:
21
+ <%= link_to_remote "delete",
22
+ { :url=>{:controller=>"contents", :action=>"delete_content", :id=>@page.id },
23
+ :submit=>"contents_list",
24
+ :confirm=>"This deletion will affect all the pages!\n\nAre you sure?",
25
+ :loading=>( remote_function :url => { :action => :live_search },
26
+ :with => "('searchtext='+$('searchtext').value)"),
27
+ :loading => "Element.show('spinner')",
28
+ :complete => "Element.hide('spinner')"
29
+ },
30
+ { :style=>"color:red" }%>
31
+ <%= link_to "edit", "" %></small>&nbsp;
32
+ </div>
33
+
34
+ <%= observe_field(:searchtext,
35
+ :frequency => 0.5,
36
+ :with => "('searchtext='+$('searchtext').value)",
37
+ :loading => "Element.show('spinner')",
38
+ :complete => "Element.hide('spinner')",
39
+ :url => { :action => :live_search }) %>
40
+ <%= observe_field(:select_content,
41
+ :on => "select",
42
+ :frequency => 0.1,
43
+ :update => "content_preview",
44
+ :with => "select_content",
45
+ :loading => "Element.show('spinner')",
46
+ :complete => "Element.hide('spinner');if ($('select_content').value != '') {Element.show('content_actions')};",
47
+ :url => { :action => :content_preview }) %>
48
+
49
+ <h2><%= link_to_remote "add to the page!", :url=>{:controller=>"contents", :action=>"create_page_element", :id=>@page.id }, :submit=>"contents_list" %></h2>
50
+ </div>
51
+ <!--/td>
52
+ <td!-->
53
+ <div id="content_preview" style="width:30%;height:10em; float:left;">
54
+ <i style="color:lightgrey">no content selected for the preview</i>
55
+ </div>
56
+ <!--/td!-->
57
+ <div class="clear"></div>
58
+ <!--/tr>
59
+ </tbody></table!-->
60
+ </div>
@@ -0,0 +1,42 @@
1
+ <table id="write_widget" class="widget bar_content" >
2
+ <tbody><tr>
3
+ <td>
4
+ <div id="textile_instructions" class="widget_instructions" style="display:none;">
5
+ <h2>What is Textile?</h2>
6
+ <p>Textile is a simple markup language.</p>
7
+ <h2>textile &rarr; formatted text</h2>
8
+ <p>_a phrase_ &rarr; <span style="font-style:italic;">a phrase</span> (italic)</p>
9
+ <p>*a phrase* &rarr; <span style="font-weight:bold;">a phrase</span> (bold)</p>
10
+ <p>_*a phrase*_ &rarr; <span style="font-weight:bold;font-style:italic;">a phrase</span> (italic+bold)</p>
11
+ <p>"Google":http://google.com &rarr; <a href="http://google.com" style="text-decoration:underline;color:blue;padding:0;margin:0;">Google</a> (links)</p>
12
+
13
+ <p>For more on Textile's language, hop over to <a href="http://hobix.com/textile/" target="_blank">A Textile Reference</a>.</p>
14
+ </div>
15
+ </td>
16
+ <td>
17
+ <div id="write_area">
18
+ <%= form_remote_tag :url=>{:controller=>"contents", :action=>"create_page_element", :id=>@page.id}, :html=>{:id=>"write_content_form"}%>
19
+ <h1>Write here... </h1><br/><%= text_area :content, :body %>
20
+ <%= hidden_field :content, :content_type, :value=>"text/textile"%>
21
+ <br/><%#= submit_to_remote "Save", "" %>
22
+ <%= end_form_tag %>
23
+ <h2><%= link_to_remote "Save!", :url=>{:controller=>"contents", :action=>"create_page_element", :id=>@page.id }, :submit=>"write_content_form" %></h2>
24
+ <br/>You can use <em>textile</em> here. <small><%= link_to_function "(what is textile?)", visual_effect( :toggle_slide, "textile_instructions" )%></small>
25
+
26
+ </div>
27
+ </td>
28
+ <td>
29
+ <div id="content_metadatas" style="display:none;">
30
+ <% remote_form_for :meta_data, :url=>{:controller=>"contents", :action=>"add_metadata"} do |f| %>
31
+ <h1>Add Meta-datas</h1>
32
+ Key: <%= f.text_field :key, :disabled=>true %><br/>
33
+ Value: <%= f.text_field :value, :disabled=>true %>
34
+ <%= f.hidden_field :content_id, :value=>@content%>
35
+ <% end %>
36
+ </div>
37
+ </td>
38
+ <div class="clear"/>&nbsp;</div>
39
+ </tr>
40
+ </tbody></table>
41
+
42
+
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>
3
+ <head>
4
+ <title>Pages: <%= controller.action_name %></title>
5
+ <%= stylesheet_link_tag 'compages' %>
6
+ <%= javascript_include_tag :defaults, :unobtrusive %>
7
+ </head>
8
+ <body>
9
+
10
+ <p style="color: green" id="flash_notice" class="flash notice"><%= flash[:notice] %></p>
11
+ <p style="color: red" id="flash_error" class="flash error"><%= flash[:error] %></p>
12
+
13
+ <div id="wrapper">
14
+ <div id="journal-page" style="">
15
+ <%= @content_for_layout %>
16
+ <div class="clear"/>&nbsp;</div>
17
+ </div>
18
+ <div id="journal-shadow">
19
+ Copyright &copy; 2006 Elia Schito
20
+ </div>
21
+ </div>
22
+ <%= javascript_tag( visual_effect :blind_down, 'journal-page', :duration => 0.5 ) %>
23
+ </body>
24
+ </html>
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <head>
3
+ <title><%= @page.title %></title>
4
+ </head>
5
+ <body>
6
+
7
+
8
+ <%= @content_for_layout %>
9
+
10
+ </body>
11
+ </html>
File without changes
@@ -0,0 +1,62 @@
1
+
2
+
3
+ <script type="text/javascript">
4
+
5
+ function goToMenu(menuName){
6
+ <%= update_page do |page|
7
+ page.select("#options_bar .menu").each {|menu| menu.hide }
8
+ page << "$(menuName).show();return false;"
9
+ end %>
10
+ }
11
+ Position.includeScrollOffsets = true;
12
+
13
+ </script>
14
+
15
+
16
+ <div id="compages">
17
+ <% apply_behaviour "#restore_bar", make_draggable %>
18
+ <div id="restore_bar">
19
+ <div id="restore_bar_ie">
20
+ <span class="drag_handle">Drag me...</span><br/>
21
+ <input type="hidden" id="selected_element" name="selected_element" value=""/>
22
+ <%= link_to_remote "Remove!", {:url=>{:controller=>"contents", :action=>"remove_page_element", :id=>@page.id }, :submit=>"restore_bar"}, {:id=>"remove_element", :style=>"position:relative;display:none;"} %>
23
+ <br/><%= link_to_function "Show Options", update_page{|p| p['compages_bar_wrapper'].visual_effect :appear, :duration=>0.2; p['restore_bar'].hide;p['hide_bar'].visual_effect :pulsate, :duration=>2 }, :style=>"position:relative;"%>
24
+ </div>
25
+ </div>
26
+
27
+ <div id="compages_bar_wrapper" style="display: none;">
28
+ <div id="options_bar">
29
+ <div id="hide_bar"><%= link_to_function "hide this bar", update_page {|p| p['compages_bar_wrapper'].visual_effect :fade, :duration=>0.2; p['restore_bar'].show } %></div>
30
+
31
+ <ul id="main_menu" class="menu">
32
+ <span class="back"><%= link_to "&laquo; BACK", :action => "list" %></span>
33
+ <li><%= link_to_function "Add some content", "goToMenu('add_content_menu');" %></li>
34
+ <li id="highlight_areas"><%= link_to_function "highlight areas", update_page{|p|
35
+ p.select('.compages_area').each{|area| area.set_style :outline=>"3px solid #ffffaa;" }
36
+ p["highlight_areas"].hide;p["restore_highlighted_areas"].show } %>
37
+ </li>
38
+ <li id="restore_highlighted_areas" style="display:none;background:#ffffaa;">
39
+ <%= link_to_function "highlight areas", update_page{|p|
40
+ p.select('.compages_area').each{|area| area.set_style :outline=>"none;" }
41
+ p["highlight_areas"].show;p["restore_highlighted_areas"].hide } %>
42
+ </li>
43
+
44
+ <li id="change_theme"><%= link_to_remote "Change the page Theme", :url=>{:action=>"select_theme", :id=>@page.id } %></li>
45
+ </ul>
46
+
47
+ <ul id="add_content_menu" class="menu" style="display:none" >
48
+ <li class="back"><%= link_to_function "&laquo; BACK", "goToMenu('main_menu');" %></li>
49
+ <li><%= link_to_remote "Write now!", :url=>{:controller=>"contents", :action=>"write_now", :id=>@page.id } %></li>
50
+ <li><%= link_to_remote "Pick from library...", :url=>{:controller=>"contents", :action=>"show_library", :id=>@page.id } %></li>
51
+ </ul>
52
+
53
+ <ul id="write_content_menu" class="menu" style="display:none" >
54
+ <li class="back"><%= link_to_function "&laquo; Cancel", update_page{|p| p<< "goToMenu('add_content_menu');"; p.replace_html "widgets", ""} %></li>
55
+ </ul>
56
+
57
+ </div>
58
+ <div id="widgets"></div>
59
+ <%= if_ie_tag %{<div id="ie_shadow">&nbsp;</div>} %>
60
+ </div>
61
+
62
+ </div>
@@ -0,0 +1,13 @@
1
+ <li class="page_listed" id="page_<%= @page.id %>">
2
+ <span id="page_<%= @page.id %>_edit">&ldquo;</span>
3
+ <span class="title" id="page_<%= @page.id %>_title">
4
+ <%= in_place_editor_field :page, :title, {}, :external_control=>"page_#{@page.id}_edit"%>
5
+ &rdquo;
6
+ </span>
7
+ <br><span class="actions">
8
+ <%= link_to "View online", "/#{@page.urlname}", :target => "_blank"%> |
9
+ <%= link_to 'Edit', :action => 'edit', :id => @page %> |
10
+ <%= link_to_remote 'Delete', :url=>{:action => 'destroy', :id => @page} %>
11
+ </span>
12
+
13
+ </li>
@@ -0,0 +1,4 @@
1
+ <%= form_tag :action=>"save_theme", :id=>@page.id %>
2
+ <%= select :page, :theme_name, Page.available_themes.collect{|name| [ name, name ] }, {:selected=>@page.theme_name}, {:id=>"save_theme"} %>
3
+ <%= submit_tag "change!"%>
4
+ <% end_form_tag %>
@@ -0,0 +1,35 @@
1
+ <% @page_html = @page.render :edit
2
+
3
+ head_content = javascript_include_tag( :defaults, :unobtrusive )<< stylesheet_link_tag( "page_editing" )
4
+ @page_html.gsub! %r{<\/head>}i, head_content<< "\n</head>"
5
+ @page_html.gsub! %r{<body.*?>}i, render( :partial=>"edit_menu" )
6
+
7
+ sortables_code = ""
8
+ for area in @page.area_names
9
+ sortables_code << sortable_element( "area_"<< area,
10
+ :url=>{ :controller=>"contents", :action=>"update_area_elements", :id=>("area_"+area) },
11
+ :dropOnEmpty=>true,
12
+ :tag=>:div,
13
+ :only=>"compages_element",
14
+ :constraint=>false,
15
+ :hoverclass=>"\"dragging\"",
16
+ :containment=>@page.area_names.collect{|name| "area_"<< name})
17
+ end
18
+
19
+ @page_html.gsub! %r{<\/body>}i, import_stylesheet("editing")<< if_ie_tag(import_stylesheet "editing_ie_filth")<< sortables_code<< "</body>"
20
+
21
+
22
+ # i behaviour non stampano stringhe, quindi non c'� bisogno di inserirli nella pagina
23
+ apply_behaviour( ".compages_element:click" ,
24
+ update_page{|p|
25
+ p.select('.compages_element').each{|e| e.set_style(:border=>"none")}
26
+ p<< 'this.setStyle({"border": "2px dotted black !important;"});'
27
+ p<< '$("selected_element").value=this.id'
28
+ p['remove_element'].show
29
+ # p.delay 10.seconds do |page|
30
+ # p.select('.compages_element').each{|e| e.set_style(:border=>"none")}
31
+ # p['remove_element'].visual_effect :fade
32
+ # end
33
+ }, :prevent_default=>true )
34
+ apply_behaviour( "table" , "this.setStyle('position:relative;');" ) %>
35
+ <%= @page_html %>
@@ -0,0 +1,45 @@
1
+ <h1 class="main_title">COMPAGES</h1>
2
+
3
+ <div class="subtitle">
4
+ a lean content management &amp; publishing system
5
+ </div>
6
+
7
+ <table><tbody><tr>
8
+ <td class="column left_column">
9
+ <h2>What you can do now?</h2>
10
+ <p>
11
+ If you don't know where to start you can click on "Manage pages" to create your &#64257;rst sitepage.
12
+ <ol>
13
+ <li><%= link_to "Manage Pages", :action => 'list' %></li>
14
+ <li><%= link_to "View Your Site", "/", :popup=>true %></li>
15
+ <li><%= link_to "Manage Users", :action => 'list' %></li>
16
+ </ol>
17
+ </p>
18
+ </td>
19
+ <td class="column right_column lborder">
20
+ <h2>What is Compages</h2>
21
+ <p>
22
+ Compages is a web application that hepls you to build and maintain your site,
23
+ <%= image_tag "logo_journal_small", :style=>"float:right;"%>
24
+ usually caled a "Content Management System".
25
+ I hope you'll &#64257;nd in this software an intuitive way to get things done.
26
+ <br /><%= link_to_function "[more...]", visual_effect( :toggle_blind, "more" ), :id=>"more_link" %>
27
+ <div id="more" style="display:none">
28
+ Here are the main features/aims of the project:
29
+ <ul>
30
+ <li>A pleasant user interface</li>
31
+ <li>Drag-n-drop contents around the page</li>
32
+ <li>Change the content appearance with a click</li>
33
+ <li>Nearly NO user management/rights system</li>
34
+ <li>WYSIWYG content writing</li>
35
+ <li>Built using Ruby on Rails (which means that adapting Compges is as easy
36
+ as any other Rails application)</li>
37
+ <li>Minimal templating system <br/><small>(building a template is reduced to
38
+ the insertion of strings like %%area:my_area_name%% where you want to enable dropping of contents)</small></li>
39
+ </ul>
40
+ </div>
41
+ </p>
42
+ <p class="align_right"><span class="signature"> Elia Schito </span><i>(author of Compages)</i></p>
43
+ </td>
44
+ </tr></tbody></table>
45
+
@@ -0,0 +1,41 @@
1
+
2
+ <div class="subtitle"><%= link_to "&laquo; Back", {:controller => "pages"}, :class=>"left"%> COMPAGES - LISTING PAGES </div>
3
+
4
+ <table><tbody><tr>
5
+ <td class="left_column column rborder" style="m in-height:25em;">
6
+ <h2>Pages archive</h2>
7
+ <p><%= link_to_remote "Add a page &raquo;", :url=>{:action=>"create"}%>
8
+ <% unless @pages.empty? %>
9
+ <ol id="pages_listed">
10
+ <% for page in @pages %>
11
+ <% @page = page %>
12
+ <%= render :partial => "page_listed" %>
13
+ <% end %>
14
+ </ol>
15
+ <% else %>
16
+ <p> Currently there are no pages! Start creating the &#64257;rst one by clicking on
17
+ <em>Add a page &gt;</em>.</p>
18
+ <% end %>
19
+ </p>
20
+
21
+ </td>
22
+
23
+ <td class="right_column column">
24
+ <h2> Pages Help<i>!</i> </h2>
25
+ <p>Here are listed all the pages of the site, you can <em>edit the title by clicking
26
+ on it</em>.</p>
27
+ <p>To add a page to your site <em>click on &ldquo;add a page&rdquo;</em>.</p>
28
+ <p>To wipe out a page you can <em>click on &ldquo;delete&rdquo;</em>.</p>
29
+
30
+ <h2>Editing...</h2>
31
+ <p>To &#64257;ll up a page with contents or review contets and layout of a page
32
+ <em>click on &ldquo;edit&rdquo;</em>.</p>
33
+ <p>By clicking on <em>edit</em> you'll be able to:
34
+ <ul>
35
+ <li>add, and/or remove contents from your page</li>
36
+ <li>change the position of the contents within the page</li>
37
+ <li>chose the theme of your page</li>
38
+ </ul>
39
+
40
+ </td>
41
+ </tr></tbody></table>