browsercmsi 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. data/README.markdown +3 -4
  2. data/app/controllers/cms/dynamic_views_controller.rb +3 -2
  3. data/app/controllers/cms/portlet_controller.rb +9 -2
  4. data/app/helpers/cms/form_builder.rb +1 -1
  5. data/app/views/cms/dynamic_views/index.html.erb +5 -0
  6. data/app/views/cms/form_builder/_cms_select_year.html.erb +16 -0
  7. data/app/views/cms/sessions/new.html.erb +1 -1
  8. data/app/views/layouts/_page_toolbar.html.erb +4 -3
  9. data/bin/browsercmsi +1 -1
  10. data/browsercmsi.gemspec +111 -6
  11. data/config/initializers/i18n.rb +2 -0
  12. data/config/locales/bcms/de/behaviors.yml +22 -0
  13. data/config/locales/bcms/de/bootstrap.yml +30 -0
  14. data/config/locales/bcms/de/controllers.yml +76 -0
  15. data/config/locales/bcms/de/helpers.yml +13 -0
  16. data/config/locales/bcms/de/js.yml +7 -0
  17. data/config/locales/bcms/de/models.yml +146 -0
  18. data/config/locales/bcms/de/portlets.yml +10 -0
  19. data/config/locales/bcms/de/views/cms/blocks.yml +68 -0
  20. data/config/locales/bcms/de/views/cms/cache.yml +5 -0
  21. data/config/locales/bcms/de/views/cms/categories.yml +9 -0
  22. data/config/locales/bcms/de/views/cms/connectors.yml +10 -0
  23. data/config/locales/bcms/de/views/cms/content.yml +5 -0
  24. data/config/locales/bcms/de/views/cms/content_types.yml +4 -0
  25. data/config/locales/bcms/de/views/cms/dashboard.yml +18 -0
  26. data/config/locales/bcms/de/views/cms/dynamic_views.yml +18 -0
  27. data/config/locales/bcms/de/views/cms/email_messages.yml +18 -0
  28. data/config/locales/bcms/de/views/cms/forgot_password_mailer.yml +6 -0
  29. data/config/locales/bcms/de/views/cms/form_builder.yml +5 -0
  30. data/config/locales/bcms/de/views/cms/groups.yml +34 -0
  31. data/config/locales/bcms/de/views/cms/links.yml +14 -0
  32. data/config/locales/bcms/de/views/cms/page_routes.yml +28 -0
  33. data/config/locales/bcms/de/views/cms/pages.yml +39 -0
  34. data/config/locales/bcms/de/views/cms/redirects.yml +19 -0
  35. data/config/locales/bcms/de/views/cms/routes.yml +10 -0
  36. data/config/locales/bcms/de/views/cms/section_nodes.yml +15 -0
  37. data/config/locales/bcms/de/views/cms/sections.yml +23 -0
  38. data/config/locales/bcms/de/views/cms/sessions.yml +7 -0
  39. data/config/locales/bcms/de/views/cms/shared.yml +38 -0
  40. data/config/locales/bcms/de/views/cms/tags.yml +5 -0
  41. data/config/locales/bcms/de/views/cms/tasks.yml +8 -0
  42. data/config/locales/bcms/de/views/cms/users.yml +48 -0
  43. data/config/locales/bcms/de/views/layouts/cms/content_library.yml +8 -0
  44. data/config/locales/bcms/de/views/layouts/cms/footer.yml +5 -0
  45. data/config/locales/bcms/de/views/layouts/cms_toolbar.yml +4 -0
  46. data/config/locales/bcms/de/views/layouts/page_toolbar.yml +27 -0
  47. data/config/locales/bcms/de/views/portlets.yml +57 -0
  48. data/config/locales/bcms/en/bootstrap.yml +1 -1
  49. data/config/locales/bcms/en/models.yml +1 -1
  50. data/config/locales/bcms/en/views/cms/blocks.yml +1 -1
  51. data/config/locales/bcms/en/views/cms/groups.yml +1 -1
  52. data/config/locales/bcms/en/views/layouts/page_toolbar.yml +5 -1
  53. data/config/locales/bcms/en/views/portlets.yml +1 -1
  54. data/config/locales/bcms/es/models.yml +1 -1
  55. data/config/locales/bcms/es/views/cms/sections.yml +1 -1
  56. data/config/locales/bcms/es/views/cms/sessions.yml +1 -1
  57. data/config/locales/bcms/es/views/layouts/page_toolbar.yml +6 -2
  58. data/config/locales/bcms/fr/behaviors.yml +21 -0
  59. data/config/locales/bcms/fr/bootstrap.yml +30 -0
  60. data/config/locales/bcms/fr/controllers.yml +76 -0
  61. data/config/locales/bcms/fr/helpers.yml +12 -0
  62. data/config/locales/bcms/fr/js.yml +7 -0
  63. data/config/locales/bcms/fr/models.yml +146 -0
  64. data/config/locales/bcms/fr/portlets.yml +9 -0
  65. data/config/locales/bcms/fr/views/cms/blocks.yml +67 -0
  66. data/config/locales/bcms/fr/views/cms/cache.yml +6 -0
  67. data/config/locales/bcms/fr/views/cms/categories.yml +11 -0
  68. data/config/locales/bcms/fr/views/cms/connectors.yml +10 -0
  69. data/config/locales/bcms/fr/views/cms/content.yml +5 -0
  70. data/config/locales/bcms/fr/views/cms/content_types.yml +4 -0
  71. data/config/locales/bcms/fr/views/cms/dashboard.yml +16 -0
  72. data/config/locales/bcms/fr/views/cms/dynamic_views.yml +18 -0
  73. data/config/locales/bcms/fr/views/cms/email_messages.yml +18 -0
  74. data/config/locales/bcms/fr/views/cms/forgot_password_mailer.yml +8 -0
  75. data/config/locales/bcms/fr/views/cms/form_builder.yml +5 -0
  76. data/config/locales/bcms/fr/views/cms/groups.yml +34 -0
  77. data/config/locales/bcms/fr/views/cms/links.yml +14 -0
  78. data/config/locales/bcms/fr/views/cms/page_routes.yml +28 -0
  79. data/config/locales/bcms/fr/views/cms/pages.yml +38 -0
  80. data/config/locales/bcms/fr/views/cms/redirects.yml +18 -0
  81. data/config/locales/bcms/fr/views/cms/routes.yml +9 -0
  82. data/config/locales/bcms/fr/views/cms/section_nodes.yml +15 -0
  83. data/config/locales/bcms/fr/views/cms/sections.yml +22 -0
  84. data/config/locales/bcms/fr/views/cms/sessions.yml +7 -0
  85. data/config/locales/bcms/fr/views/cms/shared.yml +38 -0
  86. data/config/locales/bcms/fr/views/cms/tags.yml +5 -0
  87. data/config/locales/bcms/fr/views/cms/tasks.yml +7 -0
  88. data/config/locales/bcms/fr/views/cms/users.yml +43 -0
  89. data/config/locales/bcms/fr/views/layouts/cms/content_library.yml +7 -0
  90. data/config/locales/bcms/fr/views/layouts/cms/footer.yml +5 -0
  91. data/config/locales/bcms/fr/views/layouts/cms_toolbar.yml +4 -0
  92. data/config/locales/bcms/fr/views/layouts/page_toolbar.yml +26 -0
  93. data/config/locales/bcms/fr/views/portlets.yml +56 -0
  94. data/doc/guides/html/authentication.html +448 -192
  95. data/doc/guides/html/build_it_yourself.html +454 -175
  96. data/doc/guides/html/building_modules.html +453 -245
  97. data/doc/guides/html/building_templates.html +448 -498
  98. data/doc/guides/html/content_blocks.html +450 -470
  99. data/doc/guides/html/customizing_browsercms.html +453 -169
  100. data/doc/guides/html/deployment_guide.html +451 -201
  101. data/doc/guides/html/files/bcmsorg.js +28 -0
  102. data/doc/guides/html/files/clearfix.css +8 -0
  103. data/doc/guides/html/files/cufon.js +7 -0
  104. data/doc/guides/html/files/global.css +190 -0
  105. data/doc/guides/html/files/helvetica.js +91 -0
  106. data/doc/guides/html/files/jquery.js +11 -0
  107. data/doc/guides/html/getting_started.html +454 -213
  108. data/doc/guides/html/index.html +454 -174
  109. data/doc/guides/html/installing_modules.html +454 -186
  110. data/doc/guides/html/portlets.html +451 -232
  111. data/doc/guides/html/user_guide.html +452 -270
  112. data/doc/guides/html/writing_guides.html +454 -161
  113. data/lib/cms/init.rb +2 -1
  114. data/lib/cms/version.rb +2 -2
  115. data/public/images/cms/locales/de/nav_admin.gif +0 -0
  116. data/public/images/cms/locales/de/nav_admin_h.gif +0 -0
  117. data/public/images/cms/locales/de/nav_admin_on.gif +0 -0
  118. data/public/images/cms/locales/de/nav_content_library.gif +0 -0
  119. data/public/images/cms/locales/de/nav_content_library_h.gif +0 -0
  120. data/public/images/cms/locales/de/nav_content_library_on.gif +0 -0
  121. data/public/images/cms/locales/de/nav_dash.gif +0 -0
  122. data/public/images/cms/locales/de/nav_dash_h.gif +0 -0
  123. data/public/images/cms/locales/de/nav_dash_on.gif +0 -0
  124. data/public/images/cms/locales/de/nav_sitemap.gif +0 -0
  125. data/public/images/cms/locales/de/nav_sitemap_h.gif +0 -0
  126. data/public/images/cms/locales/de/nav_sitemap_on.gif +0 -0
  127. data/public/images/cms/locales/fr/nav_admin.gif +0 -0
  128. data/public/images/cms/locales/fr/nav_admin_h.gif +0 -0
  129. data/public/images/cms/locales/fr/nav_admin_on.gif +0 -0
  130. data/public/images/cms/locales/fr/nav_content_library.gif +0 -0
  131. data/public/images/cms/locales/fr/nav_content_library_h.gif +0 -0
  132. data/public/images/cms/locales/fr/nav_content_library_on.gif +0 -0
  133. data/public/images/cms/locales/fr/nav_dash.gif +0 -0
  134. data/public/images/cms/locales/fr/nav_dash_h.gif +0 -0
  135. data/public/images/cms/locales/fr/nav_dash_on.gif +0 -0
  136. data/public/images/cms/locales/fr/nav_sitemap.gif +0 -0
  137. data/public/images/cms/locales/fr/nav_sitemap_h.gif +0 -0
  138. data/public/images/cms/locales/fr/nav_sitemap_on.gif +0 -0
  139. data/rails/init.rb +2 -2
  140. data/templates/blank.rb +1 -1
  141. data/templates/demo.rb +1 -1
  142. data/templates/module.rb +1 -1
  143. data/test/functional/cms/dynamic_views_controller_test.rb +26 -2
  144. metadata +187 -4
