Page Selectors in custom blocks
Permalink
I have been working with Concrete5 for a few months now and I am learning something new every day. I have a piece of client work due very soon and I can't get my head around the page_selector helper.
This block is building a button. I have it doing everything that I need it to do save for one thing. I have a radio button that will deliver [via jQuery] the option to input an external url or select a page from the page selector.
The problem is is that I can't seem to capture the returned value from the page_selector helper.
I can query the radio buttons to deduce whether an internal link or external link has been selected but I need a variable with the url string to echo.
Here's my code... All that I have in controller.php is a save and a delete...
Add.php
View.php
This block is building a button. I have it doing everything that I need it to do save for one thing. I have a radio button that will deliver [via jQuery] the option to input an external url or select a page from the page selector.
The problem is is that I can't seem to capture the returned value from the page_selector helper.
I can query the radio buttons to deduce whether an internal link or external link has been selected but I need a variable with the url string to echo.
Here's my code... All that I have in controller.php is a save and a delete...
Add.php
<h2>Button details</h2> <?php echo $form->label('btnCaption', 'Caption'); echo $form->text('btnCaption', array('style' => 'width: 300px')); ?> <h2>Internal/External Link?</h2> <?php echo $form->radio('btnDest', 'btnInt'); echo 'Internal'; echo $form->radio('btnDest', 'btnExt'); echo 'External'; ?> <div id="intMenu" class="btnDestMenu"> <?php $formHelp = Loader::helper('form/page_selector');
Viewing 15 lines of 44 lines. View entire code block.
View.php
Thanks for your speedy replay...
Here they are;
save()
view()
delete()
Here they are;
save()
function save($args){ parent::save($args); }
view()
function view(){ if($btnDest == 'btnInt'){ $btnDest = $btnInternal; }elseif($btnDest == 'btnExt'){ $btnDest = $btnExternal; } }
delete()
function delete(){ $db = Loader::db(); $db->Execute('delete from btButton where bID='.$this->bID); parent::delete(); }
Sorry, just to clarify, originally I did not have any output from the controller because of a badly constructed view() method. Now however, I have it working.
The question now is, how do I convert the cID number into a URL?
The question now is, how do I convert the cID number into a URL?
This code will get you an URL:
You can also include BASE_URL before DIR_REL if you want a fully qualified URL.
$page = Page::getByID($cID); $url = DIR_REL . '/' . $page->getCollectionPath();
You can also include BASE_URL before DIR_REL if you want a fully qualified URL.
Thanks a lot for your help... unfortunately, this isn't working... the URL that it outputs looks sound enough but I keep getting a 404 [which reminds me, I need to design this as well].
I have looked through the helpers and although I am actually holding my head above water, I'm slowly sinking into a PHP swamp. I have tried picking apart some default blocks [form etc] to find the functionality in there, but no luck...
This block has changed a little since I last posted so here is the new view():
I have looked through the helpers and although I am actually holding my head above water, I'm slowly sinking into a PHP swamp. I have tried picking apart some default blocks [form etc] to find the functionality in there, but no luck...
This block has changed a little since I last posted so here is the new view():
function view(){ $dir = $this->urlDirection; switch ($dir){ case 'int': $cID = $this->urlInternal; $page = Page::getByID($cID); $url = DIR_REL.$page->getCollectionPath(); break; case 'ext': $url = $this->urlExternal; break; } $this->set('btnUrl', $url); }
I have worked it out...
THe script that you offered does almost exactly the job except for the fact that my URLs have index.php in;
staging/mysite/index.php/about [for example]...
I simply added this just before I call getCollectionPath();
and it works... I'm going to post the full code below for anyone that arrives in this thread for help. If you see anything that could/should be changed for better functionality, I welcome you suggestions.
Thanks a lot for your help... It's a massive help to know that there's an answer somewhere...
THe script that you offered does almost exactly the job except for the fact that my URLs have index.php in;
staging/mysite/index.php/about [for example]...
I simply added this just before I call getCollectionPath();
$page = Page::getByID($cID); $url = DIR_REL.'/index.php'.$page->getCollectionPath();
and it works... I'm going to post the full code below for anyone that arrives in this thread for help. If you see anything that could/should be changed for better functionality, I welcome you suggestions.
Thanks a lot for your help... It's a massive help to know that there's an answer somewhere...
Hi,
Is there any chance to get your full code to start devloping from this source on my own ?
:)
Is there any chance to get your full code to start devloping from this source on my own ?
:)
What does the save and view methods in your controller look like?