Jump to content

Page Field Edit Links


Recommended Posts

  • 1 month later...

hi @thetuningspoon

just wanted to say thank you! i looked to your code and it was really easy to implement my own fieldlink (needed some special selections) like this:

php hook:

/* pagefield for league selection */
$this->addHookAfter('InputfieldPage::render', function($event) {
    $field = $event->object;
    $pages = $this->wire->pages;
    
    if($field->name != 'league') return;

    // load script
    $this->config->scripts->add($this->config->urls->Webifex . 'pagefieldReload.js');

    $admin = $pages->get(2)->url.'page/';
    $leagues = $pages->get(1017) // settings
        ->season // current season
        ->child('name=ligen');

    ob_start(); ?>
    <div><a class="pw-modal" href="<?= $admin.'?open='.$leagues->id ?>">
        <i class="fa fa-edit"></i> Ligen verwalten
    </a></div>
    <?php
    $html = ob_get_clean();

    $event->return = preg_replace('/<\/div>$/', $html, $event->return);
});

and this simple javascript:

$(document).on('pw-modal-closed', 'a', function() {
	$(this).closest('.Inputfield').trigger('reload');
});

awesome :)

  • Like 2
Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...

One idea would be to clone the core inputfieldPage module and then make the renderReady method hookable. Also we need to ask @ryan if it will be possible to make renderReady hookable like render, or if there is some issue with that; once renderReady is hookable, then this module would be able to use that hook to add the required assets;

If you use inputfieldSelectize, you can just make your own edit links on the items, and not need this module.

  • Like 1
Link to comment
Share on other sites

9 hours ago, Macrura said:

One idea would be to clone the core inputfieldPage module and then make the renderReady method hookable. Also we need to ask @ryan if it will be possible to make renderReady hookable like render, or if there is some issue with that; once renderReady is hookable, then this module would be able to use that hook to add the required assets;

Thank you.

Hmm, it works if the page hosting the repeater has a page reference field with editLinks enabled too.

Unfortunately it does not work when it is hidden.

 

9 hours ago, Macrura said:

If you use inputfieldSelectize, you can just make your own edit links on the items, and not need this module.

 

Not sure if I understand how this works. I'am seeing only [object Object] (see screenshot).

But I think anyway it is not a replacement for the type of selector I need. I have to be able to select in a page tree.

A flat list does not help in this case.

Thank you.

select.png.95635b8e66acd26731f554b1ea2c95ab.png

 

Link to comment
Share on other sites

As workaround for PageFieldEditLinks inside Repeaters, I've hacked this. Just place the code below in templates/admin.php.
(Adjust 'my_template').

if ($page->name=='edit' && $input->get->id) { 
 if ($pages->get($input->get->id)->template->name=='my_template') {
   $config->scripts->add($config->urls->siteModules . "AdminPageFieldEditLinks/AdminPageFieldEditLinks.js");
   $config->styles->add($config->urls->siteModules . "AdminPageFieldEditLinks/AdminPageFieldEditLinks.css");
 }   
}

Place the above before:

require($config->paths->adminTemplates . 'controller.php'); 
  • Like 2
Link to comment
Share on other sites

19 hours ago, theo said:

Unfortunately this doesn't work inside a repeater.

I assume you know that ASM Select supports linking to the page already in the core, so unless you need the additional features of this, that might already be a solution.

5a92c8597207f_Edit_Field__dw_shortcut_select__dev_aaroncopland_com.jpg.b53808aeaa06c80448978e13d249e5c2.jpg

Link to comment
Share on other sites

20 hours ago, Macrura said:

One idea would be to clone the core inputfieldPage module and then make the renderReady method hookable.

Inputfield::renderReady was made hookable as Inputfield::renderReadyHook in PW 3.0.44. So the module could be updated to hook after InputfieldPage::renderReadyHook instead of before InputfieldPage::render - then it will work with repeater fields.

That would add a requirement of PW >= 3.0.44, or else the module could check the PW version and hook different methods depending on the version.

  • Like 5
