Jump to content

Pia - Pageimage Assistant


horst
 Share

Recommended Posts

  • 1 month later...

I got an error when i tried to crop an image with the new processwire croppingfeature and PIA installed.
 

TemplateFile: Unknown Selector operator: '' -- was your selector value properly escaped? field='1121', value='', selector: '1121'

#0 /Users/jondoe/Documents/localdev/wire/core/Selectors.php(284): Selectors->create('1121', '', '') 
#1 /Users/jondoe/Documents/localdev/wire/core/Selectors.php(81): Selectors->extractString('1121') 
#2 /Users/jondoe/Documents/localdev/site/modules/PageimageAssistant/PageimageAssistant.module(378): Selectors->__construct('1121') 
#3 /Users/jondoe/Documents/localdev/site/modules/PageimageAssistant/PageimageAssistant.module(227): PageimageAssistant::selector2array('1121') 
#4 /Users/jondoe/Documents/localdev/site/modules/PageimageAssistant/PageimageAssistant.module(160): PageimageAssistant->getSizeParams(0, 0, 1121, 'piacrop') 
#5 /Users/jondoe/Documents/localdev/wire/core/Wire.php(388): PageimageAssistant->PiaMakeCrop(Object(HookEvent)) 
#6 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('crop', Array) 
#7 /Users/jondoe/Documents/localdev/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module(914): Wire->__call('crop', Array) 
#8 /Users/jondoe/Documents/localdev/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module(914): Pageimage->crop(1121, 764, 736, 419, Array) 
#9 /Users/jondoe/Documents/localdev/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module(556): ProcessPageEditImageSelect->processCrop() 
#10 [internal function]: ProcessPageEditImageSelect->___executeEdit() 
#11 /Users/jondoe/Documents/localdev/wire/core/Wire.php(366): call_user_func_array(Array, Array) 
#12 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('executeEdit', Array) 
#13 /Users/jondoe/Documents/localdev/wire/core/ProcessController.php(213): Wire->__call('executeEdit', Array) 
#14 /Users/jondoe/Documents/localdev/wire/core/ProcessController.php(213): ProcessPageEditImageSelect->executeEdit() 
#15 [internal function]: ProcessController->___execute() 
#16 /Users/jondoe/Documents/localdev/wire/core/Wire.php(366): call_user_func_array(Array, Array) 
#17 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('execute', Array) 
#18 /Users/jondoe/Documents/localdev/wire/core/admin.php(93): Wire->__call('execute', Array) 
#19 /Users/jondoe/Documents/localdev/wire/core/admin.php(93): ProcessController->execute() 
#20 /Users/jondoe/Documents/localdev/wire/modules/AdminTheme/AdminThemeDefault/controller.php(13): require('/Users/jondoe/D...') 
#21 /Users/jondoe/Documents/localdev/site/templates/admin.php(15): require('/Users/jondoe/D...') 
#22 /Users/jondoe/Documents/localdev/wire/core/TemplateFile.php(169): require('/Users/jondoe/D...') 
#23 [internal function]: TemplateFile->___render() 
#24 /Users/jondoe/Documents/localdev/wire/core/Wire.php(366): call_user_func_array(Array, Array) 
#25 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('render', Array) 
#26 /Users/jondoe/Documents/localdev/wire/modules/PageRender.module(356): Wire->__call('render', Array) 
#27 /Users/jondoe/Documents/localdev/wire/modules/PageRender.module(356): TemplateFile->render() 
#28 [internal function]: PageRender->___renderPage(Object(HookEvent)) 
#29 /Users/jondoe/Documents/localdev/wire/core/Wire.php(366): call_user_func_array(Array, Array) 
#30 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('renderPage', Array) 
#31 /Users/jondoe/Documents/localdev/wire/core/Wire.php(388): Wire->__call('renderPage', Array) 
#32 /Users/jondoe/Documents/localdev/wire/core/Wire.php(388): PageRender->renderPage(Object(HookEvent)) 
#33 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('render', Array) 
#34 /Users/jondoe/Documents/localdev/wire/modules/Process/ProcessPageView.module(172): Wire->__call('render', Array) 
#35 /Users/jondoe/Documents/localdev/wire/modules/Process/ProcessPageView.module(172): Page->render() 
#36 [internal function]: ProcessPageView->___execute(true) 
#37 /Users/jondoe/Documents/localdev/wire/core/Wire.php(366): call_user_func_array(Array, Array) 
#38 /Users/jondoe/Documents/localdev/wire/core/Wire.php(321): Wire->runHooks('execute', Array) 
#39 /Users/jondoe/Documents/localdev/index.php(240): Wire->__call('execute', Array) 
#40 /Users/jondoe/Documents/localdev/index.php(240): ProcessPageView->execute(true) 
#41 {main}

 
This happens when I try to save my cropped selection. (I turned debug on to get the longer error message.)
 