@@ -1,238 +1,457 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
- <title>Portlets Guide</title>
6
- <link rel="stylesheet" type="text/css" href="files/stylesheets/syntax.css" />
7
- <script type="text/javascript" src="files/javascripts/code_highlighter.js"></script>
8
- <script type="text/javascript" src="files/javascripts/highlighters.js"></script>
9
- <style type="text/css">
10
- body {
11
- background: #FFFFFF url(images/bg.png) repeat-x scroll 0 0;
12
- font-family: "Trebuchet MS", Helvetica, Verdana, Arial, sans-serif;
13
- margin: 0;
14
- padding: 0;
15
- }
16
-
17
- #page {
18
- margin: 0 auto;
19
- text-align: left;
20
- width: 1000px;
21
- }
22
-
23
- #header {
24
- height: 110px;
25
- }
26
-
27
- div.top_cap {
28
- background: transparent url(images/top_cap.png) no-repeat scroll 0 0;
29
- height: 10px;
30
- }
31
-
32
- #contentwrap {
33
- background: transparent url(images/dot.png) repeat scroll 0 0;
34
- float: left;
35
- width: 1000px;
36
- }
37
-
38
- div.bottom_cap {
39
- background: transparent url(images/bottom_cap.png) no-repeat scroll 0 0;
40
- height: 9px;
41
- }
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html class="cufon-active cufon-ready" xml:lang="en"
3
+ xmlns="http://www.w3.org/1999/xhtml" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
+ <meta name="keywords" content="">
7
+ <meta name="description" content="">
8
+ <link href="files/clearfix.css" media="screen,projection" rel="stylesheet" type="text/css">
9
+ <link href="files/global.css" media="screen,projection" rel="stylesheet" type="text/css">
10
+ <script src="files/jquery.js" type="text/javascript"></script>
11
+ <script src="files/cufon.js" type="text/javascript"></script>
12
+ <style type="text/css">cufon {
13
+ text-indent: 0 !important;
14
+ }
42
15
 