Link to comment
Share on other sites

Hey guys, for some reason the forum has not been notifying me of new replies in this thread, so I apologize for my absence.

@Robin S Thanks for the info on the new InputfieldPage::renderReadyHook method. I will update the module asap. I think that as it stands right now, the module does work in a repeater as long as the main page also has a page field that is using the module. The problem is that the js and css assets are not included by the repeater.

 

On 1/15/2018 at 4:52 PM, lpa said:

I have some problem with this module when also using the HelperFieldLinks module. I don't know which one of the modules is causing this, but it doesnt look very nice. 

edit-links-problem.png

@Ipa it looks like the javascript for these two modules is conflicting. I am not familiar with HelperFieldLinks. Can you explain its purpose? Also, can you get me a larger screen shot of this in context of the rest of the field?

 

On 3/3/2018 at 7:25 PM, adrian said:

Super useful module @thetuningspoon and @Macrura - any chance we could have the option for each page reference field whether the links should open in a modal, or straight into the current tab - I am wanting this as more of a navigation tool. Would this be easy enough to implement?

Thanks!

I don't think this would be too difficult to add. Good idea.

  • Like 3
Link to comment
Share on other sites

You can find my other message on the issue here on the HelperFieldLinks thread. It is supposed to give quick access to the templates and fields for superusers.

 

Link to comment
Share on other sites

  • 3 weeks later...

Just released an update on GitHub:

-Added support for repeaters using the new InputfieldPage::renderReadyHook method (Will fall back to hooking into render if using on an older version of PW)
-Specifying processes is no longer required (I'm not sure why I limited the modules use to just specific admin pages before, but there may have been a reason. Let me know if you see any problems with this)

I looked into the possibility of making the modal optional, but it's not such a simple task with the way the JS is currently structured. I would like to do some refactoring, but not sure if/when I'll have the time. 

  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...
On 28/03/2018 at 10:57 AM, thetuningspoon said:

Just released an update on GitHub:

-Added support for repeaters using the new InputfieldPage::renderReadyHook method (Will fall back to hooking into render if using on an older version of PW)
-Specifying processes is no longer required (I'm not sure why I limited the modules use to just specific admin pages before, but there may have been a reason. Let me know if you see any problems with this)

I looked into the possibility of making the modal optional, but it's not such a simple task with the way the JS is currently structured. I would like to do some refactoring, but not sure if/when I'll have the time. 

Hi,

I guess I found a side effect of your last update (I suppose because of the hook). The "New" link now appear on front-end when pagefield is used in formbuilder. It's not that I don't want even if it's contradict module's name (!) (in fact, could help me), but the link doesn't work anyway. Give a strange url : /undefinedpage/add/?parent_id=1050&template_id=46&modal=1

For now, I will downgrade, because I need this functionality in admin.

Thanks

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

I would like to create new pages as children from your module – if i don't provide a parent when setting up the field, the create new link looks as follows:

parent_id=0&amp;template_id=51&amp;modal=1 … it would be great if there would be an option to allow the current page ID to be passed to parent_id instead of 0

See:

 

Link to comment
Share on other sites

  • 3 months later...

Small wish for this module which I use intensively:

  • Option to define a selector string for newPageParent instead of selecting a fixed page. (alternatively provide option to hook in here

I also recommend linking to http://modules.processwire.com/modules/admin-page-field-edit-links/  instead of http://processwire.com in module settings.

Link to comment
Share on other sites

  • 3 weeks later...

Just installed this and it looks good except that I am having difficulty adding new pages. I get this message:

 ProcessWire: ProcessPageAdd: Template Member is not allowed here (/members/)

The settings I have used are parent = Members (i.e. url= /members/) and Template = Member. All the children of Members have template Member. If I deselect the Template = Member, the new page modal gives a choice of every template except Member. Am I being dim or what?

The field is located on a completely different page (Memberships)

Link to comment
Share on other sites

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...