/** * Adds the career menu to the main menu. * * @param pmJSCookMenu $menu * @return void */ public function addCareerMenu(pmJSCookMenu $menu) { $career = CareerPeer::retrieveByPK($this->getReferenceFor("career")); sfContext::getInstance()->getConfiguration()->loadHelpers(array("I18N")); if (!is_null($career)) { $menu->addChild("menu_separator", new pmJSCookMenuSeparator()); $submenu = new pmJSCookMenu(); $submenu->setTitle("<strong>" . __("Current career") . "</strong>")->setCredentials("edit_career"); $item = new pmJSCookMenuItem(); $item->setTitle($career); $submenu->addChild("career_name", $item); $submenu->addChild("first_separator", new pmJSCookMenuSeparator()); // edit if ($career->canBeEdited()) { $item = new pmJSCookMenuItem(); $item->setTitle("Edit")->setUrl("@career_edit?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("edit", $item); } // delete if ($career->canBeDeleted()) { // TODO: ver esto porque REST no funciona con JS $delete_url = url_for(array("sf_route" => "career_delete", "sf_subject" => $career, "sf_method" => "delete")); $item = new pmJSCookMenuItem(); $item->setTitle("Delete")->setUrl($delete_url)->setCredentials("edit_career"); $submenu->addChild("delete", $item); } if ($career->canBeEdited() || $career->canBeDeleted()) { $submenu->addChild("second_separator", new pmJSCookMenuSeparator()); } // copy $item = new pmJSCookMenuItem(); $item->setTitle("Copy")->setUrl("career/copy?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("copy", $item); // subjects $item = new pmJSCookMenuItem(); $item->setTitle("Subjects")->setUrl("career/subjects?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("subjects", $item); // subject options $item = new pmJSCookMenuItem(); $item->setTitle("Subject options")->setUrl("career/subjectOptions?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("subject_options", $item); // career view $item = new pmJSCookMenuItem(); $item->setTitle("Career view")->setUrl("career/careerView?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("career_view", $item); // show inscripted $item = new pmJSCookMenuItem(); $item->setTitle("Show inscripted")->setUrl("career/students?id=" . $career->getId())->setCredentials("edit_career"); $submenu->addChild("career_view", $item); $menu->addChild("career", $submenu); } }
/** * Create a submenu from an array. * * @param array $arr The array * @return pmJSCookMenuComponent */ protected static function createMenu($arr) { $item = null; if (array_key_exists("menu", $arr)) { $item = new pmJSCookMenu(); $separator_count = 0; foreach ($arr["menu"] as $name => $submenu) { if ($name == "separator") { $sitem = new pmJSCookMenuSeparator(); $item->addChild("{$name}{$separator_count}", $sitem); $separator_count++; } else { $sitem = self::createMenu($submenu); $item->addChild($name, $sitem); } } } else { $item = new pmJSCookMenuItem(); } if (array_key_exists("credentials", $arr)) { $item->setCredentials($arr["credentials"]); } if (array_key_exists("description", $arr)) { $item->setDescription($arr["description"]); } if (array_key_exists("icon", $arr)) { $item->setIcon($arr["icon"]); } if (array_key_exists("target", $arr)) { $item->setTarget($arr["target"]); } if (array_key_exists("title", $arr)) { $item->setTitle($arr["title"]); } if (array_key_exists("url", $arr)) { $item->setUrl($arr["url"]); } return $item; }