5151 'type ' => 'int '
5252 ]
5353 ];
54+ $ type ->canStyle = true ;
55+ $ type ->canImportExport = true ;
5456 \BearCMS \Internal \ElementsTypes::add ($ type );
5557
5658 $ app ->routes
@@ -183,23 +185,32 @@ function (App\Request $request) use ($app, $context, $forumPagesPathPrefix) {
183185 }
184186 });
185187
186- Internal \Themes::$ elementsOptions ['forumPosts ' ] = function ($ options , $ idPrefix , $ parentSelector , $ context , $ details ) {
187- $ groupForumPosts = $ options ->addGroup (__ ("bearcms.themes.options.Forum posts " ));
188- $ groupForumPosts ->addOption ($ idPrefix . "ForumPostsCSS " , "css " , '' , [
188+ Internal \Themes::$ elementsOptions ['forumPosts ' ] = ['v2 ' , function ($ options , $ idPrefix , $ parentSelector , $ context , $ details ) {
189+ $ isElementContext = $ context === Internal \Themes::OPTIONS_CONTEXT_ELEMENT ;
190+ if ($ isElementContext ) {
191+ $ optionsGroup = $ options ;
192+ $ defaultStyleSelector = '' ;
193+ } else {
194+ $ optionsGroup = $ options ->addGroup (__ ("bearcms.themes.options.Forum posts " ));
195+ $ defaultStyleSelector = ' .bearcms-element:not([class*="bearcms-element-style-"]) ' ;
196+ $ optionsGroup ->details ['internalElementSelector ' ] = [$ idPrefix , $ parentSelector . " .bearcms-forum-posts-element " ];
197+ }
198+
199+ $ optionsGroup ->addOption ($ idPrefix . "ForumPostsCSS " , "css " , '' , [
189200 "cssTypes " => ["cssPadding " , "cssBorder " , "cssRadius " , "cssShadow " , "cssBackground " ],
190201 "cssOptions " => array_diff (isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [], ["*/focusState " ]), // all but focus state
191202 "cssOutput " => [
192- ["selector " , $ parentSelector . " .bearcms-forum-posts-element " ]
203+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element " ]
193204 ]
194205 ]);
195206
196- $ groupForumPostsPost = $ groupForumPosts ->addGroup (__ ("bearcms.themes.options.forumPosts.Post " ));
207+ $ groupForumPostsPost = $ optionsGroup ->addGroup (__ ("bearcms.themes.options.forumPosts.Post " ));
197208 $ groupForumPostsPost ->addOption ($ idPrefix . "ForumPostsPostCSS " , "css " , '' , [
198209 "cssTypes " => ["cssPadding " , "cssMargin " , "cssBorder " , "cssRadius " , "cssShadow " , "cssBackground " , "cssSize " ],
199210 "cssOptions " => array_diff (isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [], ["*/focusState " ]),
200211 "cssOutput " => [
201212 ["rule " , $ parentSelector . " .bearcms-forum-posts-post " , "box-sizing:border-box; " ],
202- ["selector " , $ parentSelector . " .bearcms-forum-posts-post " ]
213+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-post " ]
203214 ]
204215 ]);
205216
@@ -209,7 +220,7 @@ function (App\Request $request) use ($app, $context, $forumPagesPathPrefix) {
209220 "cssOptions " => isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [],
210221 "cssOutput " => [
211222 ["rule " , $ parentSelector . " .bearcms-forum-posts-post-title " , "text-decoration:none; " ],
212- ["selector " , $ parentSelector . " .bearcms-forum-posts-post-title " ]
223+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-post-title " ]
213224 ]
214225 ]);
215226
@@ -218,16 +229,16 @@ function (App\Request $request) use ($app, $context, $forumPagesPathPrefix) {
218229 "cssTypes " => ["cssText " , "cssTextShadow " ],
219230 "cssOptions " => array_diff (isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [], ["*/focusState " ]),
220231 "cssOutput " => [
221- ["selector " , $ parentSelector . " .bearcms-forum-posts-post-replies-count " ]
232+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-post-replies-count " ]
222233 ]
223234 ]);
224235
225- $ groupForumPostsShowMoreButton = $ groupForumPosts ->addGroup (__ ("bearcms.themes.options.forumPosts.Show more button " ));
236+ $ groupForumPostsShowMoreButton = $ optionsGroup ->addGroup (__ ("bearcms.themes.options.forumPosts.Show more button " ));
226237 $ groupForumPostsShowMoreButton ->addOption ($ idPrefix . "ForumPostsShowMoreButtonCSS " , "css " , '' , [
227238 "cssOptions " => isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [],
228239 "cssOutput " => [
229240 ["rule " , $ parentSelector . " .bearcms-forum-posts-show-more-button " , "box-sizing:border-box;display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%; " ],
230- ["selector " , $ parentSelector . " .bearcms-forum-posts-show-more-button " ]
241+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-show-more-button " ]
231242 ]
232243 ]);
233244
@@ -237,16 +248,16 @@ function (App\Request $request) use ($app, $context, $forumPagesPathPrefix) {
237248 "cssOptions " => array_diff (isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [], ["*/focusState " ]),
238249 "cssOutput " => [
239250 ["rule " , $ parentSelector . " .bearcms-forum-posts-show-more-button-container " , "box-sizing:border-box; " ],
240- ["selector " , $ parentSelector . " .bearcms-forum-posts-show-more-button-container " ]
251+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-show-more-button-container " ]
241252 ]
242253 ]);
243254
244- $ groupForumPostsNewPostButton = $ groupForumPosts ->addGroup (__ ("bearcms.themes.options.forumPosts.New post button " ));
255+ $ groupForumPostsNewPostButton = $ optionsGroup ->addGroup (__ ("bearcms.themes.options.forumPosts.New post button " ));
245256 $ groupForumPostsNewPostButton ->addOption ($ idPrefix . "ForumPostsNewPostButtonCSS " , "css " , '' , [
246257 "cssOptions " => isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [],
247258 "cssOutput " => [
248259 ["rule " , $ parentSelector . " .bearcms-forum-posts-new-post-button " , "box-sizing:border-box;display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%; " ],
249- ["selector " , $ parentSelector . " .bearcms-forum-posts-new-post-button " ]
260+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-new-post-button " ]
250261 ]
251262 ]);
252263
@@ -256,10 +267,25 @@ function (App\Request $request) use ($app, $context, $forumPagesPathPrefix) {
256267 "cssOptions " => array_diff (isset ($ details ['cssOptions ' ]) ? $ details ['cssOptions ' ] : [], ["*/focusState " ]),
257268 "cssOutput " => [
258269 ["rule " , $ parentSelector . " .bearcms-forum-posts-new-post-button-container " , "box-sizing:border-box;display:flex; " ],
259- ["selector " , $ parentSelector . " .bearcms-forum-posts-new-post-button-container " ]
270+ ["selector " , $ parentSelector . $ defaultStyleSelector . " > .bearcms-forum-posts-element .bearcms-forum-posts-new-post-button-container " ]
260271 ]
261272 ]);
262- };
273+
274+ $ containerSelector = $ defaultStyleSelector . ":has(> .bearcms-forum-posts-element) " ;
275+ $ groupContainer = $ optionsGroup ->addGroup (__ ("bearcms.themes.options.Container " ));
276+ $ groupContainer ->addOption ($ idPrefix . "ForumPostsContainerCSS " , "css " , '' , [
277+ "cssTypes " => ["cssPadding " , "cssMargin " , "cssBorder " , "cssRadius " , "cssShadow " , "cssBackground " , "cssTextAlign " , "cssSize " , "cssTransform " ],
278+ "cssOptions " => ["*/hoverState " , "*/activeState " , "*/visibilityState " , "*/sizeState " , "*/screenSizeState " , "*/pageTypeState " , "*/tagsState " ],
279+ "cssOutput " => [
280+ ["rule " , $ parentSelector . $ containerSelector , "box-sizing:border-box; " ],
281+ ["selector " , $ parentSelector . $ containerSelector ]
282+ ]
283+ ]);
284+
285+ if ($ isElementContext ) {
286+ $ groupContainer ->addVisibility ($ idPrefix . "ForumPostsContainerVisibility " , $ parentSelector . $ containerSelector );
287+ }
288+ }];
263289
264290 Internal \Themes::$ pagesOptions ['forums ' ] = function ($ options , array $ details = []) {
265291
0 commit comments