Jump to content
thetuningspoon

Page Field Edit Links

Recommended Posts

@kixe can you upgrade to 3.0.23. A lot of modules and other stuff was broken on .22

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the hint. Everything is working as expected again in PW 3.0.24. :)

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
24 minutes ago, lpa said:

when also using the HelperFieldLinks module

I used to use that module, but these day I prefer AdminOnSteroids for that functionality.

  • Like 3

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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

 

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

@Macrura Thank you, but I need to select using a tree. Is this possible with ASM Select?

"Page List Select Multiple" does exactly what I need in this regard.

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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!

  • Like 2

Share this post


Link to post
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

Share this post


Link to post
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.

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

@mel47 Thanks. I just pushed another release so the module will only load in the admin, as it was before. But it is still no longer limited to specific admin processes.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

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:

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

Love this module, but how come the edit icon that is added to the inputfield is fa-search? I reckon fa-pencil-square-o would be more suitable for an edit icon.

2019-02-07_125654.png.d7b5dfa5184c3c6e3eaa94af13474a65.png

2019-02-07_125913.png.e69a2ad1895523da77eeef3537fb9c3e.png

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By eelkenet
      Hi! I've created a small Inputfield module called InputfieldFloatRange which allows you to use an HTML5 <input type="range" ../> slider as an InputField. I needed something like this for a project where the client needs to be able to tweak this value more based on 'a feeling' than just entering a boring old number. Maybe more people can use this so I'm hereby releasing it into the wild. 
      EDIT: You can now install it directly from the Modules directory: http://modules.processwire.com/modules/inputfield-float-range/
       
      What is it?
      The missing range slider Inputfield for Processwire. 
      What does it do?
      This module extends InputfieldFloat and allows you to use HTML5 range sliders for number fields in your templates.
      It includes a visible and editable value field, to override/tweak the value if required.  
      Features
      Min/max values Precision (number of decimals) Optional step value (Read more) Optional manual override of the selected value (will still adhere to the rules above) Configurable rounding of manually entered values (floor, round, ceil, disable) Usage
      Clone / zip repo Install FieldtypeFloatRange, this automatically installs the Inputfield Create new field of type `Float (range)` or convert an existing `Float`, `Integer` or `Text` field. To render the field's value simply echo `$page->field` Demo
      A field with Min=0, Max=1, Step=0.2, Precision=2

      Field with settings Min=0, Max=200, Step=0.25, Precision=2

       
      Todo
      Make the display-field's size configurable (will use the Input Size field setting)  Hopefully become redundant  
      Changelog
      004 (current version)
      - Make rounding of manually entered values configurable (floor, round, ceil or disable)
      - Fix small JS bug when the value-display field was not displayed
      - Update README
      003
      - Code cleanup, add some ModuleInfo data & LICENSE
      - Submit to PW Modules directory (http://modules.processwire.com/modules/inputfield-float-range/)
      002
      - Fix issue where setting the step value to an empty value created problem with validation
      - Make the display-field optional
      001
      - Initial release
       
      Thanks!
       
       
    • By Gadgetto
      Status update links (inside this thread) for SnipWire development will be always posted here:
      2019-10-18
      2019-08-08
      2019-06-15
      2019-06-02
      2019-05-25
      If you are interested, you can test the current state of development:
      https://github.com/gadgetto/SnipWire
      Please note that the software is not yet intended for use in a production system (alpha version).
      If you like, you can also submit feature requests and suggestions for improvement. I also accept pull requests.
      ---- INITIAL POST FROM 2019-05-25 ----
      I wanted to let you know that I am currently working on a new ProcessWire module that fully integrates the Snipcart Shopping Cart System into ProcessWire. (this is a customer project, so I had to postpone the development of my other module GroupMailer).
      The new module SnipWire offers full integration of the Snipcart Shopping Cart System into ProcessWire.
      Here are some highlights:
      simple setup with (optional) pre-installed templates, product fields, sample products (quasi a complete shop system to get started immediately) store dashboard with all data from the snipcart system (no change to the snipcart dashboard itself required) Integrated REST API for controlling and querying snipcart data webhooks to trigger events from Snipcart (new order, new customer, etc.) multi currency support self-defined/configurable tax rates etc. Development is already well advanced and I plan to release the module in the next 2-3 months.
      I'm not sure yet if this will be a "Pro" module or if it will be made available for free.
      I would be grateful for suggestions and hints!
      (please have a look at the screenshots to get an idea what I'm talking about)
       




    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. Field widths entered into the Template Field Widths inputfield are only applied if the Edit Template form is submitted with the Template Field Widths inputfield in an opened state. "Collapsed" is the recommended setting if you think you might also use core inputs for setting field widths in a template context. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By adrian
      Tracy Debugger for ProcessWire
      The ultimate “swiss army knife” debugging and development tool for the ProcessWire CMF/CMS

       
      Integrates and extends Nette's Tracy debugging tool and adds 35+ custom tools designed for effective ProcessWire debugging and lightning fast development
      The most comprehensive set of instructions and examples is available at: https://adrianbj.github.io/TracyDebugger
      Modules Directory: http://modules.processwire.com/modules/tracy-debugger/
      Github: https://github.com/adrianbj/TracyDebugger
      A big thanks to @tpr for introducing me to Tracy and for the idea for this module and for significant feedback, testing, and feature suggestions.
×
×
  • Create New...