Recommended Posts

@owzim - It's a third-party parser that I chose as it has automatic delimiter detection. I read somewhere that str_getcsv is not RFC-compliant, but more importantly, it doesn't escape quotes correctly. That said, I might look into it and see what workarounds are worth the switch.

Regarding your issue, I'll need to look into it further - I don't know where those dates are even coming from, or why it's even trying to set dates at all (in the first instance); it could be something to do with the SQL defaults. What version of MySQL are you using?

Share this post


Link to post
Share on other sites

Interesting, when I use foo;bar, it translates uses that as the source and / as the destination, even though it has been set up to detect the delimiter. Anyways, I've never really liked that parser, so will switch to League\Csv shortly, especially since it will be used in v2. It could well fix the issue you have.

Share this post


Link to post
Share on other sites

Bumped to 1.5.48: Now using League\Csv for CSV importing. Note that delimeters are no longer automatically detected, and you need to specify your delimeter and enclosure characters separately. Blank lines are now also ignored.

@owzim - This might fix your issue as the importer now delegates the start and end times to the same method used for the main jumplink editor. If that works for you, then this will as well. If it doesn't fix the problem, then I'll need to investigate further. On my side, however, all looks good.

  • Like 2

Share this post


Link to post
Share on other sites

Hehe, 404 replies!

scrn_processwire.com-2017-01-30-08-03-26.png

(Wonder why the topic tags are stretched out like that...)

Anyways, for those of you who have not seen this yet, here's an update on progress. When v2 is ready for a release of any kind, I'll create a new thread for it. v1 will continue to be supported for those who still use PW 2.7- (for everyone using 2.8+, there will be no reason to stay on v1). v2 will have it's own repo (or perhaps I'll have v1 have it's own branch, and v2 will be dev/master -- maybe that's better).

  • Like 1

Share this post


Link to post
Share on other sites

What's the best way to handle spaces in the original URL? (and whitespace in general)

I found that if the requested URL contains spaces, the plugin won't start at all, i.e. there's also no debug screen on matches or compiled jumplinks even when debug mode is turned on. It doesn't seem to make a difference if the links are requested with spaces intact or by directly typing in %20 instead. Also, the pattern itself doesn't make a difference. I tried:

  • GEORGIA GARDNER GRAY.html
  • GEORGIA%20GARDNER%20GRAY.html
  • GEORGIA{space:any}GARDNER{space:any}GRAY.html

Is there a preferred way of handling this or am I missing something obvious?

Thanks :)

Share this post


Link to post
Share on other sites

@d'Hinnisdaël - The htaccess ruleset doesn't allow spaces in URIs as ProcessWire doesn't use them. However, this can easily be modified. Open the htaccess file and go to rules 16a and 16b. The default installation uses 16a by default, and you should switch to 16b if you require UTF-8 URIs. At the beginning of each character class (inside the square brackets), add \s to allow spaces. So, if you are using 16a:

RewriteCond %{REQUEST_URI} "^/~?[\s-_.a-zA-Z0-9/]*$"

(This assumes you are using the latest versions of PW - that is, 2.8 or 3.0.)

You can then just use normal spaces in your jumplinks, and they will be detected just fine, provided the correct wildcard type is used.

  • Like 1

Share this post


Link to post
Share on other sites

Hi Mike, any progress in the export functionality, I installed the latest version of Jumplinks on a site that was already using your older version. however the jump links got all wiped out. I need to get the old ones back in. :-)

Share this post


Link to post
Share on other sites
1 hour ago, quickjeff said:

Hi Mike, any progress in the export functionality, I installed the latest version of Jumplinks on a site that was already using your older version. however the jump links got all wiped out. I need to get the old ones back in. :-)

Hi Jeff - it's been a busy while for me, so dev is paused at this stage. Exporting will definitely be in v2, as well as a v1 to v2 migrator; no plans to add an exporter to v1. Hoping to get back into it soon, though I can already see the next few weeks being quite busy.

Share this post


Link to post
Share on other sites

Hi @kater, you're most welcome.

A plain query string request to the root of the site won't get caught by Jumplinks. You would be better off using htaccess to convert these to request URIs and then having Jumplinks process them.

RewriteEngine on

# These should go directly after the above
RewriteCond %{QUERY_STRING} ^q=(.+)$ [NC]
RewriteRule ^$ /%1 [R,L]

