diff --git a/classes/wZm/ElggTheme/Actions/SettingsAction.php b/classes/wZm/ElggTheme/Actions/SettingsAction.php new file mode 100644 index 0000000..9720437 --- /dev/null +++ b/classes/wZm/ElggTheme/Actions/SettingsAction.php @@ -0,0 +1,38 @@ +isValid()) { + return elgg_error_response(elgg_echo('elgg_theme:settings:cover:invalid')); + } + + $assets_dir = elgg_get_data_path() . '/elgg_theme/'; + + if (!is_dir($assets_dir)) { + mkdir($assets_dir, 0755, true); + } + + $target = elgg_get_data_path() . 'elgg_theme/' . $asset . '.png'; + if (file_exists($target)) { + unlink($target); + } + + try { + $upload->move(elgg_get_data_path() . 'elgg_theme/', $asset . '.png'); + elgg_invalidate_caches(); + elgg_clear_caches(); + } catch (\Exception $ex) { + return false; + } + + return elgg_ok_response('', elgg_echo('elgg_theme:settings:cover:success')); + } +} \ No newline at end of file diff --git a/classes/wZm/ElggTheme/Menus/SettingsManu.php b/classes/wZm/ElggTheme/Menus/SettingsManu.php new file mode 100644 index 0000000..cf8d63d --- /dev/null +++ b/classes/wZm/ElggTheme/Menus/SettingsManu.php @@ -0,0 +1,30 @@ +getMatchedParameters()) !== 'plugins' && $current_route->getName() !== 'admin:plugin_settings') { + return; + } + + $menu = $event->getValue(); + /* @var $menu \Elgg\Collections\Collection */ + + $menu->add(\ElggMenuItem::factory([ + 'name' => 'elgg_theme:cover', + 'text' => elgg_echo('admin:elgg_theme:cover'), + 'href' => elgg_normalize_url('admin/elgg_theme/cover'), + 'parent_name' => 'plugin:settings:elgg_theme', + 'section' => 'plugin_settings', + ])); + + return $menu; + } +} diff --git a/elgg-plugin.php b/elgg-plugin.php index 3192d3e..a267d90 100644 --- a/elgg-plugin.php +++ b/elgg-plugin.php @@ -23,15 +23,44 @@ ], 'activate_on_install' => true, ], + + 'actions' => [ + //admin + 'admin/elgg_theme/cover' => [ + 'controller' => \wZm\ElggTheme\Actions\SettingsAction::class, + 'access' => 'admin', + ], + ], + + 'events' => [ + 'register' => [ + 'menu:page' => [ + \wZm\ElggTheme\Menus\SettingsManu::class => [], + ], + ], + ], 'view_extensions' => [ - 'elgg.css' => [ + 'admin.css' => [ + 'elgg_theme/elgg_theme_admin.css' => [], + ], + 'elgg.css' => [ 'elgg_theme/elgg_theme.css' => [], ], 'river/sidebar' => [ 'elgg_theme/sidebar' => [], ], ], + + 'view_options' => [ + 'graphics/cover.jpg' => ['simplecache' => true], + ], + + 'views' => [ + 'default' => [ + 'elgg_theme/' => elgg_get_data_path() . 'elgg_theme/', + ], + ], 'settings' => [ 'landing_action' => true, diff --git a/languages/en.php b/languages/en.php index a65de48..3b5948c 100644 --- a/languages/en.php +++ b/languages/en.php @@ -24,5 +24,12 @@ 'elgg_theme:settings:activity_sidebar:profile_icon' => 'Show profile icon', 'elgg_theme:settings:activity_sidebar:friends' => 'Show friends', + 'admin:elgg_theme' => 'Elgg Landing Theme', + 'admin:elgg_theme:cover' => 'Cover image', + 'elgg_theme:settings:cover' => 'Cover image (PNG format)', + 'elgg_theme:settings:cover:help' => 'Recommend an image with minimal width 2100px.', + 'elgg_theme:settings:cover:success' => 'Cover image has been saved.', + 'elgg_theme:settings:cover:invalid' => 'No cover image found.', + 'index:content' => '
Many sites use the additional plugins for this theme to place the custom modules on this landing page.
Contact with our developers to make beautiful and modern design for your site: lab@wzm.me
', ]; diff --git a/views/default/admin/elgg_theme/cover.php b/views/default/admin/elgg_theme/cover.php new file mode 100644 index 0000000..4e39544 --- /dev/null +++ b/views/default/admin/elgg_theme/cover.php @@ -0,0 +1,5 @@ + 'multipart/form-data' +], []); diff --git a/views/default/elgg_theme/elements/featured.php b/views/default/elgg_theme/elements/featured.php index 43b7d04..d2b37c1 100644 --- a/views/default/elgg_theme/elements/featured.php +++ b/views/default/elgg_theme/elements/featured.php @@ -3,10 +3,16 @@ $entity = elgg_get_plugin_from_id('elgg_theme'); // Get the image -$img = elgg_get_simplecache_url('graphics/cover.jpg'); +$file_src = elgg_get_data_path() . 'elgg_theme/cover.png'; + +if (file_exists($file_src)) { + $img = elgg_get_simplecache_url('elgg_theme/cover.png'); +} else { + $img = elgg_get_simplecache_url('graphics/cover.jpg'); +} $cover = elgg_format_element('div', [ - 'class' => 'slide', + 'class' => 'elgg-featured-cover', 'style' => "background-image: url('{$img}');" ]); diff --git a/views/default/elgg_theme/elgg_theme.css b/views/default/elgg_theme/elgg_theme.css index 2bb7f3e..08256a8 100644 --- a/views/default/elgg_theme/elgg_theme.css +++ b/views/default/elgg_theme/elgg_theme.css @@ -9,10 +9,10 @@ legend { } .elgg-landing-page { .elgg-page-body { - padding: 0; + padding: 0 !important; > .elgg-inner { - padding: 0; + padding: 0 !important; max-width: none; } } @@ -80,12 +80,14 @@ legend { height: 32.5rem; transition: all 0.3s; - .slide { + .elgg-featured-cover { background-repeat: no-repeat; background-position: center center; background-size: cover; height: 32.5rem; transition: all 0.3s; + background-color: rgba(0,0,0,.4); + background-blend-mode: multiply; } .elgg-caption { @@ -148,7 +150,7 @@ legend { .elgg-featured-container { height: 21rem; - .slide { + .elgg-featured-cover { height: 21rem; } @@ -177,7 +179,7 @@ legend { .elgg-featured-container { height: 15rem; - .slide { + .elgg-featured-cover { height: 15rem; } @@ -218,3 +220,4 @@ legend { } } } + diff --git a/views/default/elgg_theme/elgg_theme_admin.css b/views/default/elgg_theme/elgg_theme_admin.css new file mode 100644 index 0000000..c5c50e8 --- /dev/null +++ b/views/default/elgg_theme/elgg_theme_admin.css @@ -0,0 +1,5 @@ + +img.elgg-theme-cover__preview { + width: 320px !important; + max-width: 320px !important; +} diff --git a/views/default/forms/admin/elgg_theme/cover.php b/views/default/forms/admin/elgg_theme/cover.php new file mode 100644 index 0000000..ea4c6b9 --- /dev/null +++ b/views/default/forms/admin/elgg_theme/cover.php @@ -0,0 +1,30 @@ + $asset_src, + 'class' => 'elgg-theme-cover__preview mbl', +]); + +echo elgg_view_field([ + '#type' => 'file', + '#label' => elgg_echo('elgg_theme:settings:cover'), + 'name' => 'cover', + 'accept' => 'image/png', + '#help' => elgg_echo('elgg_theme:settings:cover:help'), +]); + +$footer = elgg_view_field([ + '#type' => 'submit', + 'value' => elgg_echo('save'), +]); + +elgg_set_form_footer($footer);