43
- div.top_cap_content {
44
- background: transparent url(images/top_cap_content.png) no-repeat scroll 0 0;
45
- height: 5px;
46
- }
47
-
48
- #content {
49
- background-color: #FFFFFF;
50
- margin: 0 5px;
51
- padding: 0 10px;
52
- }
53
-
54
- div.title {
55
- padding: 20px;
56
- }
57
-
58
- div.title h1 {
59
- border-bottom: 3px solid #505358;
60
- color: #FFFFFF;
61
- font-size: 24pt;
62
- font-weight: normal;
63
- line-height: 1;
64
- margin: 0 0 10px;
65
- padding-bottom: 10px;
66
- }
67
-
68
- td.sidebar {
69
- font-size: 8pt;
70
- width: 165px;
71
- padding: 5px;
72
- }
73
-
74
- td.sidebar ol {
75
- margin-left: 20px;
76
- padding: 0;
77
- line-height: 1.5;
78
- }
79
-
80
- td.sidebar ol li {
81
- margin: 0;
82
- padding: 0;
83
- }
84
-
85
- td.sidebar ol li ul {
86
- list-style-type: none;
87
- padding-left: 10px;
88
- }
89
-
90
- td.guides {
91
- font-size: 10pt;
92
- width: 800px;
93
- padding: 10px;
94
- }
95
-
96
- .code_container {
97
- padding: 10px;
98
- background: #eee;
99
- border: 1px solid #ccc;
100
- overflow: auto;
101
- width: 760px;
102
- }
103
-
104
- pre, code {
105
- overflow: auto;
106
- white-space:pre;
107
- }
108
- .note {
109
- -moz-background-clip:border;
110
- -moz-background-inline-policy:continuous;
111
- -moz-background-origin:padding;
112
- background:#FFF9D8 url(../images/tab_note.gif) no-repeat scroll left top;
113
- border:medium none;
114
- margin:0.25em 0 1.5em;
115
- padding:1em 1em 0.25em 48px;
116
- }
117
- </style>
118
- </head>
119
- <body>
120
- <div id="page">
121
- <div id="header">
122
- <a href="index.html"><img style="border:0px" src="images/browsercms_logo.png" alt="BrowserCMS"/></a>
123
- </div>
124
- <div id="main">
125
- <div class="top_cap"></div>
126
- <div id="contentwrap">
127
- <div class="title">
128
- <h1>Portlets Guide</h1>
129
- </div>
130
- <div class="top_cap_content"></div>
131
- <div id="content">
132
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
133
- <tr>
134
- <td class="sidebar" valign="top">
135
- <div id="subCol">
136
- <h3 class="chapter"><img src="images/chapters_icon.gif" alt="" />Chapters</h3>
137
- <ol class="chapters">
138
- <li><a href="#creating-a-portlet">Creating A Portlet</a><ul><li><a href="#allowing-template-editing-via-the-ui">Allowing template editing via the UI</a></li><li><a href="#default-template-handlers">Default Template Handlers</a></li><li><a href="#alternative-handlers-for-non-editable-templates">Alternative handlers for non-editable templates</a></li><li><a href="#using-haml-templates">Using <span class="caps">HAML</span> templates</a></li></ul></li></ol></div>
139
- </td>
140
- <td class="guides">
141
- <h2>Portlets Guide</h2>
142
- <p>This guide covers how to use the Portlets extend the functionality of your BrowserCMS site. The target audience for this guide is developers who are familiar with Rails. You should also read the <a href="user_guide.html">Building a Site with BrowserCMS</a> guide first as well, so you know how to create pages and put content on pages. This guide will cover:</p>
143
- <ul>
144
- <li>How to create custom portlets</li>
145
- <li>Allowing portlets views to be editable via the UI.</li>
16
+ @media screen, projection {
17
+ cufon {
18
+ display: inline !important;
19
+ display: inline-block !important;
20
+ position: relative !important;
21
+ vertical-align: middle !important;
22
+ font-size: 1px !important;
23
+ line-height: 1px !important;
24
+ }
25
+
26
+ cufon cufontext {
27
+ display: -moz-inline-box !important;
28
+ display: inline-block !important;
29
+ width: 0 !important;
30
+ height: 0 !important;
31
+ overflow: hidden !important;
32
+ text-indent: -10000in !important;
33
+ }
34
+
35
+ cufon canvas {
36
+ position: relative !important;
37
+ }
38
+ }
39
+
40
+ @media print {
41
+ cufon {
42
+ padding: 0 !important;
43
+ }
44
+
45
+ cufon canvas {
46
+ display: none !important;
47
+ }
48
+ }</style>
49
+ <script src="files/helvetica.js" type="text/javascript"></script>
50
+ <script src="files/bcmsorg.js" type="text/javascript"></script>
51
+ <title>Table of Contents</title>
52
+ </head>
53
+ <body>
54
+
55
+ <div id="container">
56
+ <div id="header">
57
+ <h1 id="logo"><a href="http://www.staging.browsercms.org/"
58
+ title="Return to Home Page">Table of Contents</a></h1>
59
+
60
+ <div id="topnav">
61
+ <ul>
62
+ <li><a href="/">Home</a></li>
63
+ <li><a href="/demo">Demo</a></li>
64
+ <li><a href="/documentation" class="active">Documentation</a></li>
65
+ <li><a href="/extending">Extending</a></li>
66
+ <li><a href="/support">Support</a></li>
67
+ <li><a href="/blog">Blog</a></li>
68
+ <li><a href="/download">Download</a></li>
69
+ </ul>
70
+
71
+ </div>
72
+ </div>
73
+ <div id="content" class="clearfix">
74
+ <div id="subnav">
75
+ <ul class="breadcrumbs">
76
+ <li class="first first-child"><a
77
+ href="http://www.staging.browsercms.org/documentation">Documentation</a></li>
78
+ <li><a href="http://www.staging.browsercms.org/documentation/guides">Guides</a></li>
79
+ <li class="last-child">Table of Contents</li>
80
+ </ul>
81
+ </div>
82
+ <div id="sidenav_doc">
83
+ <h2 class="alt">
84
+ <cufon style="width: 58px; height: 23px;" alt="Table "
85
+ class="cufon cufon-canvas">
86
+ <canvas style="width: 77px; height: 23px;
87
+ top: 1px; left: -1px;" height="23" width="77"></canvas>
88
+ <cufontext>Table</cufontext>
89
+ </cufon>
90
+ <cufon
91
+ style="width: 25px; height: 23px;" alt="of " class="cufon cufon-canvas">
92
+ <canvas
93
+ style="width: 43px; height: 23px; top: 1px; left: -1px;" height="23"
94
+ width="43"></canvas>
95
+ <cufontext>of</cufontext>
96
+ </cufon>
97
+ <cufon
98
+ style="width: 84px; height: 23px;" alt="Contents" class="cufon
99
+ cufon-canvas">
100
+ <canvas style="width: 98px; height: 23px; top: 1px; left:
101
+ -1px;" height="23" width="98"></canvas>
102
+ <cufontext>Contents</cufontext>
103
+ </cufon>
104
+ </h2>
105
+ <div id="menu" class="menu">
106
+ <ul>
107
+ <li id="section_6" class="depth-1 first open first-child">
108
+ <a
109
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/installing-browsercms">Installing
110
+ BrowserCMS</a>
111
+ <ul>
112
+ <li id="page_11" class="depth-2 first last last-child
113
+ first-child">
114
+ <a
115
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/installing-browsercms/things-you-need-first">Things
116
+ you need first</a>
117
+ </li>
118
+ </ul>
119
+ </li>
120
+ <li id="section_7" class="depth-1 last open final">
121
+ <a
122
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms">Trying
123
+ Out BrowserCMS</a>
124
+ <ul>
125
+ <li id="page_14" class="depth-2 first first-child">
126
+ <a
127
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/with-sqlite3">With
128
+ SQLite3</a>
129
+ </li>
130
+ <li id="page_15" class="depth-2">
131
+ <a
132
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/with-mysql">With
133
+ MySQL</a>
134
+ </li>
135
+ <li id="page_16" class="depth-2 last last-child final">
136
+ <a
137
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/using-your-site">Using
138
+ your Site</a>
139
+ </li>
140
+ </ul>
141
+ </li>
142
+ </ul>
143
+ </div>
144
+
145
+ </div>
146
+ <div id="main_doc">
147
+
148
+ <h2>
149
+ <cufon style="width: 73px; height: 23px;" alt="Header "
150
+ class="cufon cufon-canvas">
151
+ <canvas style="width: 92px; height: 23px;
152
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
153
+ <cufontext>Header
154
+ </cufontext>
155
+ </cufon>
156
+ <cufon style="width: 12px; height: 23px;" alt="2"
157
+ class="cufon cufon-canvas">
158
+ <canvas style="width: 25px; height: 23px;
159
+ top: 1px; left: -1px;" height="23" width="25"></canvas>
160
+ <cufontext>2</cufontext>
161
+ </cufon>
162
+ </h2>
163
+ <h2 class="alt">
164
+ <cufon style="width: 73px; height: 23px;" alt="Header "
165
+ class="cufon cufon-canvas">
166
+ <canvas style="width: 92px; height: 23px;
167
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
168
+ <cufontext>Header
169
+ </cufontext>
170
+ </cufon>
171
+ <cufon style="width: 18px; height: 23px;" alt="2 "
172
+ class="cufon cufon-canvas">
173
+ <canvas style="width: 36px; height: 23px;
174
+ top: 1px; left: -1px;" height="23" width="36"></canvas>
175
+ <cufontext>2</cufontext>
176
+ </cufon>
177
+ <cufon
178
+ style="width: 27px; height: 23px;" alt="Alt" class="cufon cufon-canvas">
179
+ <canvas
180
+ style="width: 44px; height: 23px; top: 1px; left: -1px;" height="23"
181
+ width="44"></canvas>
182
+ <cufontext>Alt</cufontext>
183
+ </cufon>
184
+ </h2>
185
+ <h2 class="brdr">
186
+ <cufon style="width: 73px; height: 23px;" alt="Header "
187
+ class="cufon cufon-canvas">
188
+ <canvas style="width: 92px; height: 23px;
189
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
190
+ <cufontext>Header
191
+ </cufontext>
192
+ </cufon>
193
+ <cufon style="width: 18px; height: 23px;" alt="2 "
194
+ class="cufon cufon-canvas">
195
+ <canvas style="width: 36px; height: 23px;
196
+ top: 1px; left: -1px;" height="23" width="36"></canvas>
197
+ <cufontext>2</cufontext>
198
+ </cufon>
199
+ <cufon
200
+ style="width: 91px; height: 23px;" alt="Underline" class="cufon
201
+ cufon-canvas">
202
+ <canvas style="width: 104px; height: 23px; top: 1px; left:
203
+ -1px;" height="23" width="104"></canvas>
204
+ <cufontext>Underline</cufontext>
205
+ </cufon>
206
+ </h2>
207
+ <h3>
208
+ <cufon style="width: 51px; height: 16px;" alt="Header " class="cufon
209
+ cufon-canvas">
210
+ <canvas style="width: 64px; height: 16px; top: 0px; left:
211
+ 0px;" height="16" width="64"></canvas>
212
+ <cufontext>Header</cufontext>
213
+ </cufon>
214
+ <cufon
215
+ style="width: 8px; height: 16px;" alt="3" class="cufon cufon-canvas">
216
+ <canvas
217
+ style="width: 18px; height: 16px; top: 0px; left: 0px;" height="16"
218
+ width="18"></canvas>
219
+ <cufontext>3</cufontext>
220
+ </cufon>
221
+ </h3>
222
+ <h3 class="alt">
223
+ <cufon style="width: 51px; height: 16px;" alt="Header "
224
+ class="cufon cufon-canvas">
225
+ <canvas style="width: 64px; height: 16px;
226
+ top: 0px; left: 0px;" height="16" width="64"></canvas>
227
+ <cufontext>Header</cufontext>
228
+ </cufon>
229
+ <cufon
230
+ style="width: 12px; height: 16px;" alt="3 " class="cufon cufon-canvas">
231
+ <canvas
232
+ style="width: 25px; height: 16px; top: 0px; left: 0px;" height="16"
233
+ width="25"></canvas>
234
+ <cufontext>3</cufontext>
235
+ </cufon>
236
+ <cufon
237
+ style="width: 19px; height: 16px;" alt="Alt" class="cufon cufon-canvas">
238
+ <canvas
239
+ style="width: 31px; height: 16px; top: 0px; left: 0px;" height="16"
240
+ width="31"></canvas>
241
+ <cufontext>Alt</cufontext>
242
+ </cufon>
243
+ </h3>
244
+ <h3 class="brdr">
245
+ <cufon style="width: 51px; height: 16px;" alt="Header "
246
+ class="cufon cufon-canvas">
247
+ <canvas style="width: 64px; height: 16px;
248
+ top: 0px; left: 0px;" height="16" width="64"></canvas>
249
+ <cufontext>Header</cufontext>
250
+ </cufon>
251
+ <cufon
252
+ style="width: 12px; height: 16px;" alt="3 " class="cufon cufon-canvas">
253
+ <canvas
254
+ style="width: 25px; height: 16px; top: 0px; left: 0px;" height="16"
255
+ width="25"></canvas>
256
+ <cufontext>3</cufontext>
257
+ </cufon>
258
+ <cufon
259
+ style="width: 63px; height: 16px;" alt="Underline" class="cufon
260
+ cufon-canvas">
261
+ <canvas style="width: 73px; height: 16px; top: 0px; left:
262
+ 0px;" height="16" width="73"></canvas>
263
+ <cufontext>Underline</cufontext>
264
+ </cufon>
265
+ </h3>
266
+ <h4>
267
+ <cufon style="width: 45px; height: 14px;" alt="Header " class="cufon
268
+ cufon-canvas">
269
+ <canvas style="width: 56px; height: 14px; top: 0px; left:
270
+ 0px;" height="14" width="56"></canvas>
271
+ <cufontext>Header</cufontext>
272
+ </cufon>
273
+ <cufon
274
+ style="width: 7px; height: 14px;" alt="4" class="cufon cufon-canvas">
275
+ <canvas
276
+ style="width: 15px; height: 14px; top: 0px; left: 0px;" height="14"
277
+ width="15"></canvas>
278
+ <cufontext>4</cufontext>
279
+ </cufon>
280
+ </h4>
281
+ <h4 class="alt">
282
+ <cufon style="width: 45px; height: 14px;" alt="Header "
283
+ class="cufon cufon-canvas">
284
+ <canvas style="width: 56px; height: 14px;
285
+ top: 0px; left: 0px;" height="14" width="56"></canvas>
286
+ <cufontext>Header</cufontext>
287
+ </cufon>
288
+ <cufon
289
+ style="width: 11px; height: 14px;" alt="4 " class="cufon cufon-canvas">
290
+ <canvas
291
+ style="width: 22px; height: 14px; top: 0px; left: 0px;" height="14"
292
+ width="22"></canvas>
293
+ <cufontext>4</cufontext>
294
+ </cufon>
295
+ <cufon
296
+ style="width: 16px; height: 14px;" alt="Alt" class="cufon cufon-canvas">
297
+ <canvas
298
+ style="width: 27px; height: 14px; top: 0px; left: 0px;" height="14"
299
+ width="27"></canvas>
300
+ <cufontext>Alt</cufontext>
301
+ </cufon>
302
+ </h4>
303
+ <h4 class="brdr">
304
+ <cufon style="width: 45px; height: 14px;" alt="Header "
305
+ class="cufon cufon-canvas">
306
+ <canvas style="width: 56px; height: 14px;
307
+ top: 0px; left: 0px;" height="14" width="56"></canvas>
308
+ <cufontext>Header</cufontext>
309
+ </cufon>
310
+ <cufon
311
+ style="width: 11px; height: 14px;" alt="4 " class="cufon cufon-canvas">
312
+ <canvas
313
+ style="width: 22px; height: 14px; top: 0px; left: 0px;" height="14"
314
+ width="22"></canvas>
315
+ <cufontext>4</cufontext>
316
+ </cufon>
317
+ <cufon
318
+ style="width: 55px; height: 14px;" alt="Underline" class="cufon
319
+ cufon-canvas">
320
+ <canvas style="width: 64px; height: 14px; top: 0px; left:
321
+ 0px;" height="14" width="64"></canvas>
322
+ <cufontext>Underline</cufontext>
323
+ </cufon>
324
+ </h4>
325
+ <h5>
326
+ <cufon style="width: 35px; height: 11px;" alt="Header " class="cufon
327
+ cufon-canvas">
328
+ <canvas style="width: 44px; height: 11px; top: 0px; left:
329
+ 0px;" height="11" width="44"></canvas>
330
+ <cufontext>Header</cufontext>
331
+ </cufon>
332
+ <cufon
333
+ style="width: 6px; height: 11px;" alt="5" class="cufon cufon-canvas">
334
+ <canvas
335
+ style="width: 12px; height: 11px; top: 0px; left: 0px;" height="11"
336
+ width="12"></canvas>
337
+ <cufontext>5</cufontext>
338
+ </cufon>
339
+ </h5>
340
+ <h5 class="alt">
341
+ <cufon style="width: 35px; height: 11px;" alt="Header "
342
+ class="cufon cufon-canvas">
343
+ <canvas style="width: 44px; height: 11px;
344
+ top: 0px; left: 0px;" height="11" width="44"></canvas>
345
+ <cufontext>Header</cufontext>
346
+ </cufon>
347
+ <cufon
348
+ style="width: 9px; height: 11px;" alt="5 " class="cufon cufon-canvas">
349
+ <canvas
350
+ style="width: 18px; height: 11px; top: 0px; left: 0px;" height="11"
351
+ width="18"></canvas>
352
+ <cufontext>5</cufontext>
353
+ </cufon>
354
+ <cufon
355
+ style="width: 13px; height: 11px;" alt="Alt" class="cufon cufon-canvas">
356
+ <canvas
357
+ style="width: 21px; height: 11px; top: 0px; left: 0px;" height="11"
358
+ width="21"></canvas>
359
+ <cufontext>Alt</cufontext>
360
+ </cufon>
361
+ </h5>
362
+ <h5 class="brdr">
363
+ <cufon style="width: 35px; height: 11px;" alt="Header "
364
+ class="cufon cufon-canvas">
365
+ <canvas style="width: 44px; height: 11px;
366
+ top: 0px; left: 0px;" height="11" width="44"></canvas>
367
+ <cufontext>Header</cufontext>
368
+ </cufon>
369
+ <cufon
370
+ style="width: 9px; height: 11px;" alt="5 " class="cufon cufon-canvas">
371
+ <canvas
372
+ style="width: 18px; height: 11px; top: 0px; left: 0px;" height="11"
373
+ width="18"></canvas>
374
+ <cufontext>5</cufontext>
375
+ </cufon>
376
+ <cufon
377
+ style="width: 44px; height: 11px;" alt="Underline" class="cufon
378
+ cufon-canvas">
379
+ <canvas style="width: 50px; height: 11px; top: 0px; left:
380
+ 0px;" height="11" width="50"></canvas>
381
+ <cufontext>Underline</cufontext>
382
+ </cufon>
383
+ </h5>
384
+ <p>
385
+ <code>I am code<br>
386
+ I can expand as needed<br>
387
+ with my content<br>
388
+ </code></p>
389
+
390
+ <p>
391
+ <code class="mono">I am monotone code<br>
392
+ I can expand too<br>
393
+ </code></p>
394
+
395
+ <div class="info">
396
+ I am info<br>
397
+ again, can expand with content<br>
398
+ as I grow
399
+ </div>
400
+ <div class="warn">
401
+ I am warning<br>
402
+ repetition is nice when it <br>
403
+ comes to demonstrating expansion<br>
404
+ of elements
405
+ </div>
406
+ <ul class="list">
407
+ <li class="first-child">
408
+ list item 1
409
+ </li>
410
+ <li class="last-child">
411
+ list item 2
412
+ </li>
413
+ </ul>
414
+ <ul class="disc">
415
+ <li class="first-child">
416
+ disc list item 1
417
+ </li>
418
+ <li class="last-child">
419
+ disc list item 2
420
+ </li>
146
421
  </ul>
