|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| | {{fmt/title|Ferreteria 0.5: menu system}} |
| | '''Related''': {{l/ver|@cls/menu}}, {{l/ferreteria/|v0.4/file/menu}} |
| ==About== | | ==About== |
| Menus in Ferreteria are static HTML which use URL data to convey state-changes. Many of the same classes and code are also used for isolated action-links which can be placed anywhere on a page, as appropriate (e.g. "[recalculate]", "[void]"). | | Menus in Ferreteria are static HTML which use URL data to convey state-changes. Many of the same classes and code are also used for isolated action-links which can be placed anywhere on a page, as appropriate (e.g. "[recalculate]", "[void]"). |
| ==Changes from v0.4== | | ==Classes== |
| The code for adding a menu entry to a section-header used to look like this:
| | * {{l/ver/class|menu/Nav}} |
| <syntaxhighlight lang=php>
| | ==Pages== |
| $oag = \fcHeaderMenuGroup::CreateCollection();
| | * [[/refactor]]: changes from v0.4 |
| $oag->ChoiceKey()->SetIt('do');
| |
| $oag->BasePath()->SetIt($urlSelf);
| |
|
| |
| // create & configure settings for "edit" menu item
| |
| $oa = \fcMenuOptionLink::CreateCollection();
| |
| $oag->CopyValuesTo($oa);
| |
| $oa->ChoiceValue()->SetIt('edit');
| |
| $oa->Popup()->SetIt('edit this invoice');
| |
| // create edit menu item object
| |
| $ol = new \fcMenuOptionLink($oa);
| |
| // add it to the menu group
| |
| $oGrp->SetNode($ol);
| |
| | |
| // create & configure settings for "empty the invoice" menu item
| |
| $oa = \fcMenuOptionLink::CreateCollection();
| |
| $oag->CopyValuesTo($oa);
| |
| $oa->ChoiceValue()->SetIt('empty');
| |
| $oa->Popup()->SetIt('remove all lines from this invoice');
| |
| // create edit menu item object
| |
| $ol = new \fcMenuOptionLink($oa);
| |
| // add it to the menu group
| |
| $oGrp->SetNode($ol);
| |
| </syntaxhighlight>
| |
| The v0.5 methodology (not yet tested, so it may end up being revised further) looks like this:
| |
| <syntaxhighlight lang=php>
| |
| $oMenu = caApp::Me()->GetHeaderMenu();
| |
| // create & configure settings for "[add] => create new permission" menu item
| |
| $ol = new F\cMenuOptionLink;
| |
| $oa = $ol->GetArgPod();
| |
| $oa->BasePath()->SetIt($this->LinkURL()); // base URL to prefix all output URLs
| |
| $oa->ChoiceKey()->SetIt('do'); // name of option group to which this option belongs
| |
| $oa->ChoiceValue()->SetIt('add'); // value of key for this action
| |
| $oa->Popup()->SetIt('create new permission'); // (optional) hover-over text
| |
| $doAdd = $ol->GetIsSelected();
| |
| $oMenu->AddTwig($ol);
| |
| </syntaxhighlight>
| |
| Changes:
| |
| * <code>fcMenuOptionLink</code> has been renamed <code>ferret\cMenuOptionLink</code>.
| |
| * We now create the MenuOptionLink object directly, rather than spawning it using a static function.
| |
| * The function name for adding the Link to a parent object has changed from SetNode() to AddTwig().
| |
| ** In the v0.4 example, the parent is a Group object; in the v0.5 example, it's a HeaderMenu object.
| |
| | |
| Another example, using the same code being converted from v0.4 to v0.5.
| |
| | |
| '''v0.4:'''
| |
| <syntaxhighlight lang=php>
| |
| // "edit" menu only appears if we're not adding
| |
| $oMenu = cApp::Me()->GetHeaderMenu();
| |
| $oa = \fcMenuOptionLink::CreateCollection();
| |
| $oa->BasePath()->SetIt($this->LinkURL());
| |
| $oa->ChoiceKey()->SetIt('do');
| |
| $oa->ChoiceValue()->SetIt('edit');
| |
| $oa->Popup()->SetIt('edit this project');
| |
| $ol = new \fcMenuOptionLink($oa);
| |
|
| |
| $doEdit = $ol->GetIsSelected();
| |
|
| |
| $oMenu->SetNode($ol);
| |
| </syntaxhighlight>
| |
| '''v0.5:'''
| |
| <syntaxhighlight lang=php>
| |
| $oMenu = cApp::Me()->GetHeaderMenu();
| |
| $ol = new F\cMenuOptionLink;
| |
| $oa = $ol->GetArgPod();
| |
| $oa->BasePath()->SetIt($this->LinkURL());
| |
| $oa->ChoiceKey()->SetIt('do');
| |
| $oa->ChoiceValue()->SetIt('edit');
| |
| $oa->Popup()->SetIt('edit this project');
| |
|
| |
| $doEdit = $ol->GetIsSelected();
| |
|
| |
| $oMenu->AddTwig($ol);
| |
| </syntaxhighlight>
| |