Jump to content

Robin S

Members
  • Posts

    5,009
  • Joined

  • Days Won

    333

Everything posted by Robin S

  1. This is the first time I've used WireMail and WireMail Mailgun and I'm having a problem where mail is showing as delivered in the Mailgun logs but nothing appears in my inbox, or in spam folder. Solved: see edit below If someone can confirm I've followed the installation and setup correctly... 1. Open account at Mailgun, choosing domain mg.mydomain.com 2. Set up TXT, CNAME and MX records for mg.mydomain.com at domain registrar, according the values provided by Mailgun. Mailgun verifies these records are set correctly. 3. Installed WireMail Mailgun module 4. Configured WireMail Mailgun module, filling out all fields. Unchecked "Disable cURL SSL Check". Default Sender Email Address: no-reply@mg.mydomain.com (does this need to be an address where there is an actual mailbox to receive replies?) 5. Tried to send test message by putting the following in a template file and viewing from frontend: $mail = wireMail(); $mail->to('myaddress@gmail.com')->from('no-reply@mg.mydomain.com'); $mail->subject('Testing Mailgun'); $mail->body( 'Just testing.' ); $mail->send(); In the Mailgun dashboard I can see entries in the log for mg.mydomain.com like Test delivered: no-reply@mg.mydomain.com → myaddress@gmail.com 'Testing Mailgun' But no mail arrives to me. Mailgun does not show any bounces or errors. The label "Test delivered" makes me wonder - is Mailgun in some sort of test mode? I'm not using the sandbox feature. Looked for entries in /site/assets/logs/mailgun.txt but no such log exists. Is that normal? Any help much appreciated. Edit: I obviously should have looked more closely at the module config. Maybe this should be unchecked by default? Yeah, excuses, excuses...
  2. I have a date-only field configured as below and its unformatted value returns as a timestamp.
  3. @adrian, when used in a selector, doesn't a datetime field return the unformatted value, i.e. a timestamp? So it should be okay to compare it with a supplied timestamp. Also, as I've been learning recently, you can use relative time words directly in a $pages->find() selector (but not in PageArray filter selectors) $allNews = $page->children("template=news, date<=now"); // edit: this doesn't work Edit: ha, and now that I pay attention I see that of course that isn't a $pages->find() selector, so would need be written differently to have the minor convenience of using relative time in the selector : $allNews = $pages->find("parent=$page, template=news, date<=now");
  4. @Soma, What do you think about adding an option to prepend the Home page (just that single page) besides the "show_root" => true option? The problem I'm finding with show_root is that it cancels the usefulness of using a PageArray for the root page argument. Take this example: $nav = $modules->get("MarkupSimpleNavigation"); $main_sections = $pages->find("parent=1, template=foo"); $nav_options = array( "show_root" => true ); $menu = $nav->render($nav_options, null, $main_sections); Here I want to use a PageArray for my menu root items rather than craft a long selector to match those pages and all children of those pages. But I also want a link to the Home page in the menu. When I add "show_root" => true I also get every descendant of the Home page, which effectively cancels out my root pages selection.
  5. Thanks, Github issue here: #1811
  6. @BitPoet, thanks, your module works well in PW 2.7.3 Feel like extending it with an unpublish button for published users? :grin:
  7. @adrian, in the thread you linked to you say Do you mean that this is actually the correct/desirable behaviour for an empty checkbox and therefore it is not a bug that checkbox!=1 does not match pages with empty checkboxes? Soma's Github issue is worded a bit differently so am thinking of opening a new issue, but just want to confirm that checkbox!=1 is expected to match an empty checkbox.
  8. I don't think this step is necessary. Checking the page source of the Edit Page screen to see the rendered CKEditor config is revealing. For your CKEditor field: Edit Field > Input > Plugins > Remove Plugins Delete 'magicline' if it is shown here.
  9. Hi Louis, This is a strange one. I did some testing (as opposed to just writing code in the browser like I did previously) and it seems the problematic part of the selector is: includeFooter!=1 I took this construction from a post here on the forum that suggests that this matches unchecked checkboxes but for some reason this doesn't seem to work. This works: includeFooter=0 and this: includeFooter='' But the weird thing is that neither 0 nor '' equals 1 so I don't understand why the !=1 construction doesn't work. Maybe someone can explain this.
  10. Thanks @mr-fan, I'm familiar with that thread and I am activating users via an email link. But in principle I think unpublished/published users is the ideal way to have users in an inactive/active state. That's what the published status of a page is for, so it shouldn't be necessary to add a new field for the same purpose. And it also has the benefit of preventing login and view access for unvalidated user accounts without the need for additional logic in login functions and page templates.
  11. Thanks for the module! Another approach to inherit the values of parent page fields: $foo = $page->foo ?: $page->closest("foo!=''")->foo; So if field "foo" is empty for the current page $foo gets the value of the closest parent in which field "foo" is not empty. Not to say this is as flexible as your module approach though.
  12. Solved now - $sanitizer->textarea works just fine with no options needed. I just couldn't see the line breaks because I put the plain text message in WireMail's bodyHTML.
  13. When using basic WireMail I'm looking for a way to convert the HTML message to a plain text version while keeping line breaks. For example, I want: <h1>She sells seashells</h1> <p>On the sea shore.</p> ...to become... She sells seashells On the sea shore. I thought one of the sanitizer methods might help out here and I've tried a few things with the "newlineReplacement" option for $sanitizer->textarea but no luck yet. Any suggestions?
  14. Users are pages, but in the Users section of the admin there isn't the same support for unpublished users as for unpublished pages. When users register on the frontend I set their status to unpublished until their email address is validated (thanks to a suggestion in the forums from Soma). But while users are unpublished it isn't possible to make edits to their profile via admin because there is no "Save and keep unpublished" button like there is for other pages. To save changes in admin the user must become published. Also, there is no ability to unpublish a user from admin. This would be a useful option if a user account needs to be suspended rather than deleted. Edit: another small thing that would be nice to have is for the user list to honour the useHoverActions config preference for PageList. I keep hovering on the user list and then I remember I have to click the name to get the flyout links.
  15. Just a heads-up that there appears to be a conflict between Batch Child Editor and Pierre-Luc's Password Reset module. ProcessWire: ProcessPageEdit: Unknown template #0 ...\site\modules\BatchChildEditor\BatchChildEditor.module(711): BatchChildEditor->isAllowedTemplateAdd(147, Object(Page)) #1 ...\site\modules\BatchChildEditor\BatchChildEditor.module(348): BatchChildEditor->createChildEditSet(Object(Page), Object(Page), Object(InputfieldWrapper)) #2 ...\wire\core\Wire.php(459): BatchChildEditor->addChildEditFieldset(Object(HookEvent)) #3 ...\wire\core\Wire.php(333): Wire->runHooks('buildFormChildr...', Array) #4 ...\wire\modules\Process\ProcessPageEdit\ProcessPageEdit.module(456): Wire->__call('buildFormChildr...', Array) #5 ...\wire\modules\Process\ProcessPageEdit\ProcessPageEdit.module(456): ProcessPageEdit->buildFormChildren()
  16. Thanks for this module, Pierre-Luc. I get a couple of errors when using it. When assigning the template "password-reset" to a page or attempting to edit a page with the template assigned I get: Edit: this error seems to be caused by a conflict between Password Reset and the Batch Child Editor module. After uninstalling Batch Child Editor the error message is not shown. And when viewing a page with this template assigned on the frontend I get: Looking at line 32 maybe this error is because my site is not multi-language?
  17. I forgot the quote marks for the find selector. Have updated my post.
  18. If the renderChildrenOf() function is producing the markup (classes, etc) you need for a Bootstrap menu then you won't need to make any changes within the function. It already contains a foreach within the function so you just need to give it the PageArray of the top-level menu items. $homepage = $pages->get(1); $main_nav = $pages->find("parent=1, includeFooter!=1"); $main_nav = $main_nav->prepend($homepage); echo renderChildrenOf($main_nav); Depending on what you want for the footer menu you might use renderChildrenOf() for that too, or write your own foreach for $footer_nav
  19. Sounds good to me.
  20. I think you already solve that scenario with if(strpos($imageVideoName, 'video-') === false) continue; So a manually uploaded image will not be replaced (well, unless the image name by chance included the string 'video-' but that's unlikely). And that makes total sense to me. It wasn't what I expected at first but now I understand the intention behind it I see how it's the best option. And this behaviour could be mentioned on the module config screen or module description to clear up any confusion.
  21. Hi Adrian, It's totally fine if you think it's best to require the thumbnail field to have maxFiles '0' - as I mentioned above, I can only see myself using the module with a dedicated image field that I will make non-editable to users, so for me the field will only hold a single image even if maxFiles is set to 0. But if you wanted to support fields with maxFiles '1' I found that simply reordering the code in your module (the version before your most recent release) fixed the bug. By placing this section... //Delete any images from videos that were removed from the text fields during this update if($page->{$this->videoImagesField}){ foreach($page->{$this->videoImagesField} as $videoImage){ $imageVideoName = pathinfo($videoImage->filename,PATHINFO_FILENAME); if(strpos($imageVideoName, 'video-') === false) continue; if($this->whichImages != 'firstAvailable') { $imageVideoNameArray = explode('-',$imageVideoName); $imageVideoID = str_replace('video-', '', trim(str_replace(array_pop($imageVideoNameArray), '', $imageVideoName),'-')); } else{ $imageVideoID = str_replace('video-', '', $imageVideoName); } if(!in_array($imageVideoID, $allVideos)){ $page->{$this->videoImagesField}->delete($videoImage); $page->of(false); $page->save($this->videoImagesField); } } } ...above the sections that grab the thumbnails from YouTube/Vimeo any unneeded thumbs are disposed of before the field is repopulated with the new thumbnail. But I didn't do extensive testing so there are perhaps consequences to reordering the code like this.
  22. Sorry, sloppy testing on my part. You're absolutely right; relative time only works for $pages->find(). Shame though, as would be nice to use it for PageArrays.
  23. Thanks @BitPoet, you've helped me understand this better. It was because my relative time string was cast to an integer that I was getting confusing results (rather than an error or no results at all). Although in regards to... ...I ran a couple of tests and it seems that relative times work for any PageArray - so they do work for $pages->find(someselector)->find(selector_with_relative_timestamp). Edit: does not work And relative times seem to work for any custom Datetime field, so not just "created", "modified" and "published". But you've nailed it about the Comments fieldtype, which of course is not a PageArray. Would be nice to use relative times with a Comments find so thanks for making that Github request. Although now I understand a bit more about when relative times are possible and when they're not it's pretty easy to just do: $time = strtotime('2 days ago') or whatever and use the variable in the selector. And a little off-topic, but for anyone wanting to do a find on comments across multiple pages this function from Ryan's blog profile is very useful. FieldtypeComments::findComments should probably be mentioned in the Comments docs.
  24. Thanks @LostKobrakai, I think you may have hit upon what is giving me the unexpected results when using a relative time in a selector. I did some testing with a $pages->find() selector on a datetime field and the results were identical for strtotime and for having the relative time in the selector. So no problem there. But the selector that is giving me odd results when the relative time is in the selector vs stored in a variable as a timestamp with strtotime is: $comment_page->comments->find("created_users_id=$this_user, created>='20 hours ago'") This uses find on a comments field - does this find operation filter in memory or with a database query? Is there a way to know when a particular find operation will be performed in memory?
×
×
  • Create New...