When I uninstall PIA it works without problems.
 
 
I use PW 2.5.22 and PIA 0.2.2

Edited by horst
changed error message from "quote" to "code"
Link to comment
Share on other sites

Hey Torsten,

What exactly have you done? Can you explain exactly, step by step, so that I can reproduce it?

Edit:

Can you reproduce it? I have installed latest dev from today 2.5.22, but it is a bit different from an earlier 2.5.22 (maybe a week ago) and everything in regard to Pia works fine.

Edited by horst
Link to comment
Share on other sites

Thanks for the screencast. But that's what I also do and it works here. Only thing that seems other here is I have no german language pack installed.

What are your settings for Pia?

I have tried it with the global ForceNew set to true and to false, both is working here.

So, what makes me completly wonder is why Pia is / should be invoked in your site when editing with the new pageimage field cropping tool. It doesn't make sense. The new image tool don't call Pia, and Pia only should get invoked by explicitly calling her:

        $this->addHook('Pageimage::pia', $this, 'PiaBallerina');
        $this->addHook('Pageimage::crop', $this, 'PiaMakeCrop');
        $this->addHook('Pageimage::cover', $this, 'PiaMakeCover');
        $this->addHook('Pageimage::contain', $this, 'PiaMakeContain');
        $this->addHook('Pageimage::retinafy', $this, 'PiaCreateRetinafy');
        $this->addHook('Pageimage::hiDPI', $this, 'PiaCreateRetinafy');

She only add her own methods to the Pageimage and do not hook into any existing one.

And in my testsite it doesn't get invoked. Why is it with your site? There must be something other that interferes with using the new cropping tool. ???

Link to comment
Share on other sites

Not imagesizer options but "during development" forceNew setting was of interest, but this also doesn't affect it here.

Have you disabled the other modules too? Can you do it, (maybe in a new test install)?

And then try it one by one. Uninstall all site modules. Then only install Pia and try it. If no other site module is installed, I believe it will work with Pia too. If it does, install the next module to it, e.g. ImageExtra. If it works together, install the next one, etc. (Do this also for other modules, e.g. SEO or other you may have installed yet.)

Link to comment
Share on other sites

  • 1 month later...

Updated Pia to version 0.3.0

Resolved a naming conflict with Pias crop() method: around PW version 2.5.17 there was a new pageimage::crop method introduced.

If you use Pia with a recent PW dev version, please update!

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Hi horst, thank you for this great plugin.

I can’t install it on my new Processwire website. When I come to activate the plugin, I get the following error:

Class PageimageAssistant contains 1 abstract method and must therefore be declared abstract or implement the remaining methods
(Module::getModuleInfo) in /…/site/modules/PageimageAssistant/PageimageAssistant.module on line 738

Any idea?

Link to comment
Share on other sites

Horst > I try both to upload manually and from the module installer. The error happens when I check for new module or when I proceed to installation.

My php version is 5.6.10. I noticed that the error exists on my distant server as well. It blocks the access to the module page until I manually remove PIA.

Edit: and ProcessWire 2.4.0

Link to comment
Share on other sites

PIA is only compatible with PW 2.5 and 2.6!
 
in Github repo, the subheader at top:  Module for ProcessWire 2.5.0+

and in the modules directory it has the appropriate checkboxes checked.

When trying to direct install via PW 2.4, you have it on the install screen:

