From 8019e95384bea23627e0151076bb49ba410b32e7 Mon Sep 17 00:00:00 2001 From: Egorka Date: Wed, 12 Sep 2018 21:29:13 +0300 Subject: [PATCH] Favicon generator --- backend/controllers/settings/ListController.php | 30 +++- backend/messages/ru/main.php | 6 + backend/views/auth/login.php | 10 +- backend/views/layouts/main-login.php | 3 +- backend/views/layouts/main.php | 15 +- backend/views/settings/list/create.php | 16 +- backend/views/settings/list/favicon.php | 34 ++++ backend/views/settings/list/index.php | 7 + core/components/TestForm.php | 39 ----- core/components/favicon/FaviconGenerator.php | 134 +++++++++++++++ core/components/favicon/browserconfig.php | 19 +++ core/components/favicon/manifest.php | 48 ++++++ core/forms/FaviconForm.php | 37 ++++ core/services/SettingsService.php | 7 + core/widgets/FaviconWidget.php | 77 +++++++++ frontend/web/themes/start/layouts/main.php | 215 ++++++++++++------------ 16 files changed, 532 insertions(+), 165 deletions(-) create mode 100644 backend/views/settings/list/favicon.php delete mode 100644 core/components/TestForm.php create mode 100644 core/components/favicon/FaviconGenerator.php create mode 100644 core/components/favicon/browserconfig.php create mode 100644 core/components/favicon/manifest.php create mode 100644 core/forms/FaviconForm.php create mode 100644 core/widgets/FaviconWidget.php diff --git a/backend/controllers/settings/ListController.php b/backend/controllers/settings/ListController.php index 7e1a5fe..a0302c1 100644 --- a/backend/controllers/settings/ListController.php +++ b/backend/controllers/settings/ListController.php @@ -7,7 +7,9 @@ namespace backend\controllers\settings; use backend\forms\SettingsSearch; +use core\component\favicon\FaviconGenerator; use core\entities\Settings; +use core\forms\FaviconForm; use core\forms\SettingsForm; use core\services\SettingsService; use yii\filters\AccessControl; @@ -16,6 +18,7 @@ use yii\web\Controller; use backend\components\ToggleAction; use Yii; use yii\web\NotFoundHttpException; +use yii\web\UploadedFile; class ListController extends Controller { @@ -40,7 +43,7 @@ class ListController extends Controller 'class' => AccessControl::class, 'rules' => [ [ - 'actions' => ['create', 'view', 'index', 'update', 'delete', 'toggle'], + 'actions' => ['create', 'view', 'index', 'update', 'delete', 'toggle', 'favicon'], 'allow' => true, 'roles' => ['SettingsManagement'], ], @@ -146,6 +149,31 @@ class ListController extends Controller return $this->redirect(['index']); } + public function actionFavicon() + { + $form = new FaviconForm(); + if ($form->load(Yii::$app->request->post())) { + $form->image = UploadedFile::getInstance($form, 'image'); + if ($form->image && $form->validate()) { + if (!file_exists(Yii::getAlias('@staticRoot') . '/images/origin/favicon')) { + mkdir(Yii::getAlias('@staticRoot') . '/images/origin/favicon', 0777, true); + } + + $form->image->saveAs(Yii::getAlias('@staticRoot') . '/images/origin/favicon/favicon.png'); + $this->_service->newFavicon(); + Yii::$app->session->setFlash('success', Yii::t('main', 'Favicon generation complete')); + return $this->redirect(['settings/list/index']); + } + } + + return $this->render( + 'favicon', + [ + 'model' => $form, + ] + ); + } + protected function findModel($section, $key) { if (($model = Settings::find()->andWhere(['section' => $section])->andWhere(['key' => $key])->one()) !== null) { diff --git a/backend/messages/ru/main.php b/backend/messages/ru/main.php index 48b4d07..f64d699 100644 --- a/backend/messages/ru/main.php +++ b/backend/messages/ru/main.php @@ -5,6 +5,7 @@ return [ 'Description' => 'Описание', 'Keywords' => 'Ключевые слова', 'Sign out' => 'Выход', + 'Sign in' => 'Вход', 'Profile' => 'Профиль', 'Error' => 'Ошибка', 'Return to back or login page please.' => 'Вернитесь назад или авторизуйтесь снова.', @@ -41,4 +42,9 @@ return [ 'Interface Language' => 'Язык интерфейса', 'design' => 'Оформление', 'site' => 'Сайт', + 'Change Favicon' => 'Изменить иконку сайта', + 'Set Favicon' => 'Новая иконка сайта', + 'Image' => 'Изображение', + 'Only png files allowed. Minimum size: 200x200. Form: square' => 'Разрешены только png файлы минимального размера 200х200. Форма: квадрат', + 'Favicon generation complete' => 'Иконка для сайта обновлена', ]; diff --git a/backend/views/auth/login.php b/backend/views/auth/login.php index 76e4551..4385d06 100644 --- a/backend/views/auth/login.php +++ b/backend/views/auth/login.php @@ -7,7 +7,7 @@ use yii\bootstrap\ActiveForm; /* @var $form yii\bootstrap\ActiveForm */ /* @var $model \core\forms\auth\LoginForm */ -$this->title = 'Sign In'; +$this->title = Yii::t('main', 'Sign in'); $fieldOptions1 = [ 'options' => ['class' => 'form-group has-feedback'], @@ -22,10 +22,14 @@ $fieldOptions2 = [
-