Jump to content

Marvin Scharle

Members
  • Posts

    45
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Marvin Scharle

  1. All that led me to create my own  file array for front-end.

    $config->siteScripts = new FilenameArray();
    $config->siteStyles = new FilenameArray();

    Now that isn't something other front-end module know of so maybe it again isn't good regarding that, where the core $config->scripts could give a standard, so third party front-end modules could rely on. I just don't think mixing them isn't very nice.

    You can pass any FilenameArray to AIOM starting on version 3.2.

    I know, this solution is not optimal but it is our solves the given problem of artamteex.

    • Like 1
  2. Please make it a possible for absolute path from root. That traversal back with ../../ is not very convenient at all. I have a fork I'm using ever since where I changed it to allow for files outside templates folder using root path.

    Hi Soma,

    I totally agree with you. Currently, It is possible to use absolute paths using the $config->scripts and $config->styles arrays (see: https://github.com/conclurer/ProcessWire-AIOM-All-In-One-Minify/issues/20).

    We are planning to change the behavior of AIOM in AIOM 4. 

    Thanks in advance!

    Marvin

    • Like 2
  3. The CSS compression bug I described in my earlier post has been fixed in AIOM version 3.2.

    As you can see, we've updated AIOM to version 3.2. In this version we shift from the current CSS compressor to YUI, which should solve multiple CSS-related bugs.

    This unfortunately doesn't work for me - leaves me with empty css.

    My PW is installed in subdirectory. Stikki fix was there already. Does any of you know what might be happening?

    (I'm no a good coder)

    Can you please verify if the bug is still present in AIOM 3.2? An empty CSS file sounds for me like a problem with your CSS code...

  4. Hello everybody,

    our next module is an performant manipulator for Pageimages. It is called GIM.

    GIM is basically a wrapper for the PHP library Gregwar's image class, which performs many image manipulations. The wrapper is written in a way that is compatible with Horst's PageImageManipulator's (PIM) syntax.

    How does it work?

    GIM extends ProcessWire's Pageimage objects. You can load every image with the method gim(), perform some operations and save the image with the save() method:

    $image = $page->image->gim()->grayscale()->save();
    

    The save() method returns another Pageimage object, so you can use it with other native ProcessWire methods and hooks.

    Methods

    GIM includes a lot of methods for image manipulations. You can find them in more detail on our module page.

    • You can crop, resize, flip and rotate the image in several ways
    • You can apply filters like sepia to the image
    • You can add texts and shapes to the image
    • You can merge multiple images in multiple ways

    Compatibility with Horst's PageImageManipulator (PIM)

    You can just use GIM instead of PIM by replacing pim with gim:

    $image1 = $page->image->pimLoad('prefix')
        ->setOptions(array('outputFormat'=>'jpg'))
        ->brightness(-10)
        ->contrast(15)
        ->grayscale()
        ->width(600)
        ->pimSave();    // uses PageImageManipulator
    
    $image2 = $page->image->gimLoad('prefix')
        ->setOptions(array('outputFormat'=>'jpg'))
        ->brightness(-10)
        ->contrast(15)
        ->grayscale()
        ->width(600)
        ->gimSave();    // uses GIM
    

    GIM includes every method from PIM, so it just works. Also GIM and PIM share the same variation naming scheme, so when you start using GIM, the transition is seamless and does not need to recreate every image.

    Having the same naming schemes means, that GIM and PIM can also work side-by-side.

    For a full list of compatibility and migration notes, please check out our module page.

    Performance

    The reason why we created GIM is that we were looking for a more performant PHP image library for converting lots of images at once. After using Gregwar's image class for a few images, we thought that this library should find its way into ProcessWire.

    After testing GIM on a few sites, this is what we found out:

    • GIM handles already manipulated images around 40% faster
    • GIM is able to heavily manipulate at least 15 large images (> 2000px) in one request (more weren't tested yet)
    • GIM is slightly faster than PIM for single image operations

    I hope this is a great addition to the ProcessWire module ecosystem and you can enjoy it.

    Thanks in advance,

    Marvin

    P.S.: Horst, I hope you don't see this as offense. PIM is a great module!

    • Like 10
  5. Hello everybody,
     
    a few weeks have been passed since the last update. As you maybe remember, we introduced LdapSignIn, a module which allows you to sign in via an LDAP server account. Since you guys reported that there are many features missing to call it a "solution for Active Directory".
     
    Well, during the last weeks, we've thrown the module away, restructured and rebuilt it from the ground up. So we can now truely say: yes, this is a real solution for this porpuse.
     
    First of all, we've split the LdapSignIn module into 3 different modules

    • WireAD handles the connection between ProcessWire and the Active Directory. It delivers a straight-forward API for authentication and accessing objects in the Active Directory. So your modules can access it as well.
    • LoginAD extends the ProcessWire login process, so users from the Active Directory can log in.
    • LoginSingleSignOnAD enables Single Sing On for ProcessWire using an Active Directory.

    Second, the modules also include a set of realy nice features:

    • User and Group Migration
      You can define rules to map Active Directory user and group attributes into ProcessWire user and roles fields.
    • Groups in Groups
      WireAD is able to detect groups in groups. So if user A is member of group B and group B is member of group C, user A is migrated as member of both group B and C.
    • TLS and SSL
      WireAD handles connections via SSL or TLS to your domain controllers
    • Load Balancing
      You can specify more than one domain controller to load balance between them
    • Auto-detect Base DN or manually specify it
    • Unique User and Role Objects
      Users and groups are migrated using their Active Directory GUID, so they are mapped as unique objects in ProcessWire

    Third, I created a demo video to show you some of these features:

    So what do you think? Please leave a comment below.

    Greetings from Germany

    Marvin

    • Like 14
  6. Hello everybody,

    We've just updated AIOM to Version 3.1.4. This is a minor update including the following changes:

    • Bugfix: CacheFiles for Pages are now deleted when a new minimized file is created
    • Bugfix: An error is thrown if the document root is different to ProcessWire's base path

    If you find additional bugs or have some feature wishes, please open up a ticket at our GitHub repository.

    Thank you!

    Marvin

    • Like 6
  7. Hello everybody,

    thank you for this vital discussion. We've updated Auto Name to Version 1.1, addressing some of the issues and thoughts of this thread.

    Changes:

    • It is now possible to set a human-readable date format for the created and updated fields
    • Renaming can now be restricted to unpublished pages
    • Includes a fix for a bug that accidentally renamed system pages

    If you have any additional thoughts, please post them here or open up a ticket on GitHub!

    Thanks!

    Marvin

    • Like 6
  8. At lightning.pw, we use elements as subdomain names (also I heard, that one or two users spotted some sort of "wire" domains)  ;)

    @Joss: ProcessWire Lemon sounds AWESOME 

    At general, I like the idea of using codenames and i find the Architects' names being the best. It is a nice callback to ProcessWire's origin and most of them sound cool.

    • Like 1
  9. Hello @adrian and @apeisa,

    @adrian if renaming the page only the first time as an option is a feature wish, we can add this. Beside this, we can include support for your module. Please explain me, how to access the status and which status(es) allow a change of name. 

    @apeisa what is the problem with renaming the page after being edited? I haven't accomplished any problems with this, yet. 

    Thanks!

  10. Hello everybody,

    I'm happy to announce that David and I have negotiated, how to continue both development and support of the AIOM module.

    This is our deal:

    • Conclurer will develop and support the AIOM module from now on
    • David will continue developing once he'll have more time available

    Therefore, the repository has been migrated to a new URL: https://github.com/conclurer/ProcessWire-AIOM-All-In-One-Minify

    At Conclurer, we are exited to take care of AIOM. For the near future, we're working on necessary bug fixes. We're also planning to release a new major version (AIOM 4) within the next months. 

    For any new bugs in the current version of AIOM: please open a ticket on our GitHub repository.

    Thank you in advance,

    Marvin

    • Like 9
  11. Hello everybody,

    I'd like to introduce a new module to you. It automatically adjusts pages' URLs based on naming patterns.

    It allows you to specify a general pattern for all pages or individual patterns per template.

    It is available in the ProcessWire module directory. Also you may find the code here.

    New: Auto Name has been updated to Version 1.1. Changes:

    • It is now possible to set a human-readable date format for the created and updated fields
    • Renaming can now be restricted to unpublished pages
    • Includes a fix for a bug that accidentally renamed system pages

    I'm looking forward to your feedback.

    Thanks in advance,

    Marvin

    • Like 14
  12. Hello again!

    We've just updated Ratings to Version 1.1, which includes a simpler, more unified API.

    You can access all API methods via the ratings property.

    Examples:

    $page->ratings->add(4);
    $page->ratings->average;   // => 4.4
    $page->ratings->count;     // => 12
    

    The changes should appear soon in the ProcessWire modules directory. Please check out our GitHub repository for more details.

    • Like 5
  13. @OrganizedFellow:

    Thanks for your report.

    • The module does not write duplicates, on the demo site the output of all bookmarks is grouped by tag. So if you assign multiple tags to one bookmark, the bookmark will show up multiple times. The reason why the bookmark is deleted when you remove it from one tag, is that I was lazy writing the demo, so that the entire bookmark is deleted instead of one tag. 
    • The white Save-Button is rather an "update" button than a save button. You can assign or remove tags and change your comment afterwards and then save the bookmark again.

    Your example is a perfect use case for this module. Great idea!

    • Like 1
  14. Thanks for the Feedback!

    @jacmaes: Yes, the module currently uses the session to store the necessary information. I will place your feature wish on our roadmap.

    @Soma: Bookmarks supports Tagging and adding comments to the pages. Furthermore, it is not restricted to logged-on users. If you want to see the differences live, please check out our demo page.

  15. Hello everybody,

    It's another day - so it's time for a new module and this module is all about helping your site's visitors to store the pages they want to visit. 

    Bookmarks is a module that delivers a straightforward API for storing pages, adding bookmark-comments and tags to them.

    You can create a bookmark for the current user for a page with a single line of code:

    $page->bookmark->save();
    

    You can also add comments and tags to it:

    $page->bookmark->comment = 'Early in the morning';
    $page->bookmark->tags = array('sleepy', 'bashful', 'sneezy');
    $page->bookmark->save();
    

    After having stored some bookmarks, you can fetch a user's bookmarks in this way:

    $user->bookmarks;
    

    You can find a live demo of the module here: http://nickel-1vn.lightningpw.com/

    You can find the module and additional APIs here: https://github.com/conclurer/PageBookmarks

    The module is submitted for the module directory and should appear soon.

    Please leave a comment below to add feedback and / or feature wishes.

    Thanks in advance,

    Marvin

    • Like 12
  16. I've updated the module to version 0.5.1 including some minor fixes.

    New features are the ability to use SSL (LDAPS), turn on Debug Mode and the validation of the configuration file on save.

    @horst: the typo is also fixed :-)

    @sforsman: when can I expect your repository? I'd really like to see it.

    • Like 4
  17. Hi Nico,

    nice question. I was unclear about this. 

    Basically, the ratings are saved to the database, but the information about which pages the user has rated is stored in the session for guests. 

    This is just how the module handles preventing guests rating the same page again after a short period of time. 

    • Like 1
  18. Hi everybody,

    I'd like to share with you another new module. It helps you to manage user ratings for pages in a very simple way.

    You can add a user rating to a certain page with a line of code:

    $page->ratings->add(4)
    

    If the user is logged in, the module remembers which page the user has rated for. For non-logged-in visitors, the module stores the pages, the user has rated, in the session. 

    You can get a page's rating and its total amount of votes in a similar way:

    $page->ratings->average;      // => 3.2
    $page->ratings->count;        // => 5
    

    For more information about this module, please check out its GitHub repository.

    You can check out a working version of the module here: http://curium-cte.lightningpw.com

    Edit: The module is now available in the ProcessWire modules directory.

    Update: Ratings has been updated to version 1.1, including a new, simpler API accessor. 

    As always - please comment for bugs or feature wishes.

    Thanks in advance,

    Marvin

    • Like 20
  19. I don't think Marvin's current code works with every AD-instance since it's missing a couple of ldap_set_option() calls that are needed for some.

    @Marvin: If you want to take a look at the code I can post it on Github and throw you a link. You could always implement all the stuff by yourself as well, I would understand ;)

    Thank you for your feedback and your commitment. I already guessed that it won't work with every AD. So far, the few ADs I have for testing seem to work. 

    Written before, I try to enhance the module over time and add more features and compatibilities to it. Therefore, I'd be pleased if you can share the code with me, so I can enhance this module and make it better. Of course, you will be given credits in the source code for this. 

    What connects us is that we all love ProcessWire and want to see it grow in every environment. So if we pull together, we can achieve this.  :)

    • Like 7
×
×
  • Create New...