post-1041-0-79815000-1434215010_thumb.pn

So, with PW 2.5+ you will see more bold information when versions are mismatch, or "thumbs up icon" if they match fine. But at least, also with PW 2.4 all needed informations are on the right place(s). :)

One more reason to update your PW version, we are on 2.6 stable for some weeks now ;-)

Link to comment
Share on other sites

  • 7 months later...
  • 3 weeks later...

Quick question: Looking at module setttings for this 1.0.0 version in a new PW 3.0 setup there are only HiDPI/Retinafy Options. I don't see any image Sizer Options, as shown a few posts back. Is this normal? Are they somewhere else? Thanks.

Link to comment
Share on other sites

@SteveB: Sorry, I need to update this in the description here. The UI for Imagesizer options is removed now, as it could interfere with the ConfigModule. I think it is better to have only one SettingsPage / UI screen than multiple, what can let to confusion.
 
Pia is meant to assist in Image API handling, and the ConfigModule is meant for UI handling of config options.
 
So, the UI for Image Sizer Options isn't there anymore, for all PW versions, 2.5+ and 3.0+.

Edited by horst
Link to comment
Share on other sites

  • 1 month later...

Hey @horst - the IMagick Image Sizer module uses a default "Quality" setting of 80. When using the "quality" option in PIA (or native PW $image methods), does it override the IMagick Image Sizer module or, if you specify "quality=75", is it 75 based on 80 (IMagick default), or 75 based on the original image?

Hope this makes sense! :)

Thanks.

Link to comment
Share on other sites

Hi @Gazley, you are speaking of the new core (PW 3) ImageSizerEngineIMagick.module? (Better do not use the old IMagick Sizer module, or, if so, do you stuck with PW 2.7 ?)

But to your question: The hirarchy of options is this way, lowest to highest: (higher ones overwrite lower ones)

  • module default                                  (is only there if all others are missing)
  • global setting in wire/config.php               (is the distribution default)
  • global setting in site/config.php               (can be set to overwrite the distribution default per site)
  • setting in array options, passed to pageimage   (overwrites all others)
    with methods width, height, size

If the module has a default of 80, the wire/config.php has 90, the result is 90.

If you pass an option with 75 to size(), the resulting quality is 75.

Pia is only a wrapper around pageimage, so any option passed to Pia (pageimage), overwrite all other (hirarchically previous) options.

  • Like 1
Link to comment
Share on other sites

Hi @horst - excellent answer! Many thanks indeed :)

I am using PW3 and taking advantage of all the latest goodness!

Hope you're having a great weekend and I appreciate your very quick response.

Cheers!

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Edit: Please ignore this post - the more I play with the code, the more obvious the answer is and the more stupid this question is! Sorry

Hi @horst - I don't know whether this is the correct thread to ask this question but it is connected because I danced with this lady :)

I haven't done any cropping with PW before and have noticed the following. I add a "master" image to PW called "st_mi_18.jpg".

In the backend UI, I crop the image and PW saves the copy as "st_mi_18-v1.jpg".

The current use-case is that I want to save various "art-directed" versions of the master "st_mi_18.jpg" to use in a picture element. I guess the issue is, how do I reference these versions in my code if I didn't know the name that PW has generated? So far, PW saves them as V1, V2 etc.

I want to process (in code) each version (V1, V2) so that various sizes are available to support different DPR values but obviously, I need to access each art-directed copy (V1,V2 etc).

Do I just have to "know" that each version is called V1, V2 etc or, can I influence the name of the saved copy? Can I get V1 or V2 by using the $image variable with the known size/crop values and PW will return the matching Vx file?

I hope this makes sense. If you have any thoughts or opinions on what I am trying to do, I'd really appreciate them! :)

Many thanks.

Link to comment
Share on other sites

  • 1 year later...

You can add suffixes to image variations. 

If you want to do it with Pia, you need to add, for example, 

suffix=lowres, or suffix=hires to the selctor string.

If you want to add suffix names to image variations without Pia, pass an options array to the width, height or size methods as (optional) last argument. Within the array set the key suffix to your desired name. 

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...