(Haven't actually tested it, but it should redirect /?q=something/else to /something/else with a 302 status code.)

Then omit ?q= from the source.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, Mike Rockett said:

 

 


RewriteEngine on

# These should go directly after the above
RewriteCond %{QUERY_STRING} ^q=(.+)$ [NC]
RewriteRule ^$ /%1? [R,L]

 

Thanks!
Works perfectly (little adjustment "?" to avoid passing through of query).
I've seen this solution in your former post but hoped there is a more direct way :)

  • Like 1

Share this post


Link to post
Share on other sites

@kater - Yeah, I thought I'd said it before, just wasn't going to go find it. Thanks for pointing that out. I might find a way to resolve this with v2 (when I get back into its development). I could probably use an early hook (instead of the pageNotFound hook) for jumplinks that require it. Just a thought from the top of my head.

Share this post


Link to post
Share on other sites

I have resolved my case with nginx maps, maybe someone finds this usefull.

Put all redirects to site-redirect.map

map $request_uri $redirect_uri {
    /index.php?id=1     /page/;
    /index.php?id=53    /another/page/;
    /index.php?id=62    /and/so/on/;
}

Nginx looks thru the list, and if it finds $request_uri match line in left column - it set $redirect_uri = value of right side of line ($redirect_uri var can be named as you want).

Then include site-redirect.map in http section of nginx config.
Now we must check for $redirect_uri in server section and if it is set - redirect to new URI, just like that:

include site-redirect.map;
server {
    # …
    if ( $redirect_uri ) {
        return 301 $redirect_uri;
    }
}

If map is big enought you may need to set map_hash_bucket_size to bigger value (in http section).

Here is some more examples to play with:

map $request_uri $redirect_uri {
    # ...
    ~/post-(?<id>\d+)\.html            /post/$id/;
    ~*/catalog/(?<page>.+)\.html?$     /goods/$page/;
}

(~)o

Share this post


Link to post
Share on other sites

Hi All,

I know I've been distant, but work has kept creeping up on me and I simply haven't been able to commit time to continue work on Jumplinks 2. At this stage, it's difficult to tell when I'll be able to continue, but I do hope it will be soon as I'd like to deprecate v1 as v2 is already so much better.

Again, truly sorry for the delays...

  • Like 7

Share this post


Link to post
Share on other sites

Hi Mike, appreciate your work, even with tight time budget, thank you so much!

I'd like to leave a comment on your suggestion to focus module development on PW V3 for future releases.

As long as new PW versions are being released in the 2.8 branch, module support for this branch would be desireable, IMHO.

Thanks for considering!

Share this post


Link to post
Share on other sites
2 hours ago, HerTha said:

Hi Mike, appreciate your work, even with tight time budget, thank you so much!

I'd like to leave a comment on your suggestion to focus module development on PW V3 for future releases.

As long as new PW versions are being released in the 2.8 branch, module support for this branch would be desireable, IMHO.

Thanks for considering!

You're welcome. :) I can do that, considering that it is already implemented. It's a workaround that I'm not particularly fond of though (from a namespace point of view). I'll keep it in until an alpha release, at which point maybe someone has a better alternative that can be used instead - so we can take it from there.

Are you using the legacy branch?

Share this post


Link to post
Share on other sites
On 15.6.2017 at 1:54 PM, Mike Rockett said:

Are you using the legacy branch?

Thanks, Mike!

Not sure what's the overall statistics (all users/installs), but for me it's still 100% 2.8.x

(never touch a running system :-) )

  • Like 1

Share this post


Link to post
Share on other sites

HI

I have installed this on one site with no issues, but running into a problems on another:

 Module reported error during install (ProcessJumplinks): SQLSTATE[HY000]: General error: 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

 Failed to init module: ProcessJumplinks - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db-name.process_jumplinks' doesn't exist

I uninstalled and reinstalled and no joy.

I am on PW 3.0.64

I had redirects installed previously, but uninstalled first.

Any thoughts?

Share this post


