Jump to content

Jim Bailie

  • Posts

  • Joined

  • Last visited

Everything posted by Jim Bailie

  1. FWIW -- I have a template called "downloads". When someone goes to https://example.com/downloads/specialfilename.php, the file name is treated as a url segment. From the url segment, I will essentially: Search for the file Make sure it's there Then deliver it via the mime process // Get page ($p) where the file lives // Still here, so lets see if we can get the actual file $file = $p->filesManager->getFile($fileNameSanitized); if(!$file) return 'File not found(3)'; header("Content-Type: application/pdf"); header("Content-Disposition: inline; filename=$fileName"); header("Content-Transfer-Encoding: binary"); header("Accept-Ranges: bytes"); @readfile($file->filename); return true;
  2. @JoseFrasher Update: Not really. It is what it is. If you set your 404 page to a page with a protected template, that page will render for Guest and not redirect to the page that it should redirect to **If you have a url segment in the URL**. My solution was to just create a dedicated 404 page with its own template and handle things there. Probably a better approach than what I had originally.
  3. Thanks. Ok, this is a closed application and there's a 404 redirect in config.php set to go to a page/template with active access control. Therefore if I add a url segment to a protected page/template, it will get 404 redirected to a page/template that should redirect to a login page if there is no active session, but that protected page is rendered instead. I hope this makes sense. It's not the end of the world as I will need to do some checking in the code, but it is unexpected behavior.
  4. I have a page: "example.com/privatepage" that has a template requiring users with a specific role. But if I type in "example.com/privatepage/some-url-segment" then the page renders!! I'm not seeing an obvious solution in the template settings...
  5. @elabx Thanks, yes. On other pages, I believe this is now interfering with a SAML check/authentication process as well. $config->prependTemplateFile = '_init.php'; /** * Append template file * * PHP file in /site/templates/ that will be loaded after each page's template file. * Example: _main.php * * @var string * */ $config->useMarkupRegions = true; $config->appendTemplateFile = '_main.php';
  6. Hello - My _init.php file is running twice and it's become urgent. The screenshot below is on the home page of a simple echo 'In Init'. There is nothing fancy going on on the home page that could lead to any path of inquiry. (See thread below AND the github issue referenced therein) Therefore, this is leading me to thing that it has something to do with regions perhaps. // _main.php <div id="main-content"> <footer>Footer content</footer> </div> // template: home.php <div pw-prepend="main-content" class="min-h-full flex flex-col justify-center items-center bg-gray-200"> Some content </div>
  7. Wow. I'm starting to see a pattern here. Thanks again!
  8. Hello. Does anyone have any idea how to get the whole file name to display in the admin?
  9. @da² It certainly is peculiar; disdainful even. But this is that one basis point case where it's simply a convenience to show/format a bunch of legacy content from an old database.
  10. @Robin S Interesting. Looks like another area to brush up on. Thanks again!
  11. This example from https://www.php.net/manual/en/functions.variable-functions.php does not work in PW or any script bootstrapping the same (namespacing?). function foo() { echo "In foo()<br />\n"; } $func = 'foo'; $func(); // This calls foo() I'm sure there is an explanation for this, but I haven't been able to discover that as of yet.
  12. This is terrific. Thank you again! Learning a lot here.
  13. @Robin S When a file is replaced, I need to capture the date of the replacement and put in a page field. I'm not anywhere near your skill level, but starting to get comfortable with the basics all thanks to many of your recent posts and replies. Could you offer some guidance on how I might pursue this either with your module's code or some sort of hook arrangement? Thanks again!
  14. Thank you all for your input. "$"s in PW proper are likely a lost cause for now. But I think I have the right solution. I dug up an old nginx rewrite rule from a while back and it works! rewrite ^/concepts/(.*)$ /downloads/?q=$1 last; So the filename in "/concepts/My_Test_File4$$$.pdf/" can now be captured via $input->get('q') unmolested.
  15. Hmm. I'm using nginx and "/concepts/?fileName=My_Test_File4$$$.pdf" does print correctly. I had to work with nginx rewrites a while back and it was sort of a PITA, but this might be the way to go. Yeah, I'll try to get it to work. Thanks!
  16. @da² Thanks, but the problem is that these full links need to be preserved because they're widely published inside this organization and among their clients and customers sales materials, so they have to be the same. I was hoping to have PW "fully" manage the files because it would be such a relief to the admins and would allow the org to track the viewership to a certain extent. I thought some of the information in this article would help, https://processwire.com/blog/posts/page-name-charset-utf8/ , but I just don't think PW is going to have anything to do with having a "$" anywhere near a url. 🤷‍♂️
  17. Taking inspiration from @Robin S's recent tutorial, I told a client we could map all their old pdf file names/links to their newly migrated, and sanitized files in PW. No problem, right? Last night I set up the URL hook "/concepts/{filename}", and /concepts/My_Test_File4$$$.pdf doesn't even fire the hook and throws a 404. So I disabled the hook, created the page "concepts" with a template that allows all url segments. "/concepts/My_Test_File4$$$.pdf" throws a 404. I've read EVERYTHING google/forum will give me pertaining to URL hooks and special chars in page names and such. Just looking for one more trick before I have to go native and just duplicate all the migrated files in their original directory structure. Thanks!!
  18. Update: Somehow by looking at Pagefile.php I was able to figure out how to set the uploadName via the API. It seems to work... $path = "/var/www/dvmrebuild/storage/"; $fileName = "My_Test_File4$$$.pdf"; $p = $pages->get(1214); $p->of(false); $p->venue_files->add($path . $fileName); $p->save('venue_files'); $p->of(false); $vfile = $p->venue_files->last(); $vfile->file_upload_date = date('Y-m-d'); $vfile->file_title = 'My Test File 4'; $vfile->file_original_name = $fileName; $vfile->filedata('uploadName', htmlentities($fileName)); $p->save('venue_files');
  19. @Robin S It works! I was studying your module to see if I could start digging into it, but right now it might be one pay grade above where I'm currently at; though I feel like I'm catching up. Thank you again. And just FYI, note the placement of the rename/replace link: I'm on Windows, Firefox, Monitor at standard 1920 x Whatever
  20. @bernhard Thanks for doing that. I'll dig up my github info and give a thumbs up. In the meantime, I'll try to cobble something together with some file template fields and some of @Robin S's examples above and in another post. I also wonder if the fact that the API does not preserve the uploadName cascades down to the fact that the uploadName is not set in Robin's file rename/replace module.
  21. @bernhard Here's the test code. Pretty simple; it uploads the file fine with the sanitized file name. When I loop through after, it outputs the file name and upload name which are the same. $path = "/var/www/dvmrebuild/storage/"; $fileName = "My_Test_File3$$$.pdf"; $p = $pages->get(1214); $p->of(false); $p->venue_files->add($path . $fileName); $p->save('venue_files'); foreach ($p->venue_files AS $vfile) { echo $vfile->name . ' => ' . html_entity_decode($vfile->uploadName) . '<br>'; } # Outputs: # my_test_file3.pdf => my_test_file3.pdf
  22. Hmm. Wow. This is great! I've got some work to do this weekend. I'll be testing this asap, but I will ask you in advance: Do you think the replace/rename module will preserve the upload name after replacement? Edit BTW, PW 3.0.226 - I'm not seeing the uploadName in the tooltip. The upload name was "conservation_station_tester2$$$.pdf" (see below) Good News -- I AM seeing upload names when looping via the API for files that have been manually uploaded Bad News -- Rename/Replace module DOES REMOVE the original upload name and replaces with the sanitized version. Bad News -- Uploading a file via the API places the SANITIZED value into uploadName I'd be grateful for any more insights or ideas you may have on how to proceed. Thanks again!!
  23. @Robin S This is really neat the more I look at it. I wonder if I can drop the upload name into a template field so the admins have a visual frame of reference on the admin screen. Will try this out.
  24. We are transferring via API and it works fine. It's just that when event_concept_test$$$.pdf is loaded via api or manually, it DOES NOT retain the $'s And your tutorial is wonderful, but I really worry about confusion among the admins. If I understand correctly they won't see the non-sanitized file name and could lose track of which file is which if they check their work in the front-end.
  • Create New...