From fd5dbebab22f1422689a7a61cd0d5c485984cab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Szyma=C5=84ski?= Date: Sun, 7 Apr 2019 22:45:16 +0200 Subject: [PATCH 01/18] Themes initialize --- src/Module.php | 4 +- src/apis/ThemesController.php | 54 ++++++++++++++++++++++++ src/controllers/ThemesController.php | 22 ++++++++++ src/resources/js/directives.js | 42 ++++++++++++++++++ src/views/layouts/_angulardirectives.php | 15 +++++++ src/views/themes/index.php | 8 ++++ 6 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 src/apis/ThemesController.php create mode 100644 src/controllers/ThemesController.php create mode 100644 src/views/themes/index.php diff --git a/src/Module.php b/src/Module.php index f061d11736..91f1bfbf1b 100644 --- a/src/Module.php +++ b/src/Module.php @@ -181,6 +181,7 @@ final class Module extends \luya\admin\base\Module implements CoreModuleInterfac 'api-admin-common' => 'luya\admin\apis\CommonController', 'api-admin-remote' => 'luya\admin\apis\RemoteController', 'api-admin-storage' => 'luya\admin\apis\StorageController', + 'api-admin-themes' => 'luya\admin\apis\ThemesController', 'api-admin-menu' => 'luya\admin\apis\MenuController', 'api-admin-timestamp' => 'luya\admin\apis\TimestampController', 'api-admin-search' => 'luya\admin\apis\SearchController', @@ -353,7 +354,8 @@ public function getMenu() ->itemApi('menu_images_item_filters', 'admin/filter/index', 'adjust', 'api-admin-filter') ->group('menu_group_contentproxy') ->itemApi('menu_group_contentproxy_machines', 'admin/proxy-machine/index', 'devices', 'api-admin-proxymachine') - ->itemApi('menu_group_contentproxy_builds', 'admin/proxy-build/index', 'import_export', 'api-admin-proxybuild'); + ->itemApi('menu_group_contentproxy_builds', 'admin/proxy-build/index', 'import_export', 'api-admin-proxybuild') + ->nodeRoute('menu_node_themesmanager', 'invert_colors', 'admin/themes/index'); } /** diff --git a/src/apis/ThemesController.php b/src/apis/ThemesController.php new file mode 100644 index 0000000000..3f1e72a13a --- /dev/null +++ b/src/apis/ThemesController.php @@ -0,0 +1,54 @@ + + * @author Mateusz Szymański Teamwant + * @since 1.0.0 + */ +class ThemesController extends RestController +{ + use CacheableTrait; + + /** + * @var string The route which is used in the permission system + */ + const PERMISSION_ROUTE = 'admin/themes/index'; + + /** + * The index action returns all available themes. + * + * @return array + */ + public function actionIndex() + { + return Yii::$app->themes->getThemes(); + } +} diff --git a/src/controllers/ThemesController.php b/src/controllers/ThemesController.php new file mode 100644 index 0000000000..4352183a0d --- /dev/null +++ b/src/controllers/ThemesController.php @@ -0,0 +1,22 @@ + + * @author Mateusz Szymański Teamwant + * @since 1.0.0 + */ +class ThemesController extends Controller +{ + public function actionIndex() + { + return $this->render('index'); + } +} diff --git a/src/resources/js/directives.js b/src/resources/js/directives.js index 822cc01562..03d8f1b013 100644 --- a/src/resources/js/directives.js +++ b/src/resources/js/directives.js @@ -3327,3 +3327,45 @@ template: '', }; }); + + /** + * Themes + */ + zaa.directive("themesManager", function() { + return { + restrict : 'E', + transclude : false, + scope : { + allowSelection : '@selection', + onlyImages : '@onlyImages' + }, + controller : [ + '$scope', '$http', '$filter', '$timeout', '$q', 'Upload', 'ServiceFoldersData', 'ServiceFilesData', 'LuyaLoading', 'AdminToastService', 'ServiceFoldersDirecotryId', 'ServiceAdminTags', + function($scope, $http, $filter, $timeout, $q, Upload, ServiceFoldersData, ServiceFilesData, LuyaLoading, AdminToastService, ServiceFoldersDirecotryId, ServiceAdminTags) { + + // ServiceFoldersData inheritance + + $scope.foldersData = ServiceFoldersData.data; + + $scope.storeFileCaption = function(fileDetail) { + $http.post('admin/api-admin-storage/filemanager-update-caption', {'id': fileDetail.id, 'captionsText' : fileDetail.captionArray, 'pageId': $scope.currentPageId}).then(function(transport) { + // @TODO i18n + AdminToastService.success('Captions has been updated'); + }); + } + + $scope.selectedFileFromParent = null; + + $scope.init = function() { + if ($scope.$parent.fileinfo) { + $scope.selectedFileFromParent = $scope.$parent.fileinfo; + $scope.changeCurrentFolderId($scope.selectedFileFromParent.folder_id, true); + } + } + + $scope.init(); + + }], + templateUrl : 'themesManager' + } + }); diff --git a/src/views/layouts/_angulardirectives.php b/src/views/layouts/_angulardirectives.php index ce7875d5a6..17524fc643 100644 --- a/src/views/layouts/_angulardirectives.php +++ b/src/views/layouts/_angulardirectives.php @@ -484,4 +484,19 @@ class="badge badge-pill mx-1 mb-2" + + + + + + diff --git a/src/views/themes/index.php b/src/views/themes/index.php new file mode 100644 index 0000000000..129899ea2b --- /dev/null +++ b/src/views/themes/index.php @@ -0,0 +1,8 @@ + +
+ Load Model Themes + +
\ No newline at end of file From f88ebb33a60f6c728bfe1e00d07e7d3cf2fc6ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Szyma=C5=84ski?= Date: Sun, 7 Apr 2019 22:47:51 +0200 Subject: [PATCH 02/18] Remove unused use --- src/apis/ThemesController.php | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/apis/ThemesController.php b/src/apis/ThemesController.php index 3f1e72a13a..f4d83e62f9 100644 --- a/src/apis/ThemesController.php +++ b/src/apis/ThemesController.php @@ -4,24 +4,9 @@ use Yii; use luya\Exception; -use luya\admin\helpers\Storage; -use luya\admin\models\StorageFile; -use luya\admin\models\StorageFolder; -use luya\admin\Module; use luya\traits\CacheableTrait; use luya\admin\helpers\I18n; use luya\admin\base\RestController; -use yii\caching\DbDependency; -use luya\admin\filters\TinyCrop; -use luya\admin\filters\MediumThumbnail; -use luya\helpers\FileHelper; -use yii\web\BadRequestHttpException; -use yii\web\NotFoundHttpException; -use luya\admin\models\StorageImage; -use luya\admin\file\Item; -use luya\helpers\ArrayHelper; -use yii\data\ActiveDataProvider; -use luya\admin\models\TagRelation; /** From b52e1dd26aedcade622bdf5b7daf4d39f0b491a0 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Sun, 14 Jul 2019 17:16:14 +0200 Subject: [PATCH 03/18] Translations --- src/messages/cn/admin.php | 1 + src/messages/de/admin.php | 1 + src/messages/el/admin.php | 1 + src/messages/en/admin.php | 1 + src/messages/es/admin.php | 1 + src/messages/fa/admin.php | 1 + src/messages/fr/admin.php | 1 + src/messages/it/admin.php | 1 + src/messages/nl/admin.php | 1 + src/messages/pl/admin.php | 1 + src/messages/pt/admin.php | 1 + src/messages/ru/admin.php | 1 + src/messages/tr/admin.php | 1 + src/messages/ua/admin.php | 1 + src/messages/vi/admin.php | 1 + 15 files changed, 15 insertions(+) diff --git a/src/messages/cn/admin.php b/src/messages/cn/admin.php index a455f57402..7b3ae15737 100644 --- a/src/messages/cn/admin.php +++ b/src/messages/cn/admin.php @@ -429,4 +429,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/de/admin.php b/src/messages/de/admin.php index b479b51db0..153d931b3d 100644 --- a/src/messages/de/admin.php +++ b/src/messages/de/admin.php @@ -431,4 +431,5 @@ 'status_true' => 'Ja', 'status_false' => 'Nein', 'js_jsonobject_newkey' => 'Neuer Schlüssel Name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/el/admin.php b/src/messages/el/admin.php index d8d4533464..504ff12ed1 100644 --- a/src/messages/el/admin.php +++ b/src/messages/el/admin.php @@ -418,4 +418,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/en/admin.php b/src/messages/en/admin.php index 41cc6a8083..66f410b48c 100644 --- a/src/messages/en/admin.php +++ b/src/messages/en/admin.php @@ -429,4 +429,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/es/admin.php b/src/messages/es/admin.php index 3ad71596fd..b22a8823ef 100644 --- a/src/messages/es/admin.php +++ b/src/messages/es/admin.php @@ -410,4 +410,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/fa/admin.php b/src/messages/fa/admin.php index 5735e96432..53f81b8779 100644 --- a/src/messages/fa/admin.php +++ b/src/messages/fa/admin.php @@ -410,4 +410,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/fr/admin.php b/src/messages/fr/admin.php index 5db086a4a1..7c66802837 100644 --- a/src/messages/fr/admin.php +++ b/src/messages/fr/admin.php @@ -429,4 +429,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/it/admin.php b/src/messages/it/admin.php index b12ffc14e9..081ab5172d 100644 --- a/src/messages/it/admin.php +++ b/src/messages/it/admin.php @@ -418,4 +418,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/nl/admin.php b/src/messages/nl/admin.php index 1a37b9fc8b..5d7cfe484c 100644 --- a/src/messages/nl/admin.php +++ b/src/messages/nl/admin.php @@ -403,4 +403,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/pl/admin.php b/src/messages/pl/admin.php index 35903f86a3..347a952823 100644 --- a/src/messages/pl/admin.php +++ b/src/messages/pl/admin.php @@ -426,4 +426,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/pt/admin.php b/src/messages/pt/admin.php index 6a90e15b13..b1cd0f1fda 100644 --- a/src/messages/pt/admin.php +++ b/src/messages/pt/admin.php @@ -430,4 +430,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/ru/admin.php b/src/messages/ru/admin.php index 7a5da8cad1..5c58f02a03 100644 --- a/src/messages/ru/admin.php +++ b/src/messages/ru/admin.php @@ -432,4 +432,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/tr/admin.php b/src/messages/tr/admin.php index d58bc59e35..683b5c2411 100644 --- a/src/messages/tr/admin.php +++ b/src/messages/tr/admin.php @@ -429,4 +429,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/ua/admin.php b/src/messages/ua/admin.php index 513dd56523..88f50055e3 100644 --- a/src/messages/ua/admin.php +++ b/src/messages/ua/admin.php @@ -430,4 +430,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/vi/admin.php b/src/messages/vi/admin.php index 929ea76afa..239ee71ee4 100644 --- a/src/messages/vi/admin.php +++ b/src/messages/vi/admin.php @@ -429,4 +429,5 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'menu_node_themesmanager' => 'Themes', ]; From 47efb3d732e23fccd39a09b42c4d0a3e2360aea1 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Sun, 14 Jul 2019 19:36:17 +0200 Subject: [PATCH 04/18] Refactoring: Rename Themes tp ThemeManager --- src/apis/ThemesController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apis/ThemesController.php b/src/apis/ThemesController.php index f4d83e62f9..27972a4c0e 100644 --- a/src/apis/ThemesController.php +++ b/src/apis/ThemesController.php @@ -34,6 +34,6 @@ class ThemesController extends RestController */ public function actionIndex() { - return Yii::$app->themes->getThemes(); + return Yii::$app->themeManager->getThemes(); } } From e1c72243d2eb8e48313adc77d99afd78898e091e Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Sat, 27 Jul 2019 08:03:43 +0200 Subject: [PATCH 05/18] Travis mysql connection failed --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 70f1058c30..5e2e9acb8c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,9 @@ matrix: sudo: false +services: + - mysql + install: - travis_retry composer self-update && composer --version - export PATH="$HOME/.composer/vendor/bin:$PATH" From 41510d72b74dcd6ec0af8bd72ad890a7b9aaa1de Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Sun, 28 Jul 2019 12:53:07 +0200 Subject: [PATCH 06/18] admin cms settings --- src/Module.php | 4 +-- src/apis/ThemesController.php | 39 ---------------------------- src/controllers/ThemesController.php | 22 ---------------- src/messages/cn/admin.php | 1 - src/messages/de/admin.php | 1 - src/messages/el/admin.php | 1 - src/messages/en/admin.php | 1 - src/messages/es/admin.php | 1 - src/messages/fa/admin.php | 1 - src/messages/fr/admin.php | 1 - src/messages/it/admin.php | 1 - src/messages/nl/admin.php | 1 - src/messages/pl/admin.php | 1 - src/messages/pt/admin.php | 1 - src/messages/ru/admin.php | 1 - src/messages/tr/admin.php | 1 - src/messages/ua/admin.php | 1 - src/messages/vi/admin.php | 1 - 18 files changed, 1 insertion(+), 79 deletions(-) delete mode 100644 src/apis/ThemesController.php delete mode 100644 src/controllers/ThemesController.php diff --git a/src/Module.php b/src/Module.php index 6036e9b6d5..88ed0ef174 100644 --- a/src/Module.php +++ b/src/Module.php @@ -209,7 +209,6 @@ final class Module extends \luya\admin\base\Module implements CoreModuleInterfac 'api-admin-common' => 'luya\admin\apis\CommonController', 'api-admin-remote' => 'luya\admin\apis\RemoteController', 'api-admin-storage' => 'luya\admin\apis\StorageController', - 'api-admin-themes' => 'luya\admin\apis\ThemesController', 'api-admin-menu' => 'luya\admin\apis\MenuController', 'api-admin-timestamp' => 'luya\admin\apis\TimestampController', 'api-admin-search' => 'luya\admin\apis\SearchController', @@ -437,8 +436,7 @@ public function getMenu() ->itemApi('menu_images_item_filters', 'admin/filter/index', 'adjust', 'api-admin-filter') ->group('menu_group_contentproxy') ->itemApi('menu_group_contentproxy_machines', 'admin/proxy-machine/index', 'devices', 'api-admin-proxymachine') - ->itemApi('menu_group_contentproxy_builds', 'admin/proxy-build/index', 'import_export', 'api-admin-proxybuild') - ->nodeRoute('menu_node_themesmanager', 'invert_colors', 'admin/themes/index'); + ->itemApi('menu_group_contentproxy_builds', 'admin/proxy-build/index', 'import_export', 'api-admin-proxybuild'); } /** diff --git a/src/apis/ThemesController.php b/src/apis/ThemesController.php deleted file mode 100644 index 27972a4c0e..0000000000 --- a/src/apis/ThemesController.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @author Mateusz Szymański Teamwant - * @since 1.0.0 - */ -class ThemesController extends RestController -{ - use CacheableTrait; - - /** - * @var string The route which is used in the permission system - */ - const PERMISSION_ROUTE = 'admin/themes/index'; - - /** - * The index action returns all available themes. - * - * @return array - */ - public function actionIndex() - { - return Yii::$app->themeManager->getThemes(); - } -} diff --git a/src/controllers/ThemesController.php b/src/controllers/ThemesController.php deleted file mode 100644 index 4352183a0d..0000000000 --- a/src/controllers/ThemesController.php +++ /dev/null @@ -1,22 +0,0 @@ - - * @author Mateusz Szymański Teamwant - * @since 1.0.0 - */ -class ThemesController extends Controller -{ - public function actionIndex() - { - return $this->render('index'); - } -} diff --git a/src/messages/cn/admin.php b/src/messages/cn/admin.php index 7b3ae15737..a455f57402 100644 --- a/src/messages/cn/admin.php +++ b/src/messages/cn/admin.php @@ -429,5 +429,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/de/admin.php b/src/messages/de/admin.php index 153d931b3d..b479b51db0 100644 --- a/src/messages/de/admin.php +++ b/src/messages/de/admin.php @@ -431,5 +431,4 @@ 'status_true' => 'Ja', 'status_false' => 'Nein', 'js_jsonobject_newkey' => 'Neuer Schlüssel Name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/el/admin.php b/src/messages/el/admin.php index 504ff12ed1..d8d4533464 100644 --- a/src/messages/el/admin.php +++ b/src/messages/el/admin.php @@ -418,5 +418,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/en/admin.php b/src/messages/en/admin.php index 66f410b48c..41cc6a8083 100644 --- a/src/messages/en/admin.php +++ b/src/messages/en/admin.php @@ -429,5 +429,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/es/admin.php b/src/messages/es/admin.php index b22a8823ef..3ad71596fd 100644 --- a/src/messages/es/admin.php +++ b/src/messages/es/admin.php @@ -410,5 +410,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/fa/admin.php b/src/messages/fa/admin.php index 53f81b8779..5735e96432 100644 --- a/src/messages/fa/admin.php +++ b/src/messages/fa/admin.php @@ -410,5 +410,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/fr/admin.php b/src/messages/fr/admin.php index 7c66802837..5db086a4a1 100644 --- a/src/messages/fr/admin.php +++ b/src/messages/fr/admin.php @@ -429,5 +429,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/it/admin.php b/src/messages/it/admin.php index 081ab5172d..b12ffc14e9 100644 --- a/src/messages/it/admin.php +++ b/src/messages/it/admin.php @@ -418,5 +418,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/nl/admin.php b/src/messages/nl/admin.php index 5d7cfe484c..1a37b9fc8b 100644 --- a/src/messages/nl/admin.php +++ b/src/messages/nl/admin.php @@ -403,5 +403,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/pl/admin.php b/src/messages/pl/admin.php index 347a952823..35903f86a3 100644 --- a/src/messages/pl/admin.php +++ b/src/messages/pl/admin.php @@ -426,5 +426,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/pt/admin.php b/src/messages/pt/admin.php index b1cd0f1fda..6a90e15b13 100644 --- a/src/messages/pt/admin.php +++ b/src/messages/pt/admin.php @@ -430,5 +430,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/ru/admin.php b/src/messages/ru/admin.php index 5c58f02a03..7a5da8cad1 100644 --- a/src/messages/ru/admin.php +++ b/src/messages/ru/admin.php @@ -432,5 +432,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/tr/admin.php b/src/messages/tr/admin.php index 683b5c2411..d58bc59e35 100644 --- a/src/messages/tr/admin.php +++ b/src/messages/tr/admin.php @@ -429,5 +429,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/ua/admin.php b/src/messages/ua/admin.php index 88f50055e3..513dd56523 100644 --- a/src/messages/ua/admin.php +++ b/src/messages/ua/admin.php @@ -430,5 +430,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; diff --git a/src/messages/vi/admin.php b/src/messages/vi/admin.php index 239ee71ee4..929ea76afa 100644 --- a/src/messages/vi/admin.php +++ b/src/messages/vi/admin.php @@ -429,5 +429,4 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', - 'menu_node_themesmanager' => 'Themes', ]; From 56f30e179d40bb9e0761c48bdef6b653bce34bd7 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Tue, 30 Jul 2019 08:26:19 +0200 Subject: [PATCH 07/18] ActiveButton for toggle status --- src/buttons/ToggleStatusActiveButton.php | 107 +++++++++++++++++++++++ src/messages/cn/admin.php | 4 + src/messages/de/admin.php | 4 + src/messages/el/admin.php | 4 + src/messages/en/admin.php | 4 + src/messages/es/admin.php | 4 + src/messages/fa/admin.php | 4 + src/messages/fr/admin.php | 4 + src/messages/it/admin.php | 4 + src/messages/nl/admin.php | 4 + src/messages/pl/admin.php | 4 + src/messages/pt/admin.php | 4 + src/messages/ru/admin.php | 4 + src/messages/tr/admin.php | 4 + src/messages/ua/admin.php | 4 + src/messages/vi/admin.php | 4 + 16 files changed, 167 insertions(+) create mode 100644 src/buttons/ToggleStatusActiveButton.php diff --git a/src/buttons/ToggleStatusActiveButton.php b/src/buttons/ToggleStatusActiveButton.php new file mode 100644 index 0000000000..2a4fab6da6 --- /dev/null +++ b/src/buttons/ToggleStatusActiveButton.php @@ -0,0 +1,107 @@ + 'luya\admin\buttons\ToggleStatusActiveButton', + * 'attribute' => 'is_active', + * 'label' => 'Set active', + * ] + * ``` + * + * @author Bennet Klarhölter + * @since 2.2.0 + */ +class ToggleStatusActiveButton extends ActiveButton +{ + /** + * @var string The attribute which should set. + */ + public $attribute; + + /** + * @var bool Keep only one model with active status and disable all other entries. + */ + public $uniqueStatus = false; + + /** + * @var string + */ + public $modelNameAttribute = 'id'; + + /** + * {@inheritDoc} + */ + public function getDefaultIcon() + { + return 'toggle_on'; + } + + /** + * {@inheritDoc} + */ + public function getDefaultLabel() + { + return Module::t('active_button_togglestatus_label'); + } + + /** + * {@inheritDoc} + */ + public function init() + { + parent::init(); + + if (!$this->attribute) { + throw new InvalidConfigException("The attribute property can not be null."); + } + } + + /** + * {@inheritDoc} + */ + public function handle(NgRestModel $model) + { + $transaction = $model::getDb()->beginTransaction(); + + try { + $toggleStatus = !(bool)$model->getAttribute($this->attribute); + + if ($this->uniqueStatus) { + $model::updateAll([$this->attribute => false]); + $saved = $toggleStatus ? $model->updateAttributes([$this->attribute => $toggleStatus]) : true; + } else { + $saved = $model->updateAttributes([$this->attribute => $toggleStatus]); + } + + $transaction->commit(); + + if ($saved) { + $this->sendReloadEvent(); + if ($toggleStatus) { + return $this->sendSuccess(Module::t('active_button_togglestatus_enabled', ['modelName' => $model->{$this->modelNameAttribute}])); + } else { + return $this->sendSuccess(Module::t('active_button_togglestatus_disabled', ['modelName' => $model->{$this->modelNameAttribute}])); + } + } + } catch (\Throwable $ex) { + $transaction->rollBack(); + throw $ex; + } + + return $this->sendError(Module::t('active_button_togglestatus_error')); + } +} diff --git a/src/messages/cn/admin.php b/src/messages/cn/admin.php index a455f57402..a86e842ab5 100644 --- a/src/messages/cn/admin.php +++ b/src/messages/cn/admin.php @@ -429,4 +429,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/de/admin.php b/src/messages/de/admin.php index b479b51db0..5af13d931a 100644 --- a/src/messages/de/admin.php +++ b/src/messages/de/admin.php @@ -431,4 +431,8 @@ 'status_true' => 'Ja', 'status_false' => 'Nein', 'js_jsonobject_newkey' => 'Neuer Schlüssel Name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/el/admin.php b/src/messages/el/admin.php index d8d4533464..a865c47196 100644 --- a/src/messages/el/admin.php +++ b/src/messages/el/admin.php @@ -418,4 +418,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/en/admin.php b/src/messages/en/admin.php index 41cc6a8083..036ca98d71 100644 --- a/src/messages/en/admin.php +++ b/src/messages/en/admin.php @@ -429,4 +429,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/es/admin.php b/src/messages/es/admin.php index 3ad71596fd..369646d56a 100644 --- a/src/messages/es/admin.php +++ b/src/messages/es/admin.php @@ -410,4 +410,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/fa/admin.php b/src/messages/fa/admin.php index 5735e96432..36747a7945 100644 --- a/src/messages/fa/admin.php +++ b/src/messages/fa/admin.php @@ -410,4 +410,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/fr/admin.php b/src/messages/fr/admin.php index 5db086a4a1..0e336b8475 100644 --- a/src/messages/fr/admin.php +++ b/src/messages/fr/admin.php @@ -429,4 +429,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/it/admin.php b/src/messages/it/admin.php index b12ffc14e9..9a6fd30c50 100644 --- a/src/messages/it/admin.php +++ b/src/messages/it/admin.php @@ -418,4 +418,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/nl/admin.php b/src/messages/nl/admin.php index 1a37b9fc8b..5c0d79ddfa 100644 --- a/src/messages/nl/admin.php +++ b/src/messages/nl/admin.php @@ -403,4 +403,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/pl/admin.php b/src/messages/pl/admin.php index 35903f86a3..95acb49b5f 100644 --- a/src/messages/pl/admin.php +++ b/src/messages/pl/admin.php @@ -426,4 +426,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/pt/admin.php b/src/messages/pt/admin.php index 6a90e15b13..ab9ce56a13 100644 --- a/src/messages/pt/admin.php +++ b/src/messages/pt/admin.php @@ -430,4 +430,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/ru/admin.php b/src/messages/ru/admin.php index 7a5da8cad1..f23bd86c0d 100644 --- a/src/messages/ru/admin.php +++ b/src/messages/ru/admin.php @@ -432,4 +432,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/tr/admin.php b/src/messages/tr/admin.php index d58bc59e35..8231a644e4 100644 --- a/src/messages/tr/admin.php +++ b/src/messages/tr/admin.php @@ -429,4 +429,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/ua/admin.php b/src/messages/ua/admin.php index 513dd56523..5ecf288f26 100644 --- a/src/messages/ua/admin.php +++ b/src/messages/ua/admin.php @@ -430,4 +430,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; diff --git a/src/messages/vi/admin.php b/src/messages/vi/admin.php index 929ea76afa..20a9efa933 100644 --- a/src/messages/vi/admin.php +++ b/src/messages/vi/admin.php @@ -429,4 +429,8 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + 'active_button_togglestatus_label' => 'Toggle status', + 'active_button_togglestatus_error' => 'Could not activated', + 'active_button_togglestatus_enabled' => '{modelName} enabled', + 'active_button_togglestatus_disabled' => '{modelName} disabled', ]; From 2a76be7ec97ce85cfe250bdbe1c04f73b1dcce1a Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:16:18 +0200 Subject: [PATCH 08/18] Moved Theme administration to cmsadmin --- src/resources/js/directives.js | 42 ------------------------ src/views/layouts/_angulardirectives.php | 13 -------- src/views/themes/index.php | 8 ----- 3 files changed, 63 deletions(-) delete mode 100644 src/views/themes/index.php diff --git a/src/resources/js/directives.js b/src/resources/js/directives.js index 4ef14d8828..062d25b042 100755 --- a/src/resources/js/directives.js +++ b/src/resources/js/directives.js @@ -3490,45 +3490,3 @@ zaa.directive('pagination', function () { `, }; }); - - /** - * Themes - */ - zaa.directive("themesManager", function() { - return { - restrict : 'E', - transclude : false, - scope : { - allowSelection : '@selection', - onlyImages : '@onlyImages' - }, - controller : [ - '$scope', '$http', '$filter', '$timeout', '$q', 'Upload', 'ServiceFoldersData', 'ServiceFilesData', 'LuyaLoading', 'AdminToastService', 'ServiceFoldersDirecotryId', 'ServiceAdminTags', - function($scope, $http, $filter, $timeout, $q, Upload, ServiceFoldersData, ServiceFilesData, LuyaLoading, AdminToastService, ServiceFoldersDirecotryId, ServiceAdminTags) { - - // ServiceFoldersData inheritance - - $scope.foldersData = ServiceFoldersData.data; - - $scope.storeFileCaption = function(fileDetail) { - $http.post('admin/api-admin-storage/filemanager-update-caption', {'id': fileDetail.id, 'captionsText' : fileDetail.captionArray, 'pageId': $scope.currentPageId}).then(function(transport) { - // @TODO i18n - AdminToastService.success('Captions has been updated'); - }); - } - - $scope.selectedFileFromParent = null; - - $scope.init = function() { - if ($scope.$parent.fileinfo) { - $scope.selectedFileFromParent = $scope.$parent.fileinfo; - $scope.changeCurrentFolderId($scope.selectedFileFromParent.folder_id, true); - } - } - - $scope.init(); - - }], - templateUrl : 'themesManager' - } - }); diff --git a/src/views/layouts/_angulardirectives.php b/src/views/layouts/_angulardirectives.php index 264f0e23f6..56aaf144a8 100644 --- a/src/views/layouts/_angulardirectives.php +++ b/src/views/layouts/_angulardirectives.php @@ -484,18 +484,5 @@ class="badge badge-pill mx-1 mb-2" - - - - diff --git a/src/views/themes/index.php b/src/views/themes/index.php deleted file mode 100644 index 129899ea2b..0000000000 --- a/src/views/themes/index.php +++ /dev/null @@ -1,8 +0,0 @@ - -
- Load Model Themes - -
\ No newline at end of file From a751f6610e332ba90a57dcb21c7d7e980ba8f270 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:36:03 +0200 Subject: [PATCH 09/18] Refactoring --- src/buttons/ToggleStatusActiveButton.php | 37 +++++++++++++++++------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/buttons/ToggleStatusActiveButton.php b/src/buttons/ToggleStatusActiveButton.php index 2a4fab6da6..5ed92f9923 100644 --- a/src/buttons/ToggleStatusActiveButton.php +++ b/src/buttons/ToggleStatusActiveButton.php @@ -2,6 +2,7 @@ namespace luya\admin\buttons; +use yii\base\InvalidArgumentException; use yii\base\InvalidConfigException; use luya\admin\Module; use luya\admin\ngrest\base\ActiveButton; @@ -32,6 +33,10 @@ class ToggleStatusActiveButton extends ActiveButton */ public $attribute; + public $enableValue = true; + + public $disableValue = false; + /** * @var bool Keep only one model with active status and disable all other entries. */ @@ -78,24 +83,22 @@ public function handle(NgRestModel $model) $transaction = $model::getDb()->beginTransaction(); try { - $toggleStatus = !(bool)$model->getAttribute($this->attribute); + $newValue = $this->toggleValue($model->getAttribute($this->attribute)); if ($this->uniqueStatus) { - $model::updateAll([$this->attribute => false]); - $saved = $toggleStatus ? $model->updateAttributes([$this->attribute => $toggleStatus]) : true; + $model::updateAll([$this->attribute => $this->disableValue]); + $model->updateAttributes([$this->attribute => $newValue]); } else { - $saved = $model->updateAttributes([$this->attribute => $toggleStatus]); + $model->updateAttributes([$this->attribute => $newValue]); } $transaction->commit(); - if ($saved) { - $this->sendReloadEvent(); - if ($toggleStatus) { - return $this->sendSuccess(Module::t('active_button_togglestatus_enabled', ['modelName' => $model->{$this->modelNameAttribute}])); - } else { - return $this->sendSuccess(Module::t('active_button_togglestatus_disabled', ['modelName' => $model->{$this->modelNameAttribute}])); - } + $this->sendReloadEvent(); + if ($newValue) { + return $this->sendSuccess(Module::t('active_button_togglestatus_enabled', ['modelName' => $model->{$this->modelNameAttribute}])); + } else { + return $this->sendSuccess(Module::t('active_button_togglestatus_disabled', ['modelName' => $model->{$this->modelNameAttribute}])); } } catch (\Throwable $ex) { $transaction->rollBack(); @@ -104,4 +107,16 @@ public function handle(NgRestModel $model) return $this->sendError(Module::t('active_button_togglestatus_error')); } + + private function toggleValue($value) + { + switch ($value) { + case $this->disableValue: + return $this->enableValue; + case $this->enableValue: + return $this->disableValue; + default: + throw new InvalidArgumentException("The value '$value' could not toggled."); + } + } } From a12b959bdc93c4fc60980dadab1ce27fdff987b6 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:40:15 +0200 Subject: [PATCH 10/18] Changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e7e21eec4..98a2c72e32 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). In order to read more about upgrading and BC breaks have a look at the [UPGRADE Document](UPGRADE.md). +## 2.2.0 (in progress) + +### Added + +# [#338](https://github.com/luyadev/luya-module-admin/pull/338) Toggle button for ngRestModel to switch between enable and disable status. + ## 2.1.0 (22. July 2019) ### Fixed From f0662edcdbe696317095635b2023c32180619407 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:42:32 +0200 Subject: [PATCH 11/18] Refactoring --- src/views/layouts/_angulardirectives.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/views/layouts/_angulardirectives.php b/src/views/layouts/_angulardirectives.php index 56aaf144a8..3753ad6ce6 100644 --- a/src/views/layouts/_angulardirectives.php +++ b/src/views/layouts/_angulardirectives.php @@ -483,6 +483,4 @@ class="badge badge-pill mx-1 mb-2" - - From 6dad692210e754df294cadbad7b80fcc54f2d67e Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:45:06 +0200 Subject: [PATCH 12/18] Refactoring --- src/messages/cn/admin.php | 3 +++ src/messages/de/admin.php | 3 +++ src/messages/el/admin.php | 3 +++ src/messages/en/admin.php | 3 +++ src/messages/es/admin.php | 3 +++ src/messages/fa/admin.php | 3 +++ src/messages/fr/admin.php | 3 +++ src/messages/it/admin.php | 3 +++ src/messages/nl/admin.php | 3 +++ src/messages/pl/admin.php | 3 +++ src/messages/pt/admin.php | 3 +++ src/messages/ru/admin.php | 3 +++ src/messages/tr/admin.php | 3 +++ src/messages/ua/admin.php | 3 +++ src/messages/vi/admin.php | 3 +++ src/views/themes/index.php | 8 ++++++++ 16 files changed, 53 insertions(+) create mode 100644 src/views/themes/index.php diff --git a/src/messages/cn/admin.php b/src/messages/cn/admin.php index a86e842ab5..95c55e7c40 100644 --- a/src/messages/cn/admin.php +++ b/src/messages/cn/admin.php @@ -429,6 +429,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/de/admin.php b/src/messages/de/admin.php index 5af13d931a..0d01d47f9d 100644 --- a/src/messages/de/admin.php +++ b/src/messages/de/admin.php @@ -431,6 +431,9 @@ 'status_true' => 'Ja', 'status_false' => 'Nein', 'js_jsonobject_newkey' => 'Neuer Schlüssel Name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/el/admin.php b/src/messages/el/admin.php index a865c47196..85ad2e345e 100644 --- a/src/messages/el/admin.php +++ b/src/messages/el/admin.php @@ -418,6 +418,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/en/admin.php b/src/messages/en/admin.php index 036ca98d71..280c7fb00f 100644 --- a/src/messages/en/admin.php +++ b/src/messages/en/admin.php @@ -429,6 +429,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/es/admin.php b/src/messages/es/admin.php index 369646d56a..e4b2450b0f 100644 --- a/src/messages/es/admin.php +++ b/src/messages/es/admin.php @@ -410,6 +410,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/fa/admin.php b/src/messages/fa/admin.php index 36747a7945..64af14dcb1 100644 --- a/src/messages/fa/admin.php +++ b/src/messages/fa/admin.php @@ -410,6 +410,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/fr/admin.php b/src/messages/fr/admin.php index 0e336b8475..a5ea6d4093 100644 --- a/src/messages/fr/admin.php +++ b/src/messages/fr/admin.php @@ -429,6 +429,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/it/admin.php b/src/messages/it/admin.php index 9a6fd30c50..b6b1b851e7 100644 --- a/src/messages/it/admin.php +++ b/src/messages/it/admin.php @@ -418,6 +418,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/nl/admin.php b/src/messages/nl/admin.php index 5c0d79ddfa..0a6962387e 100644 --- a/src/messages/nl/admin.php +++ b/src/messages/nl/admin.php @@ -403,6 +403,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/pl/admin.php b/src/messages/pl/admin.php index 95acb49b5f..6689c1e965 100644 --- a/src/messages/pl/admin.php +++ b/src/messages/pl/admin.php @@ -426,6 +426,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/pt/admin.php b/src/messages/pt/admin.php index ab9ce56a13..bb59540279 100644 --- a/src/messages/pt/admin.php +++ b/src/messages/pt/admin.php @@ -430,6 +430,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/ru/admin.php b/src/messages/ru/admin.php index f23bd86c0d..a4edcb79c7 100644 --- a/src/messages/ru/admin.php +++ b/src/messages/ru/admin.php @@ -432,6 +432,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/tr/admin.php b/src/messages/tr/admin.php index 8231a644e4..a997530793 100644 --- a/src/messages/tr/admin.php +++ b/src/messages/tr/admin.php @@ -429,6 +429,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/ua/admin.php b/src/messages/ua/admin.php index 5ecf288f26..378020c19c 100644 --- a/src/messages/ua/admin.php +++ b/src/messages/ua/admin.php @@ -430,6 +430,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/messages/vi/admin.php b/src/messages/vi/admin.php index 20a9efa933..8fa833e1c3 100644 --- a/src/messages/vi/admin.php +++ b/src/messages/vi/admin.php @@ -429,6 +429,9 @@ 'status_true' => 'Yes', 'status_false' => 'No', 'js_jsonobject_newkey' => 'New key name', + +// 2.2.0 + 'active_button_togglestatus_label' => 'Toggle status', 'active_button_togglestatus_error' => 'Could not activated', 'active_button_togglestatus_enabled' => '{modelName} enabled', diff --git a/src/views/themes/index.php b/src/views/themes/index.php new file mode 100644 index 0000000000..129899ea2b --- /dev/null +++ b/src/views/themes/index.php @@ -0,0 +1,8 @@ + +
+ Load Model Themes + +
\ No newline at end of file From 02c6d4872f0c77cb2a2c9aa8ea5390b6b9458971 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Wed, 31 Jul 2019 07:46:30 +0200 Subject: [PATCH 13/18] Refactoring --- src/views/themes/index.php | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 src/views/themes/index.php diff --git a/src/views/themes/index.php b/src/views/themes/index.php deleted file mode 100644 index 129899ea2b..0000000000 --- a/src/views/themes/index.php +++ /dev/null @@ -1,8 +0,0 @@ - -
- Load Model Themes - -
\ No newline at end of file From e12eba45467c81ba125246f7888755ab86874d0e Mon Sep 17 00:00:00 2001 From: Basil Date: Thu, 1 Aug 2019 09:34:40 +0200 Subject: [PATCH 14/18] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98a2c72e32..3052bbdb0d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ In order to read more about upgrading and BC breaks have a look at the [UPGRADE ### Added -# [#338](https://github.com/luyadev/luya-module-admin/pull/338) Toggle button for ngRestModel to switch between enable and disable status. ++ [#338](https://github.com/luyadev/luya-module-admin/pull/338) Toggle button for ngRestModel to switch between enable and disable status. ## 2.1.0 (22. July 2019) From 0fe9c8c2569b9b963773df4cbb65d5dc797629c2 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Thu, 1 Aug 2019 20:36:54 +0200 Subject: [PATCH 15/18] Unittest fpr toggle button --- src/buttons/ToggleStatusActiveButton.php | 23 +++++++- .../buttons/ToggleStatusActiveButtonTest.php | 57 +++++++++++++++++++ 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 tests/admin/buttons/ToggleStatusActiveButtonTest.php diff --git a/src/buttons/ToggleStatusActiveButton.php b/src/buttons/ToggleStatusActiveButton.php index 5ed92f9923..803b989edb 100644 --- a/src/buttons/ToggleStatusActiveButton.php +++ b/src/buttons/ToggleStatusActiveButton.php @@ -33,16 +33,26 @@ class ToggleStatusActiveButton extends ActiveButton */ public $attribute; + /** + * Value which will saved to the model as active status. + * @var mixed + */ public $enableValue = true; + /** + * Value which will saved to the model as inactive status. + * @var mixed + */ public $disableValue = false; /** - * @var bool Keep only one model with active status and disable all other entries. + * Keep only one model with active status and disable all other entries. + * @var bool */ public $uniqueStatus = false; /** + * Attribute name for the success notification. * @var string */ public $modelNameAttribute = 'id'; @@ -69,9 +79,9 @@ public function getDefaultLabel() public function init() { parent::init(); - + if (!$this->attribute) { - throw new InvalidConfigException("The attribute property can not be null."); + throw new InvalidConfigException("The attribute property must be set."); } } @@ -108,6 +118,13 @@ public function handle(NgRestModel $model) return $this->sendError(Module::t('active_button_togglestatus_error')); } + /** + * Return the opposite attribute value for $enableValue or $disableValue. + * + * @param $value + * + * @return mixed + */ private function toggleValue($value) { switch ($value) { diff --git a/tests/admin/buttons/ToggleStatusActiveButtonTest.php b/tests/admin/buttons/ToggleStatusActiveButtonTest.php new file mode 100644 index 0000000000..e6b78c5566 --- /dev/null +++ b/tests/admin/buttons/ToggleStatusActiveButtonTest.php @@ -0,0 +1,57 @@ + Lang::class, + ]); + + /** @var Lang $modelEn */ + $modelEn = $fixture->newModel; + $modelEn->short_code = 'en'; + $modelEn->name = 'English'; + $modelEn->is_default = 1; + $modelEn->is_deleted = 0; + $modelEn->insert(false); + $modelEn->refresh(); + + $this->assertTrue($modelEn->is_default, "English must be default before toggle."); + + /** @var Lang $modelFr */ + $modelFr = $fixture->newModel; + $modelFr->short_code = 'fr'; + $modelFr->name = 'Francais'; + $modelFr->is_default = 0; + $modelFr->is_deleted = 0; + $modelFr->insert(false); + $modelFr->refresh(); + + $this->assertFalse($modelFr->is_default, "Francais must be default before toggle."); + + $button = new ToggleStatusActiveButton([ + 'attribute' => 'is_default', + 'uniqueStatus' => true, + ]); + $result = $button->handle($modelFr); + + $this->assertTrue($result['success']); + $this->assertEquals('active_button_togglestatus_enabled', $result['message']); + + $modelFr->refresh(); + $this->assertTrue($modelFr->is_default, "Francais must be default after toggle."); + + $modelEn->refresh(); + $this->assertFalse($modelEn->is_default, "English must not be default after toggle."); + } +} From 590d5d859be6897e0374e4329a2f10a73536e868 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Thu, 8 Aug 2019 20:18:04 +0200 Subject: [PATCH 16/18] Test custom enable values close #338 --- .../buttons/ToggleStatusActiveButtonTest.php | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/admin/buttons/ToggleStatusActiveButtonTest.php b/tests/admin/buttons/ToggleStatusActiveButtonTest.php index e6b78c5566..ea72ef67c2 100644 --- a/tests/admin/buttons/ToggleStatusActiveButtonTest.php +++ b/tests/admin/buttons/ToggleStatusActiveButtonTest.php @@ -11,7 +11,7 @@ class ToggleStatusActiveButtonTest extends NgRestTestCase { public $modelClass = Lang::class; - public function testHandle() + public function testHandleUniqueStatus() { $fixture = new NgRestModelFixture([ 'modelClass' => Lang::class, @@ -54,4 +54,30 @@ public function testHandle() $modelEn->refresh(); $this->assertFalse($modelEn->is_default, "English must not be default after toggle."); } + + public function testHandleCustomValues() + { + $fixture = new NgRestModelFixture([ + 'modelClass' => Lang::class, + ]); + + /** @var Lang $model */ + $model = $fixture->newModel; + $model->name = 'English'; + $model->is_default = 'off'; + + $button = new ToggleStatusActiveButton([ + 'attribute' => 'is_default', + 'enableValue' => 'on', + 'disableValue' => 'off', + ]); + + // toggle on + $result = $button->handle($model); + $this->assertEquals('on', $model->is_default, "Default value must be on"); + + // toggle off + $result = $button->handle($model); + $this->assertEquals('off', $model->is_default, "Default value must be off"); + } } From a0f55fd43dbc15a702652d0041ee343e906bed1b Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Thu, 8 Aug 2019 20:24:22 +0200 Subject: [PATCH 17/18] Unit test for non unique toggle --- src/buttons/ToggleStatusActiveButton.php | 2 +- .../buttons/ToggleStatusActiveButtonTest.php | 47 ++++++++++++++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/buttons/ToggleStatusActiveButton.php b/src/buttons/ToggleStatusActiveButton.php index 803b989edb..46d9197a09 100644 --- a/src/buttons/ToggleStatusActiveButton.php +++ b/src/buttons/ToggleStatusActiveButton.php @@ -105,7 +105,7 @@ public function handle(NgRestModel $model) $transaction->commit(); $this->sendReloadEvent(); - if ($newValue) { + if ($newValue == $this->enableValue) { return $this->sendSuccess(Module::t('active_button_togglestatus_enabled', ['modelName' => $model->{$this->modelNameAttribute}])); } else { return $this->sendSuccess(Module::t('active_button_togglestatus_disabled', ['modelName' => $model->{$this->modelNameAttribute}])); diff --git a/tests/admin/buttons/ToggleStatusActiveButtonTest.php b/tests/admin/buttons/ToggleStatusActiveButtonTest.php index ea72ef67c2..8e5308acb3 100644 --- a/tests/admin/buttons/ToggleStatusActiveButtonTest.php +++ b/tests/admin/buttons/ToggleStatusActiveButtonTest.php @@ -11,6 +11,47 @@ class ToggleStatusActiveButtonTest extends NgRestTestCase { public $modelClass = Lang::class; + public function testHandleNoneUnique() + { + $fixture = new NgRestModelFixture([ + 'modelClass' => Lang::class, + ]); + + /** @var Lang $modelEn */ + $modelEn = $fixture->newModel; + $modelEn->short_code = 'en'; + $modelEn->name = 'English'; + $modelEn->is_default = 1; + $modelEn->insert(false); + $modelEn->refresh(); + + $this->assertTrue($modelEn->is_default, "English must be default before toggle."); + + /** @var Lang $modelFr */ + $modelFr = $fixture->newModel; + $modelFr->short_code = 'fr'; + $modelFr->name = 'Francais'; + $modelFr->is_default = 0; + $modelFr->insert(false); + $modelFr->refresh(); + + $this->assertFalse($modelFr->is_default, "Francais must not be default before toggle."); + + $button = new ToggleStatusActiveButton([ + 'attribute' => 'is_default', + ]); + $result = $button->handle($modelFr); + + $this->assertTrue($result['success']); + $this->assertEquals('active_button_togglestatus_enabled', $result['message']); + + $modelFr->refresh(); + $this->assertTrue($modelFr->is_default, "Francais must be default after toggle too."); + + $modelEn->refresh(); + $this->assertTrue($modelEn->is_default, "English must be still default after toggle."); + } + public function testHandleUniqueStatus() { $fixture = new NgRestModelFixture([ @@ -37,7 +78,7 @@ public function testHandleUniqueStatus() $modelFr->insert(false); $modelFr->refresh(); - $this->assertFalse($modelFr->is_default, "Francais must be default before toggle."); + $this->assertFalse($modelFr->is_default, "Francais must not be default before toggle."); $button = new ToggleStatusActiveButton([ 'attribute' => 'is_default', @@ -74,10 +115,14 @@ public function testHandleCustomValues() // toggle on $result = $button->handle($model); + $this->assertTrue($result['success']); + $this->assertEquals('active_button_togglestatus_enabled', $result['message']); $this->assertEquals('on', $model->is_default, "Default value must be on"); // toggle off $result = $button->handle($model); + $this->assertTrue($result['success']); + $this->assertEquals('active_button_togglestatus_disabled', $result['message']); $this->assertEquals('off', $model->is_default, "Default value must be off"); } } From b1ed3b82a2275b2369e8d96688b307d2c09c1c66 Mon Sep 17 00:00:00 2001 From: boehsermoe Date: Thu, 8 Aug 2019 20:58:16 +0200 Subject: [PATCH 18/18] More unit test for full coverage --- .../buttons/ToggleStatusActiveButtonTest.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tests/admin/buttons/ToggleStatusActiveButtonTest.php b/tests/admin/buttons/ToggleStatusActiveButtonTest.php index 8e5308acb3..3d389e3476 100644 --- a/tests/admin/buttons/ToggleStatusActiveButtonTest.php +++ b/tests/admin/buttons/ToggleStatusActiveButtonTest.php @@ -6,11 +6,24 @@ use luya\admin\models\Lang; use luya\admin\tests\NgRestTestCase; use luya\testsuite\fixtures\NgRestModelFixture; +use yii\base\InvalidArgumentException; +use yii\base\InvalidConfigException; +use yii\base\UnknownPropertyException; class ToggleStatusActiveButtonTest extends NgRestTestCase { public $modelClass = Lang::class; + public function testWrongConfiguration() + { + $this->expectException(InvalidConfigException::class); + $this->expectExceptionMessage("The attribute property must be set."); + + $button = new ToggleStatusActiveButton([ + 'attribute' => '', + ]); + } + public function testHandleNoneUnique() { $fixture = new NgRestModelFixture([ @@ -125,4 +138,56 @@ public function testHandleCustomValues() $this->assertEquals('active_button_togglestatus_disabled', $result['message']); $this->assertEquals('off', $model->is_default, "Default value must be off"); } + + public function testInvalidValue() + { + $fixture = new NgRestModelFixture([ + 'modelClass' => Lang::class, + ]); + + /** @var Lang $model */ + $model = $fixture->newModel; + $model->name = 'English'; + $model->is_default = 1; + + $button = new ToggleStatusActiveButton([ + 'attribute' => 'is_default', + 'enableValue' => 'on', + 'disableValue' => 'off', + ]); + + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage("The value '1' could not toggled."); + $button->handle($model); + } + + public function testUnknownAttribute() + { + $fixture = new NgRestModelFixture([ + 'modelClass' => Lang::class, + ]); + + /** @var Lang $model */ + $model = $fixture->newModel; + $model->name = 'English'; + $model->is_default = 1; + + $button = new ToggleStatusActiveButton([ + 'attribute' => 'foo', + ]); + + $this->expectException(UnknownPropertyException::class); + $this->expectExceptionMessage("Setting unknown property: luya\admin\models\Lang::foo"); + $button->handle($model); + } + + public function testLabelAndIcon() + { + $button = new ToggleStatusActiveButton([ + 'attribute' => 'foo', + ]); + + $this->assertEquals("active_button_togglestatus_label", $button->getDefaultLabel()); + $this->assertEquals("toggle_on", $button->getDefaultIcon()); + } }