Link to post
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


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By flydev
      PulsewayPush
      Send "push" from ProcessWire to Pulseway.
       
      Description
      PulsewayPush simply send a push to a Pulseway instance. If you are using this module, you probably installed Pulseway on your mobile device: you will receive notification on your mobile.
      To get more information about Pulseway, please visit their website.
      Note
      They have a free plan which include 10 notifications (push) each day.
       
      Usage
      Install the PulsewayPush module.
      Then call the module where you like in your module/template code :
      <?php $modules->get("PulsewayPush")->push("The title", "The notification message.", "elevated"); ?>  
      Hookable function
      ___push() ___notify() (the two function do the same thing)
       
      Download
      Github:  https://github.com/flydev-fr/PulsewayPush Modules Directory: https://modules.processwire.com/modules/pulseway-push/  
      Examples of use case
      I needed for our work a system which send notification to mobile device in case of a client request immediate support. Pulseway was choosen because it is already used to monitor our infrastructure.
      An idea, you could use the free plan to monitor your blog or website regarding the number of failed logins attempts (hooking Login/Register?), the automated tool then block the attacker's IP with firewall rules and send you a notification.
       

       
      - - - - - - - - - - - - - -
      11-22-2017: added the module to the modules directory
       
    • By netcarver
      Part 1 of a 2 part Module & Service Reveal.
      I'm currently working on a new module: ModuleReleaseNotes that was inspired by the work I originally did on making Ryan's ProcessWireUpgrades module "release" aware. In the end, I decided to ditch the approach I was originally taking and instead work on a module that hooked in to the UpgradeConfirmation dialog and the module edit page.
      Aims
      My aims for this module are as follows...
      Make discovery of a module's changes prior to an upgrade a trivial task. Make breaking changes very obvious. Make reading of a module's support documentation post-install a trivial task. Make module authors start to think about how they can improve the change discovery process for their modules. Make sure the display of information from the module support files/commit messages doesn't introduce a vulnerability. Looking at these in turn...
      Making discovery of a module's changes prior to upgrade a trivial task.
      This is done by adding a "What's changed section" to the upgrade confirmation dialog.  This section takes a best-effort approach to showing what's changed between the installed version and the updated version that's available via the module repository.
      At present, it is only able to talk to github-hosted repositories in order to ask them for the release notes, the changelog file (if present) and a list of commits between the git tag that matches the installed version and the tag matching the latest version.
      It will display the Release Notes (if the author is using the feature), else it will display the commits between the tags (if tagging is used by the module author) else it will show the changelog file (if present) else it will show the latest N commits on the master branch (N, of course, being configurable to your liking.)
      An example of the Github Release Notes pulled in for you, taken from Mike Rockett's TextformatterTypographer Module...

      An example of a tag-to-tag commit list from the same module...

      An example of a changelog - formatted to show just the changes (formatting styles will change)...

      Finally, an example of a fallback list of commits - sorry Adrian ...

       
      Making breaking changes obvious.
      This is currently done by searching for a set of configurable search strings. Later versions may be able to support breaking change detection via use of Semantic Versioning - but this may require some way of signalling the use of this versioning standard on a module-by-module basis.
      For now, then, you can customise the default set of change markers. Here I have added my own alias to the list of breaking change markers and the changes section of the changelog is styled accordingly (these will be improved)...

       
      Make reading of a module's support documentation, post-install, a trivial task.
      This is done by making some of the support files (like the README, CHANGELOG and LICENSE files) readable from the module's information/settings screen. There is an option to control the initial open/closed state of this section...

      Here is Tracy's README file from within the module settings page... 

       
      Make module authors start to think about how they can improve the change discovery process for their modules.
      There are notes in each of the sections displayed on the upgrade confirmation page that help authors use each of the features...

       
      Make sure display of external information doesn't introduce a vulnerability.
      This is an ongoing concern, and is the thing that is most likely to delay or prevent this module's release lead to this module's withdrawl should a vulnerability be found. Currently, output is formatted either via Markdown + HTML Purifier (if it was originally a Markdown file) or via htmlspecialchars() if it has come from a plaintext file.
      If you discover a vulnerability, please get in contact with me via the forum PM system.
       
      Ongoing...
      For now, I've concentrated on integration with GitHub, as most people use that platform to host their code. I know a few people are hosting their repositories with BitBucket (PWFoo comes to mind) and some with GitLab (Mike Rockett?) and I would eventually like to have adaptor implementations for these providers (and perhaps GitKraken) - but for now, GitHub rules and the other hosts are unsupported.
       
      Links
      Github: ModuleReleaseNotes
      PW Module Repository: Here
    • By FrancisChung
      Hi,
      I was wondering if anyone knew what this did? 

      If so, do you know what modules it actually impacts? Is there another log that lists the action it took?

      I'm having some weird problems with PHP duplicate declaration per link below, since this module was run.
       
       
    • By tpr
      AdminOnSteroids
      Various admin tweaks to enhance ProcessWire admin.
      http://modules.processwire.com/modules/admin-on-steroids/
      https://github.com/rolandtoth/AdminOnSteroids