147
- <p>This guide is for BrowserCMS <strong>3.1</strong>. Some code shown here may not work with older versions of BrowserCMS.</p>
148
- <h3 id="creating-a-portlet">1 Creating A Portlet</h3>
149
- <p>Once you have created the product content block and created a few products in the content library, you need a way to
150
- display them on a page. To do that, you will want to create a portlet.</p>
151
- <p>A portlet is a type of content block used to display dynamic data on a page (usually other content blocks). A portlet will typically perform
152
- some kind of database query in the render method and then render it&#8217;s view. One difference between a portlet and
153
- typical content block is that each instance of a portlet can have a view template that is editable via the <span class="caps">CMS</span> admin interface.
154
- Let&#8217;s generate a portlet to display the most recently created products:</p>
155
- <div class="code_container"><code class="html">$ script/generate portlet recent_products limit:integer</code></div>
156
- <p>What you will see created is:</p>
157
- <ul>
158
- <li>A portlet at <tt>app/portlets/recent_products_portlet.rb</tt></li>
159
- <li>A form partial at <tt>app/views/portlets/recent_products/_form.html.erb</tt></li>
160
- <li>A render template at <tt>app/views/portlets/recent_products/render.html.erb</tt></li>
422
+ <ul class="flat-list">
423
+ <li class="first-child">
424
+ flat-list item 1
425
+ </li>
426
+ <li class="last-child">
427
+ flat-list item 2
428
+ </li>
161
429
  </ul>
