/** * 修改一条导航信息 * * @param object $dm导航数据模型 * @return array */ public function updateNav(PwNavDm $dm) { $resource = $dm->beforeUpdate(); if ($resource instanceof PwError) { return $resource; } $data = $dm->getData(); $data['rootid'] = $data['parentid'] ? $data['parentid'] : $dm->navid; return $this->_getNavDao()->updateNav($dm->navid, $data); }
/** * 导航批量修改处理器 * * @return void */ public function dorunAction() { $homeUrl = ''; Wekit::load('SRV:nav.dm.PwNavDm'); $dms = $newDms = $datas = $newdatas = array(); list($posts, $newposts, $navtype) = $this->getInput(array('data', 'newdata', 'navtype'), 'post'); $homeid = $this->getInput('home', 'post'); foreach ($posts as $post) { if (!$post['name'] || !$navtype) { continue; } if ($navtype == 'my') { $router = $post['sign']; } else { $router = Wind::getComponent('router')->getRoute('pw')->matchUrl($post['link']); } Wekit::load('SRV:nav.dm.PwNavDm'); $dm = new PwNavDm($post['navid']); $dm->setName($post['name'])->setLink($post['link'])->setSign($router)->setOrderid($post['orderid'])->setIsshow($post['isshow']); $resource = $dm->beforeUpdate(); if ($resource instanceof PwError) { $this->showError($resource->getError()); break; } $dms[] = $dm; if ($post['navid'] == $homeid) { $homeUrl = $post['link']; } } foreach ($newposts as $k => $newpost) { if (!$newpost['name'] || !$navtype) { continue; } if ($navtype == 'my') { $router = $newpost['sign']; } else { $router = Wind::getComponent('router')->getRoute('pw')->matchUrl($newpost['link']); } Wekit::load('SRV:nav.dm.PwNavDm'); list($isroot, $id) = explode('_', $k); $dm = new PwNavDm(); if ($isroot == 'root') { $dm->setParentid(0); } elseif ($isroot == 'child') { if (is_numeric($newpost['parentid'])) { $dm->setParentid($newpost['parentid']); } else { $dm->setParentid((int) $resource); } } $dm->setName($newpost['name'])->setLink($newpost['link'])->setSign($router)->setOrderid($newpost['orderid'])->setIsshow($newpost['isshow'])->setTempid($newpost['tempid'])->setType($navtype); $resource = $this->_getNavDs()->addNav($dm); if ($resource instanceof PwError) { $this->showError($resource->getError()); break; } if ($homeid == 'home_' . $k) { $homeUrl = $newpost['link']; } } if ($homeUrl) { $config = new PwConfigSet('site'); $homeRouter = Wind::getComponent('router')->getRoute('pw')->matchUrl($homeUrl); if ($homeRouter === false) { $this->showError('ADMIN:nav.out.link'); } $config->set('homeUrl', $homeUrl)->set('homeRouter', $homeRouter)->flush(); } $this->_getNavDs()->updateNavs($dms); $this->_getNavService()->updateConfig(); $this->showMessage('ADMIN:success'); }