Jump to content

Juergen

Members
  • Posts

    1,221
  • Joined

  • Last visited

  • Days Won

    10

Everything posted by Juergen

  1. Hello, I always get the following message: Warning: strpos() expects parameter 1 to be string, array given in /home/.sites/.......web/wire/core/Pageimage.php on line 312 Just to clearify: It works as expected and I have turned on the debug mode - so I can see the message, but I dont understand what exactly could be the problem. This is the code in Pageimage.php starting with line 312 if(strpos($options['cropping'], 'x') === 0 && preg_match('/^x(\d+)[yx](\d+)/', $options['cropping'], $matches)) { $options['cropping'] = true; $options['cropExtra'] = array((int) $matches[1], (int) $matches[2], $width, $height); $crop = ''; } else { $crop = ImageSizer::croppingValueStr($options['cropping']); } Best regards
  2. Thanks LostKobrakai, now I solved it with a session id in an hidden input field that will be compared with the post value of the hidden field after submission. If session value and post value are same then send the form data and remove the session id. If someone hits the F5 button after submission, the valid session id is no more longer available (because it was removed after submission) and so the values dont match any longer. As a result a hint for "double submission" appear on the screen instead of submitting the form. The reason why I missunderstood the CSRF was a post by Soma in another topic where he uses CSRF to prevent double submissions. https://processwire.com/talk/topic/3633-prevent-form-resubmission/?p=35567 Best regards
  3. Thanks, I have misunterstood something completely, so I will redirect after $mail->send(); Best regards
  4. Hello @ all, today I have tried to implement the CSRF validation for the first time on a contact form. I have implemented the tokens to the form in a hidden field. So far so good, but the validation shows always "1" after sucessfull or failed submission. I have a custom form with Bootstrap 3 Markup and this is the code that runs after there are no errors in the form: if($session->CSRF->validate() == "1"){ //send the data and create the success message $thankyou = __("danke nachricht"); $mailsenttext = __("Nachricht erhalten"); $out = "<div class='alert alert-success' role='alert'><span class='fa fa-check fa-3x pull-left fa-border'></span><h4>$thankyou</h4><p>$mailsenttext</p><div class='clearfix'></div></div>"; //create the email $fullname = $firstname . ' ' . $lastname; $userip = $_SERVER['REMOTE_ADDR']; $mail = new PHPMailer(); $mail->IsHTML(true); $registertext = __("Mailheader Contactform"); $senderinfo = __("Absender Label"); $mail->From = $email; $mail->FromName = $fullname; $mail->AddAddress($emailTo); $mail->AddReplyTo($email, $fullname); $mail->Subject = $subject; $mail->Body .= "<p><b>$subjectlabel:</b> $subject</p><p><b>$messagelabel</b><br />$comments</p><p><b>$senderinfo</b><br />$gendername $firstname $lastname<br />$email<br />IP: $userip</p>"; $mail->send(); $form = ""; } else { //dont send data and create an error message $out = "<div class='alert alert-danger' role='alert'><span class='fa fa-warning fa-3x pull-left fa-border'></span><h4>$warning</h4><p>$doublesubmissiontext</p><div class='clearfix'></div></div>"; } Unfortunately the value of the $session->CSRF->validate() is always "1", even after successfull submission, so the form could be sent multiple times. What I am doing wrong? Best regards Jürgen
  5. Maybe this article could help you: https://processwire.com/talk/topic/3325-filter-results-via-multiple-dropdowns/?p=32779 Best regards
  6. Hello @ all As I wrote in an earlier post (https://processwire.com/talk/topic/3265-fredi-friendly-frontend-editing/?p=100192): Fredi doesnt grab or save files or images if they are inside a repeater field - can anyone confirm this behavior or ist this only in my case? If the file type field or image type field is outside the repeater field and the settings are on multiple files it is not a problem. Strange behaviour: If I call a page via a pagetable field it always grabs and saves the file/image in a repeater field Best regards.
  7. Thanks tpr! A workaround is to add a pagetable field to the template. There you can add/edit/remove children if you want and its not necessary to let the children tab be visible. Disadvantage: it opens the child in another modal (modal in modal) - but it works. Best regards
  8. @tpr Have you ever tried to edit pages in the children tab? I have tried it, but the modal window will be closed after clicking the edit link of a child page in the children tab.
  9. You are right. I have tried it with "ProcessPageEditChildren" first and it didnt work. Then I have tried "Inputfield_ProcessPageEditChildren" and were also not successfull. Now it works - why it didnt work before - I dont know. Best regards
  10. I have a problem targeting the children tab. Here is my code of the edit link: if($page->children) { if (function_exists("feel")) { echo feel($page, $editpage, "relative button invert", 0, "Inputfield_ProcessPageEditChildren", array( "enableTemplateEdit" => false, "selectorsToHide" => "", "fieldHighlightStyle" => "outline: 4px double #ddd;", "popupSettings" => array( "closeOnBgClick" => true ) ) ); } } Inputfield_ProcessPageEditChildren is the id of the children tab, but it always opens the first tab.
  11. Setting and delete tab is hidden. Is there a way to activate these tabs in the modal if necessary? Best regards SOLVED: Use the options to declare the tabs which should be hidden selectorsToHide: list of selectors to hide elements from admin (for example some tabs)
  12. SOLVED: changed the module name from MarkupSVGIcons.module to MarkupSvgIcons.module - error is gone away.
  13. I wanted to try this awesome module, but unfortunately I got this error after installation: Notice: Undefined index: MarkupSvgIcons in ..../web/wire/core/Modules.php on line 569 Notice: Undefined index: in ..../wire/core/Modules.php on line 570
  14. Thanks for your help LostKobraKai and Martijn, now the value will be added to the parent page. For all others who are interested in this, here is the complete code snippet: public function init() { $this->addHookAfter('Pages::saved', $this, 'saved'); } public function saved($event) { $page = $event->arguments[0]; if($page->template == "productpricelistitem"){ //run the hook under this condition - page which will be edited $parent = $page->parent;//get the parent page $parent->offercheck = "5"; //example value to store in the parent page in the field with the name offercheck $parent->save("offercheck"); //save the parent page } } If you use a pagetable field as in my case, dont forget to reload the parent page if you want to see the value in the field. Best regards
  15. @ LostKobraKai: you are right - the error message is gone, but it will not store any value in the field of the parent page. @ Martijn: I dont know exactly what you mean, but my goal is to add a value to a field of a parent page if the child page has a specific value in a field. I can use a hook to populate the value of a field in the page, but I am not able to do the same in the parent page.
  16. Doesnt work Warning: Attempt to assign property of non-object in /home/.sites/24/site1275/web/site/modules/HookAfterPagesSave/HookAfterPagesSave.module on line 57 Fatal error: Call to a member function save() on integer in /home/.sites/24/site1275/web/site/modules/HookAfterPagesSave/HookAfterPagesSave.module on line 58 Line 57: $parent->offercheck = "2"; //example value to store in the parent page Line 58: $parent->save("offercheck"); //save the parent page
  17. I stuck with Pages:saved. Nothing will be added and stored in the parent page. Here is the code that I call from the module: public function init() { $this->addHook('Pages::saved', $this, 'saved'); } public function saved($event) { $page = $event->arguments[0]; if($page->template == "productpricelistitem"){ //page which will be edited $parent = $page->parent_id;//grab the parent page id -> works //HERE STARTS THE PROBLEM $parent->offercheck = "2"; //example value to store in the parent page in the field "offercheck" $pages->save($parent); //save the parent page } } $parent->offercheck = "2": This line of code should add the value 2 in this case to the offercheck field of the parent page. $parent is the id of the parent page. $pages->save($parent): This line of code should save the parent page (identified by its id $parent). This 2 lines of code make troubles - Maybe its not the right syntax or way to store a value in another page.
  18. Ok that make sense. I was inspired by this topic https://processwire.com/talk/topic/2331-doing-additional-logic-after-saving-a-new-page/ So I will dive into it to solve it with Pages::saved.
  19. I use a Hook module from Soma which adds the save action: https://gist.github.com/somatonic/11206761 Sorry wrong link - I look for the right one Cant find the page but this is the code of the Hook module, where I have added all my Hook events. <?php /** * Hook the saving of pages to add own processes. * * ProcessWire 2.x * Copyright (C) 2014 by Ryan Cramer * Licensed under GNU/GPL v2, see LICENSE.TXT * * http://processwire.com * */ class HookAfterPagesSave extends WireData implements Module { public static function getModuleInfo() { return array( 'title' => 'HookAfterPageSave', 'version' => 1, 'summary' => 'Delete offer price if standard price is selected.', 'singular' => true, // Limit the module to a single instance 'autoload' => true, // Load the module with every call to ProcessWire ); } public function init() { // init() is called when the module is loaded. // saveReady is a hook after processing the previous changes of the page, // but just before those changes are saved to the database. // It's called for each page that's being saved, no matter if it's in // the backend or in your templates via the api. $this->addHookAfter('Pages::saveReady', $this, 'afterSaveReady'); } public function afterSaveReady($event) { // 1) Get the soon to be saved page object from the given event $page = $event->arguments[0]; if(($page->template == "pricelistitem") AND ($page->parents("template=products"))){ $parentid = $page->parent_id; $parentpage = $pages->get($parentid); /* if(){ $this->message("Produkt wurde auf Angebot gesetzt"); $page->parents->offercheck = "1";//this should add the value 1 to the field "offercheck" in the parent template } else { */ $page->parent->offercheck = "1";//this should add the value 0 to the field "offercheck" in the parent template //} } // delete offerprice if standard price is choosen if(($page->template == "pricelistitem") AND ($page->pricetype == "1")){ $this->message("Angebotspreis wurde entfernt"); $page->offertprice = ""; } //delete all prices if pricekind is 3 or 4 if(($page->template == "pricelistitem") AND ($page->pricelistselect >= "3")){ $this->message("Standardpreis wurde entfernt"); $this->message("Angebotspreis wurde entfernt"); $page->offertprice = ""; $page->standardprice = ""; } //delete all dates if service is unlimited in time if(($page->template == "pricelistitem") AND ($page->timelimit >= "2")){ $this->message("Startdatum wurde auf jetzt geändert"); $this->message("Enddatum wurde entfernt"); $page->publish_from = $date = date('Y-m-d H:i'); $page->publish_until = ""; } // 2) delete event texts if event is cancelled or not //clean all up if event is cancelled if(($page->template == "events") AND ($page->cancelled == "1")){ $this->message("Folgende Felder wurden geleert: Einleitungssatz, Hauptteil, Preis, Preiszusatz, Veranstaltungsortname, Downloaddateien"); $page->body = ""; $page->introtext = ""; $page->eventprice = ""; $page->eventpriceadd = ""; $page->eventcosttype = "1"; /* foreach($page->downloadrepeater as $dp){ $dp->delete($p->downloadfield); $dp->downloadfieldtitle = ""; $dp->downloadfiledesc = ""; } */ $page->singleimage->deleteAll(); $page->editorimages->deleteAll(); } if(($page->template == "events") AND ($page->cancelled != "1")){ $this->message("Der Absagetext wurde entfernt"); $page->eventcancelledreason = ""; } } }
  20. Thanks KobraKai I guess I need a Hook because I run it from a Hook module in the backend after page save. Main problem at the moment is how to add a value from this page to the parent page. F.e. $page->parent->fieldname = "1" doesnt work
  21. Hello at all, I want to use a Hook after page save of a child page to add a specific value to the parent page under a certain condition. Here is the scenario. Page structure: - productoverviewpage -product detail page - productprice page 1 - productprice page 2 - productprice page 3 and so on The product overview page includes all product pages - so its the overview of all available products. The product page itself is the detailpage for the product. Every productpage consists of different sub pages with price information, because every product has more than 1 price (depending on size and amount). Examples: Productprice page 1 has the price of 5 Euro for a small bottle. Productprice page 2 has the price of 9 Euro for a big bottle. So every productprice page consists of a specific price for the same product. On the productprice page you can choose wheater this price is an offerprice or not (simple select form field) My Goal: I need to check all the productprice pages if there is an offer available or not. If there is an offerprice in one or more productprice pages than I want to add for example the value "1" to a text field of the parent page (product detail page) via a Hook after saving the productprice page. So this is what I have tried to add the value. //selectors $productpricepageselector = $page->template == "pricelistitem";//check if page is a productprice page $offerselector = 'pricetype *= "2"';//selector if any of the children contain an offervalue (value = 2 in pricetypefield) $productdetailpageselector = "template=products";//selector of the product detail page //condition if(($productpricepageselector) AND ($page->children($offerselector)) AND($page->parents(productdetailpageselector))){ $this->message("Produkt wurde auf Angebot gesetzt"); $page->parents->offercheck = "1";//this should add the value 1 to the field "offercheck" in the parent template } But nothing happens. Maybe this condition is not true : ($page->children($offerselector)) It should be like $parent ->children($offerselector) because it should check all the other children of the product detail page. Has anyone an idea? Best regards
  22. Hello @ all, I have tried to approve a comment via clicking the link in the notification email, but nothing happens. The comment is still in pending status. Here is the approval link: http://www.my-exampledomain.at/produkte/testprodukt/?field=commentsrating&page_id=2407&code=7yOVt2mdJGTcVnJoUZwdDe9piBaNpNWi_JbqcW7NLdI4e3PxOG_D71EFFlN3hm7RDXF9mMg6YbDcYCQJWvftaoSeGsnxDCt9vdqcfzoNAPDoR4DQHexVXQZhaEYcCgkr&comment_success=approve - commentsfield name is "commentsrating" - page id is "2407" - the code is the same as in the database - the URL to the page is correct (I only changed the true domain name to "my-exampledomain" for this posting) So everything seems fine. The only thing that comes to my mind is that I use the extended version with star rating https://processwire.com/talk/topic/10829-comments-fieldtype-with-star-rating/ - so the approval link could be not correct. I have tried "&commentrating_success=approve" and "&commentRating_success=approve" at the end of the link instead of the original "&comment_success=approve" but nothing happens. What could be the cause? Best regards Jürgen
  23. I have found an error: The voting system doesnt work because the field "field_commentsrating_votes" is not present. It seems that this field will not be produced during the installation. Only the standard field " field_comments_votes" from the standard comments without rating is present. SQLSTATE[42S02]: Base table or view not found: 1146 Table '7232549db11.field_commentsrating_votes' doesn't exist
  24. Question: Has anyone tried to add a user image to the comments? In my case people can upload a user image to their profile if they want. Now I also offer the possibility to add a comment to products (if you are a registered user or not). My goal: If the user is logged in and he has a profile image added to his profile, this image should be shown next to his comment. If the user is not logged in or has no profile image than a avatar should be displayed instead. I have checked the database columns for the comments and there is no column which stores f.e. the user id if a user was logged in. My idea was to add a new column for user identification that stores f.e. the user id so the user is identified as a registered user and the profile image could be added via the id (because the user is identified). Has anyone tried to achieve the same or has an better idea. I use a custom output for my comments so I can add everything I want. SOLVED: The user id will be stored. In my case an unregistered user has always the id "40" and a registered user has its own id. The value can be displayed in the comments by calling it inside the foreach loop with this name: created_users_id. Example: foreach ($comments as $comment) { $userid = $comment->created_users_id; } With the id it is possible to find and load the image of the user. Best regards Jürgen
  25. Its quite awesome how many items (products) are included on this site. A lot of hours of content entering.
×
×
  • Create New...