162
- <p>What you don&#8217;t see created is a migration. Portlets use the <a href="/doc/app/classes/Cms/Behaviors/DynamicAttributes.html">DynamicAttributes</a>
163
- behavior in order to store associated values in the database without having to create custom database tables. What
164
- this means is that you can set and then store a value for any attribute for a portlet.</p>
165
- <p>So if you look at the form partial that was generate for this portlet, you will see this:</p>
166
- <div class="code_container"><code class="html">&lt;%= f.cms_text_field :name %&gt;
167
- &lt;%= f.cms_text_field :limit %&gt;
168
- &lt;%= f.cms_template_editor :template %&gt;</code></div>
169
- <p>Every portlet instance has to have a name and that is stored in the main <tt>portlets</tt> table, but <tt>limit</tt> is stored in the <tt>portlet_attributes</tt> table.
170
- You could add anything to this form, such as <tt>&lt;%= f.cms_text_field :foobar %&gt;</tt>, and whatever the user enters for <tt>foobar</tt> would get saved with the portlet.</p>
171
- <p>If you look at the code for the portlet, you will see:</p>
172
- <div class="code_container"><code class="ruby">class RecentProducts &lt; Portlet
430
+ <p class="clearfix">
431
+ clearing paragraph block (has margins)</p>
173
432
 
