Jump to content

sodesign

Members
  • Posts

    75
  • Joined

  • Last visited

Posts posted by sodesign

  1. Hi everyone,

    I saw a forum post back in 2023 about a new PagesVersionsPro module which could provide page version history.

    Anyone know what the status is of this module? If you've used it, does it behave anything like the revisions feature in Wordpress and Craft? 

    Thanks!

    • Like 1
  2. No the template name doesn't contain the word Repeater.

    I don't know of any reason why this particular template would have a custom page class (I hadn't even heard of them until this issue!).

    For now I have removed "pageClass":"RepeaterPage" from the data column for this template in the DB and the other languages can now be activated.

    I'll test all the features associated with this page and see if this change had any bad consequences.

  3. Hello,

    I'm having a weird issue where I can't activate pages in other languages if they're using a specific template. Pages using other templates work fine.

    I have tried ticking the box in the page's settings tab, and tried using $page->setAndSave("status$lang"); with the api. The box just shows as unticked again when I refresh.

    The only thing I can notice about this template is at the bottom of the setting page where it says 'Page object class: RepeaterPage' (see attachment). Does anyone know what this means and whether it could be the cause of the problem?

    Thank you!

    CleanShot 2024-03-19 at 15.33.50.png

  4. Thank you for the pointers. I checked a new simple mutation on a different template and it was all ok.

    I checked the hooks we have running on the ConfiguratorQuote template I used in the original mutation and managed to find the problem. Surprisingly it was to do with a page saved hook ending up in an infinite loop. I'm not sure why it wasn't happening on the earlier core version but that's not a discussion for this board!

    Thanks for your help and looking into it so quickly ?  

  5. Hi @dadish,

    I've been using your module since 2018, and it's been really solid, thanks for all your work.

    I wonder if you can help with a recent issue I've had since updating Processwire core from 3.0.200 to 3.0.227+?

    I have a single mutation which creates a new page, and its fields are a mix of text fields, number fields, and page reference fields. Since updating PW core, the mutation hangs, and the only error I see is a 504 Timeout. The site seems to completely lock up as well when there's a pending query.

    Is there anything you can suggest to help debug this?  I'm running v2.0.0.

    Thanks,
    Tom

    PS -

    I've done a little more digging. I get the same problem with 1.4.1 and 2.0.0. There's no problem in PW 3.0.222, it only happens with 3.0.223 and higher.

    Here are a couple of screenshots showing the error in the GraphiQL tool - one with the error on 3.0.229, and one where it works on 3.0.200.

    Interestingly, although I get an error on 3.0.229, the page is created successfully, it just isn't reported as a success.

    successful request on PW 3-0-200.png

    unsuccessful request on PW 3-0-229.png

  6. Hi all,

    I'm having trouble with an import. Some translated text imports correctly, some doesn't. There are no errors or warnings displayed.

    Background

    We're running a big import on a file which was originally exported using the built in Export/Import module. Trying this both in the Admin, and by using 

    $importer = new PagesExportImport();
    $importer->importJSON($json); 

    Seems like some text imports correctly, some doesn't. Some fields which work are inside MatrixRepeaters, some are just fields on the page. The same field types even work some places but not others.

    The import runs without error, and the message shown suggests all the fields imported correctly.

    Debugging

    I have been trying to identify if anything is failing silently. I've been reading PagesExportImport.php and I think line #978 is the function call where the imported field content is saved:

    $page->set($field->name, $pageValue)

    The thing is, when I print the values either side of this function, the field values are correct. I'm not familiar enough with the inner workings of PW to really understand what might be going on. 

    Next steps

    Where else should I check? Are there any other functions used to save imported field content? 

    Or are there any better ways to go about debugging this?

    Thanks!

     

    Edit - I've attached 2 screenshots. the Messages are with const debug = true; set in ProcessPagesExportImport.module. I believe they show that the import should have worked. The heading screenshot field shows that the translations didn't import correctly. I'm not sure if this is a bug or something I'm missing.  

     

    CleanShot 2023-06-14 at 13.43.35.png

    CleanShot 2023-06-14 at 13.43.03.png

    • Like 1
  7. Just to follow up - found out this is fairly simple to do with a php script. There are 2 important methods in wire/core/PagesExportImport.php

    I haven't dug into options or error handling, but this approach achieved what I needed it to.

    Ran this on website 1 to export the content:

    <?php
    namespace ProcessWire;
    
    include "index.php"; // bootstrap ProcessWire
    
    $pages_to_export = $pages->find('template=my-template');
    
    $exporter = new PagesExportImport();
    $data = $exporter->exportJSON($pages_to_export, []);
    file_put_contents('resources-image.json', $data);

    and this on website 2 to import:

    <?php
    namespace ProcessWire;
    
    include "index.php"; // bootstrap ProcessWire
    $importer = new PagesExportImport();
    $json = file_get_contents('resources-image.json');
    $data = $importer->importJSON($json, []);
    • Like 4
  8. Hi everyone,

    We have some huge pages filled with repeaters, each containing 100s of images/files and page reference fields.

    We need to migrate them to another site.

    Currently the Export fails (sometimes because we run out of memory, most times because the page times out.). Is there a way this module can batch the work? 

    Alternatively, is there any documentation for using this module in a script?

    Thanks!

  9. That makes sense,  finding the connection between production 'media manager pages' and the staging usual pages media manager fields is where I was getting stuck trying to use a selector but your suggestion of looping through and creating the two arrays to compare is a great idea.

    The only question I still have is with point 8:

    9 hours ago, kongondo said:

    Loop through the newly imported pages in staging, loop through their MM fields and replace 1234 with 5623.

    How do I add a MM page to the MM field using the API if the field is currently empty? 

    I'll be sure to check out ProcessDatabaseBackups! Can it handle individual parts of a site?

  10. I wonder if anyone can help. I'm writing an import script to add a few hundred pages to a site, and each page has a media-manager-image field. (It's for a staging site where I'm merging some recent content from a production site to keep it up-to-date.)

    I successfully imported the pages using the native Processwire Import/Export, but the media manager fields were empty. I think this is because the page IDs are different on the production site and the staging site.

    I have also successfully imported all of the media manager pages and assets to the staging site.

    Is there a way I can populate the media-manager-image fields with the API? 

    Thanks in advance, I've been pulling my hair out trying to achieve this! ?

    // I tried this approach, but it's not right
    $existing_image_path = extract_img_path($img); // custom function to parse CSV, eg '/site/assets/files/86258/an-image-name.jpg'
    $exists = wire('files')->exists($existing_image_path);
    if ($exists) {
    	// This doesn't work because it's not an image field
    	$p->blog_images->add($existing_image_path);
    }
    $p->save();
    
    // I then tried several ways like this, because the media is all on the staging site, but I couldn't find a way to query the media manager // pages successfully
    $filename = extract_img_filename($img); // custom function to parse CSV, eg 'an-image-name.jpg'
    $filename_query = "media_manager_image.filename=$filename";
    $m = wire('pages')->find("template=media-manager-image,$filename_query");
    if ($m->id > 0) {
    	// This doesn't work because it's not an image field
    	$p->blog_images = $m;
    }
    $p->save();

     

  11. Hi everyone,

    I'm working a on a big site redesign at the moment which requires a separate staging site.
    The client is regularly publishing changes on the production site which we occasionally need to merge across to the staging site, along with things like contact form entries.

    ProcessPagesExportImport generally does a great job here, but we're finding some instances where images aren't merged across.
    Specifically built-in image fields, images within CKEditor fields, images within repeaters, and media fields from the MediaManager module.
    Sometimes they migrate successfully, sometimes they don't. I'm not seeing any error messages or exceptions in the logs.

    Are there any gotchas I need to be aware of? I wondered if it might be to do with the fact pages have different IDs in production/staging, or that a page ID might already be occupied on staging by a different page.

    Thanks!  

     

  12. I'm writing a custom translation exported for a client and I'm having trouble outputting static translations in languages other than the default.

    Here's what I'm trying to do, but it's just outputting English both times. I must be missing something, but can't see anything in the docs or forum about how to acheive this. 

    <?php 
    
    function echoSnippet($string, $lang) {
      // Echo the string in english
      wire('user')->setLanguage(wire('languages')->get('name=en'));
      echo __($string);
      
      // Echo the string in german
      wire('user')->setLanguage($lang);
      echo __($string);
    }
    
    $lang = $languages->get("name=de");
    echoSnippet("Page not found", $lang);

     Does anyone have any pointers?

    Thanks!

×
×
  • Create New...