From 9f7bd0bfabec27afb246cab04b50ff65c0637584 Mon Sep 17 00:00:00 2001 From: jcheron Date: Sat, 10 Mar 2018 13:42:29 +0100 Subject: [PATCH] check for urls file --- .../admin/UbiquityMyAdminBaseController.php | 21 ++++++++++++++++--- .../controllers/admin/popo/ControllerSeo.php | 5 +++++ .../controllers/admin/traits/SeoTrait.php | 4 +++- Ubiquity/controllers/seo/SeoController.php | 6 +++++- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Ubiquity/controllers/admin/UbiquityMyAdminBaseController.php b/Ubiquity/controllers/admin/UbiquityMyAdminBaseController.php index 23dc03980..2bd448641 100644 --- a/Ubiquity/controllers/admin/UbiquityMyAdminBaseController.php +++ b/Ubiquity/controllers/admin/UbiquityMyAdminBaseController.php @@ -275,10 +275,25 @@ protected function _seo(){ $dtCtrl->setFields(['name','urlsFile','siteMapTemplate','route','inRobots','see']); $dtCtrl->setIdentifierFunction('getName'); $dtCtrl->setCaptions(['Controller name','Urls file','SiteMap template','Route','In robots?','']); - $dtCtrl->fieldAsLabel('route','car'); + $dtCtrl->fieldAsLabel('route','car',['jsCallback'=>function($lbl,$instance,$i,$index){if($instance->getRoute()==""){$lbl->setProperty('style','display:none;');}}]); $dtCtrl->fieldAsCheckbox('inRobots',['type'=>'toggle','disabled'=>true]); - $dtCtrl->setValueFunction('see',function($value,$instance,$index){$bt=new HtmlButton('see-'.$index,'','_see circular basic right floated');$bt->setProperty("data-ajax", $instance->getName());$bt->asIcon('eye'); return $bt;}); - + $dtCtrl->setValueFunction('see',function($value,$instance,$index){ + if($instance->urlExists()){ + $bt=new HtmlButton('see-'.$index,'','_see circular basic right floated'); + $bt->setProperty("data-ajax", $instance->getName()); + $bt->asIcon('eye'); + return $bt; + } + }); + $dtCtrl->setValueFunction('urlsFile', function($value,$instance,$index){ + if(!$instance->urlExists()){ + $elm=new HtmlSemDoubleElement('urls-'.$index,'span','',$value); + $elm->addIcon("warning circle red"); + $elm->addPopup("Missing",$value.' is missing!'); + return $elm; + } + return $value; + }); $dtCtrl->addDeleteButton(false,[],function($bt){$bt->setProperty('class','ui circular basic red right floated icon button _delete');}); $dtCtrl->setTargetSelector(["delete"=>"#messages"]); $dtCtrl->setUrls(["delete"=>$this->_getAdminFiles()->getAdminBaseRoute()."/deleteSeoController"]); diff --git a/Ubiquity/controllers/admin/popo/ControllerSeo.php b/Ubiquity/controllers/admin/popo/ControllerSeo.php index 4a51bcdc6..d798a82e5 100644 --- a/Ubiquity/controllers/admin/popo/ControllerSeo.php +++ b/Ubiquity/controllers/admin/popo/ControllerSeo.php @@ -6,6 +6,7 @@ use Ubiquity\controllers\Router; use Ubiquity\utils\base\UFileSystem; use Ubiquity\utils\base\UString; +use Ubiquity\controllers\seo\SeoController; class ControllerSeo{ private $name; @@ -88,6 +89,10 @@ public function getPath(){ $parts=\explode("\\", $this->name); return end($parts); } + + public function urlExists(){ + return CacheManager::$cache->exists($this->urlsFile); + } public static function init(){ $result=[ ]; diff --git a/Ubiquity/controllers/admin/traits/SeoTrait.php b/Ubiquity/controllers/admin/traits/SeoTrait.php index de8e93928..d8f9244d2 100644 --- a/Ubiquity/controllers/admin/traits/SeoTrait.php +++ b/Ubiquity/controllers/admin/traits/SeoTrait.php @@ -85,7 +85,9 @@ public function displaySiteMap(...$params) { $dt->setSubmitParams($this->_getAdminFiles()->getAdminBaseRoute() . "/saveUrls", "#seo-details", [ 'attr' => '' ]); $this->jquery->execOn("click", "#saveUrls", '$("#frm-dtSiteMap").form("submit");'); $this->jquery->exec('$("#displayAllRoutes").checkbox();',true); - $this->jquery->click('#displayAllRoutes', '$(".toToggle").toggle();'); + $this->jquery->execOn('change', 'input[name="selection[]"]', '$(this).parents("tr").toggleClass("_checked",$(this).prop("checked"));'); + $this->jquery->click('#displayAllRoutes', '$(".toToggle:not(._checked)").toggle();'); + $this->jquery->execAtLast($this->jquery->execOn('change', '#frm-dtSiteMap input', '$("#saveUrls").show();',["immediatly"=>false])); $this->jquery->compile($this->view); $this->loadView($this->_getAdminFiles()->getViewSeoDetails(), [ "controllerClass" => $controllerClass,"urlsFile" => $controllerSeo->_getUrlsFilename() ]); diff --git a/Ubiquity/controllers/seo/SeoController.php b/Ubiquity/controllers/seo/SeoController.php index 40213c4ec..7a64a3a57 100644 --- a/Ubiquity/controllers/seo/SeoController.php +++ b/Ubiquity/controllers/seo/SeoController.php @@ -53,7 +53,11 @@ public function _getArrayUrls() { * @return string */ public function _getUrlsFilename() { - return self::SEO_PREFIX . DS . $this->urlsKey; + return self::getUrlsFileName($this->urlsKey); + } + + public static function getUrlsFileName($urlsKey){ + return self::SEO_PREFIX.DS.$urlsKey; } /**