174
- enable_template_editor false
433
+ <div class="clearfix">
434
+ cleearing regular block (no margins)
435
+ </div>
175
436
 
176
- def render
177
- # Your Code Goes Here
178
- end
179
-
180
- end</code></div>
181
- <p>As the comment says, you will want to fill in your application logic here. We&#8217;re going to get the most recent products
182
- and use the value the user entered for limit when they filled out the form. So edit the render method to look like:</p>
183
- <div class="code_container"><code class="ruby">class RecentProducts &lt; Portlet
184
-
185
- def render
186
- @products = Product.all(:order =&gt; &quot;created_at desc&quot;, :limit =&gt; self.limit)
187
- end
188
-
189
- end</code></div>
190
- <p><code>self</code> in this case is the portlet instance, which is also available in the instance variable
191
- <code>@portlet</code>.
192
- We are setting the <code>@products</code> instance variable so that will be available in the view. If you look at the render template, you will see this:</p>
193
- <div class="code_container"><code class="html">&lt;%=h @portlet.name %&gt;</code></div>
194
- <p>This is simply a place holder, you should override this code with how you want the portlet to display. In this case, let&#8217;s go with:</p>
195
- <div class="code_container"><code class="html">&lt;ul&gt;
196
- &lt;% @products.each do |product| %&gt;
197
- &lt;li&gt;&lt;%=h product.name %&gt;&lt;/li&gt;
198
- &lt;% end %&gt;
199
- &lt;/ul&gt;</code></div>
200
- <h4 id="allowing-template-editing-via-the-ui">1.1 Allowing template editing via the UI</h4>
201
- <p>By default, each instance of a Portlet will render itself using the contents of it&#8217;s &#8216;render.html.erb&#8217; file, because &#8216;enable_template_editor&#8217; was marked false.
202
- If you look back at the form partial that was generated, you&#8217;ll see:</p>
203
- <div class="code_container"><code class="html">&lt;%= f.cms_template_editor :template %&gt;</code></div>
204
- <p>This is the editing control for the Portlet&#8217;s template, which will not appear on <span class="caps">CMS</span> UI by default. This allows you to quickly
205
- refine how you want the default view to look. Once you like the layout for a portlet, you can enable the editor like so:</p>
206
- <div class="code_container"><code class="ruby">class RecentProducts &lt; Portlet
207
- enable_template_editor true
208
- end</code></div>
209
- <p>Now each instance of the RecentProducts can have its own unique template. Each time a new portlet is created, the contents of
210
- the &#8216;render.html.erb&#8217; will be copied into the template attribute of the portlet and used to display the portlet. Users can
211
- update these views as they see fit.</p>
212
- <p><strong>Gotcha:</strong> It&#8217;s important to remember that once a portlet has a saved template, it will ignore what&#8217;s in the render.html.erb. So changes made there won&#8217;t
213
- be reflected until the portlet&#8217;s template has been updated again.</p>
214
- <h4 id="default-template-handlers">1.2 Default Template Handlers</h4>
215
- <p>By default, templates are treated as erb views. The template editor has a drop down that allows users to choose other types like &#8216;builder&#8217; or &#8216;rhtml&#8217;. To set the default handler
216
- to something other than erb, modify the _form.html.erb to the following:</p>
217
- <div class="code_container"><code class="html">&lt;%= f.template_editor :template, :default_handler=&gt;&quot;builder&quot; %&gt;</code></div>
218
- <h4 id="alternative-handlers-for-non-editable-templates">1.3 Alternative handlers for non-editable templates</h4>
219
- <p>If the template_editor is disabled, you can also set the handler directly on the portlet like so:</p>
220
- <div class="code_container"><code class="ruby">class RecentProducts &lt; Portlet
221
- enable_template_editor false
222
- handler &quot;builder&quot;
223
- end</code></div>
224
- <h4 id="using-haml-templates">1.4 Using <span class="caps">HAML</span> templates</h4>
225
- <p>The default list of handlers does not include Haml. To do that, install the <span class="caps">HAML</span> gem and set the default_value to &#8216;haml&#8217; like so:</p>
226
- <div class="code_container"><code class="html">&lt;%= f.template_editor :template, :default_handler=&gt;&quot;haml&quot; %&gt;</code></div>
227
- </td>
228
- </tr>
229
- </table>
230
- </div>
231
- </div>
232
- <br clear="all"/>
233
- <div class="bottom_cap"></div>
234
- </div>
235
- </div>
236
- </body>
237
- </html>
238
437
 
438
+ </div>
439
+ </div>
440
+ <div id="footer">
441
+ <ul>
442
+ <li class="first-child"><a href="">BrowserMedia Home</a></li>
443
+ <li><a href="">BrowserCMS Home</a></li>
444
+ <li><a href="">Sitemap</a></li>
445
+ <li class="last-child"><a href="">Contact Us</a></li>
446
+ </ul>
447
+ <p class="copynotice">© 1998-2010 BrowserMedia, LLC. All Rights
448
+ Reserved.</p>
449
+ </div>
450
+ </div>
451
+ <script type="text/javascript">
452
+ //<![CDATA[
453
+ bcmsOrg.init();
454
+ //]]>
455
+ </script>
456
+ </body>
457
+ </html>