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.  
       
      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) Steps (Read more) Manual override of the selected value (will still adhere to the rules above) 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 If it's usable for others I'll add it to the Modules list  
      Changelog
      v002
      - Fix issue where setting the step value to an empty value created problem with validation
      - Make the display-field optional 
      v001
      - Initial release
       
      Thanks!
       
       
    • 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.
    • By adrian
      This module allows you to automatically rename file (including image) uploads according to a configurable format
      This module lets you define as many rules as you need to determine how uploaded files will be named and you can have different rules for different pages, templates, fields, and file extensions, or one rule for all uploads. Renaming works for files uploaded via the admin interface and also via the API, including images added from remote URLs.   Github: https://github.com/adrianbj/CustomUploadNames
      Modules Directory: http://modules.processwire.com/modules/process-custom-upload-names/
      Renaming Rules
      The module config allows you to set an unlimited number of Rename Rules. You can define rules to specific fields, templates, pages, and file extensions. If a rule option is left blank, the rule with be applied to all fields/templates/pages/extensions. Leave Filename Format blank to prevent renaming for a specific field/template/page combo, overriding a more general rule. Rules are processed in order, so put more specific rules before more general ones. You can drag to change the order of rules as needed. The following variables can be used in the filename format: $page, $template, $field, and $file. For some of these (eg. $field->description), if they haven't been filled out and saved prior to uploading the image, renaming won't occur on upload, but will happen on page save (could be an issue if image has already been inserted into RTE/HTML field before page save). Some examples: $page->title mysite-{$template->name}-images $field->label $file->description {$page->name}-{$file->filesize}-kb prefix-[Y-m-d_H-i-s]-suffix (anything inside square brackets is is considered to be a PHP date format for the current date/time) randstring[n] (where n is the number of characters you want in the string) ### (custom number mask, eg. 001 if more than one image with same name on a page. This is an enhanced version of the automatic addition of numbers if required) If 'Rename on Save' is checked files will be renamed again each time a page is saved (admin or front-end via API). WARNING: this setting will break any direct links to the old filename, which is particularly relevant for images inserted into RTE/HTML fields. The Filename Format can be defined using plain text and PW $page variable, for example: mysite-{$page->path} You can preserve the uploaded filename for certain rules. This will allow you to set a general renaming rule for your entire site, but then add a rule for a specific page/template/field that does not rename the uploaded file. Just simply build the rule, but leave the Filename Format field empty. You can specify an optional character limit (to nearest whole word) for the length of the filename - useful if you are using $page->path, $path->name etc and have very long page names - eg. news articles, publication titles etc. NOTE - if you are using ProcessWire's webp features, be sure to use the useSrcExt because if you have jpg and png files on the same page and your rename rules result in the same name, you need to maintain the src extension so they are kept as separate files.
      $config->webpOptions = array(     'useSrcExt' => false, // Use source file extension in webp filename? (file.jpg.webp rather than file.webp) ); Acknowledgments
      The module config settings make use of code from Pete's EmailToPage module and the renaming function is based on this code from Ryan: http://processwire.com/talk/topic/3299-ability-to-define-convention-for-image-and-file-upload-names/?p=32623 (also see this post for his thoughts on file renaming and why it is the lazy way out - worth a read before deciding to use this module). 
       
       
      NOTE:
      This should not be needed on most sites, but I work with lots of sites that host PDFs and photos/vectors that are available for download and I have always renamed the files on upload because clients will often upload files with horrible meaningless filenames like:
      Final ReportV6 web version for John Feb 23.PDF

×
×
  • Create New...