Skip to content

Commit 0c610c8

Browse files
committed
Add element custom style support and a container option. Update style states.
1 parent 0dd998d commit 0c610c8

File tree

1 file changed

+41
-15
lines changed

1 file changed

+41
-15
lines changed

index.php

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
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

Comments
 (0)