Jump to content
mauricius

ProcessSlider - Image sliders for ProcessWire

Recommended Posts

ProcessSlider Module (alpha version)

Repository

https://github.com/mauricius/ProcessSlider

Introduction 
 
Like many of you, I came to ProcessWire from Wordpress and immediately I fell in love with its power and its clean syntax. I have to say that PW has become my default choice for building websites. However there is only one thing that me and my clients miss from WordPress and is the ability to visually build image sliders through plugins (Nivo, Revolution Slider, LayerSlider, just to name a few). So I decided to create a module for this purpose. ProcessSlider essentialy is an editor for the wonderful Jssor plugin (http://www.jssor.com/) which is absolutely free. The module creates a new page under the Setup menu which allows users to easily add image sliders on the site using an intuitive visual editor. To each slider you can easily add images and other custom and animate them using the transition effects provided by the Jssor slider.
 
The ProcessSlider module in reality is composed by three different modules:

  • ProcessSlider: the main module
  • InputfieldSlider/FieldtypeSlide: allows the user to use an existing slider inside a page
  • MarkupSlider: converts the slider into Jssor compatible markup and optionally provides the necessary initialization script

Features

  • Custom slider size
  • Drag and Drop interface
  • Move and resize elements
  • Slides background with images from existing PW pages
  • Slider Preview (with the provided MarkupSlider module)
  • Predefined style classes for Elements
  • Add or remove Slides
  • Add or remove elements
  • Change slide order visually
  • Jssor skins and bullets support
  • Visual Timeline
  • Optional responsive/fullwidth slider
  • Predefined elements: Images, Text, Links, Image as link, Div blocks, Youtube Videos
  • Animation Options (In and Out): Animation type, Delay, Duration

The editor is built with Vue.js+Webpack and uses jQuery for D&D and resize functionalities.
 
Release
 
I'm going to release the module in a couple of weeks, there are still some minor tweaks and improvements that I would like to add. 
 
Demo Screencast (be sure to watch it at least at 720p)


 
I hope it will be helpful to the community and I would be glad to get feedback or suggestions for improvement! Please also consider that it is my first PW module, so probably I'm missing some best practices, hopefully the most experienced developers can throw me some hints  ;)
  • Like 23

Share this post


Link to post
Share on other sites

Welcome @mauricius.

This looks really awesome!  ^-^

PS: Best way to get early feedback is to publish a alpha- or beta-state github repo and post the link here.

EDIT:

PPS: yuhu, I saw & liked it first! :)

Edited by horst
  • Like 2

Share this post


Link to post
Share on other sites

Welcome to the board mauricius.

This is a great module! Thanks for your work. Can't wait to try it out.

Do you plan an alpha release soon?

[edit]

Fast trigger finger :)

  • Like 1

Share this post


Link to post
Share on other sites

Thanks everyone!

@rick Yeah, as I said I'm planning to release the first alpha version in a couple of weeks, your feedback will be very welcome.

  • Like 2

Share this post


Link to post
Share on other sites

Welcome @mauricius.

That's a great contribution. Hopefully will try it soon an upcoming project.

Share this post


Link to post
Share on other sites

@mauricius.

This is a very beautiful implementation  ^-^

Welcome to PW and the forums... :)

Share this post


Link to post
Share on other sites

This is so awesome!! Can't wait to put my hands on it!  :frantics:

Share this post


Link to post
Share on other sites

Interesting to see one of the new reactive JS thingies being used (Vue.js) :) I guess you could write a bit about how you decided to pick Vue.js and how it was to get into and work with.

Share this post


Link to post
Share on other sites

Welcome and Hats off for what you are doing Mauricius. I thought I already saw them all out there.

But jssor ? Really amazing !

Share this post


Link to post
Share on other sites

Interesting to see one of the new reactive JS thingies being used (Vue.js) :) I guess you could write a bit about how you decided to pick Vue.js and how it was to get into and work with.

Sure! I'm definetly going to write about it in a future blog post. It's my first project using Vue.js and I was very impressed with its potential, however the community is still quite small, so I had to figure out many things just by myself, especially regarding the implementation of sub-components, nevertheless I'm happy with the result. I'm planning to use it again in the future.

Also thanks everyone for the warm welcome and positive reactions.

  • Like 4

Share this post


Link to post
Share on other sites

welcome mauricius!

that's insane :D drag&drop timeline?! what comes next? an online pw video editing module?! ;)

looks really awesome! thanks for the screencast. i also didn't know jssor.com :)

  • Like 1

Share this post


Link to post
Share on other sites

The repository is available. See the first post for the link.

It's in alpha-state however I'm already using it on my new personal website, which hopefully will be online tomorrow, so you can also take a look at the final result.

  • Like 11

Share this post


Link to post
Share on other sites

Hi mauricius,

Tried to install this on a PW 2.5.25 dev site and got the following error

Fatal error: Class ProcessSlider contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (ConfigurableModule::getModuleConfigInputfields) in F:\xampp\htdocs\dev\site\modules\MarkupSlider\ProcessSlider.module on line 648

I didn't have time to investigate further. 

Thanks.

Share this post


Link to post
Share on other sites

Hi mauricius,

Tried to install this on a PW 2.5.25 dev site and got the following error

Fatal error: Class ProcessSlider contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (ConfigurableModule::getModuleConfigInputfields) in F:\xampp\htdocs\dev\site\modules\MarkupSlider\ProcessSlider.module on line 648

I didn't have time to investigate further. 

Thanks.

Hi kongondo,

I think the error is relative to the new module configuration introduced in ProcessWire 2.5.5 (https://processwire.com/blog/posts/new-module-configuration-options/) which is used by ProcessSlider and ProcessMarkup.

Share this post


Link to post
Share on other sites

If you're using this you shouldn't implement ConfigurableModule. It's detecting the Config options without the interface.

  • Like 2

Share this post


Link to post
Share on other sites

Really great module. It's perfect for client that wants total control over the slider. Thank you.

Share this post


Link to post
Share on other sites

Wherever I insterted the code on template file. the slider appears top of the table (navigation menu)
 

<div id="container">
<?php
$slider = $modules->get('MarkupSlider');
echo $slider->render($page->get('Slider'), $includeScript = true, $options = array());
;?>
</div>

post-3932-0-78080400-1447508055_thumb.pn

Share this post


Link to post
Share on other sites

The site profile you are using has delayed output (on mobile search for that keyword)

You need to put all the slider markup in the variable $content instead of echoing it:

$content = $slider->render...

  • Like 2

Share this post


Link to post
Share on other sites

implement a process slider module and set the field slider in template when place the code in template file its throw the error unknown slider here is the code i placed in template file  

$slider = $modules->get('MarkupSlider');

echo $slider->getStyles($arrows = false, $bullets = false);

echo $slider->render($page->get('Slider1'), $includeScript = true, $options = array()); 

post-3959-0-44133100-1449676419_thumb.pn

Share this post


Link to post
Share on other sites

@hamzaalibhatti

Did you install all the three modules that come with this module? i.e.

  • ProcessSlider: the main module
  • InputfieldSlider/FieldtypeSlide: allows the user to use an existing slider inside a page
  • MarkupSlider: converts the slider into Jssor compatible markup and optionally provides the necessary initialization script

Share this post


Link to post
Share on other sites

OK, your error is being generated at this line. Can you confirm your slider is actually called Slider1? That line indicates your slider was not found. I am not sure whether its case sensitive.

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 bernhard
      --- Please use RockFinder3 ---
    • By MoritzLost
      Cacheable Placeholders
      This module allows you to have pieces of dynamic content inside cached output. This aims to solve the common problem of having a mostly cacheable site, but with pieces of dynamic output here and there.  Consider this simple example, where you want to output a custom greeting to the current user:
      <h1>Good morning, <?= ucfirst($user->name) ?></h1> This snippet means you can't use the template cache (at least for logged-in users), because each user has a different name. Even if 99% of your output is static, you can only cache the pieces that you know won't include this personal greeting. A more common example would be CSRF tokens for HTML forms - those need to be unique by definition, so you can't cache the form wholesale.
      This module solves this problem by introducing cacheable placeholders - small placeholder tokens that get replaced during every request. The replacement is done inside a Page::render hook so it runs during every request, even if the response is served from the template cache. So you can use something like this:
      <h1>Good morning, {{{greeting}}}</h1> Replacement tokens are defined with a callback function that produces the appropriate output and added to the module through a simple hook:
      // site/ready.php wire()->addHookAfter('CachePlaceholders::getTokens', function (HookEvent $e) { $tokens = $e->return; $tokens['greeting'] = [ 'callback' => function (array $tokenData) { return ucfirst(wire('user')->name); } ]; $e->return = $tokens; }); Tokens can also include parameters that are parsed and passed to the callback function. There are more fully annotated examples and step-by-step instructions in the README on Github!
      Features
      A simple and fast token parser that calls the appropriate callback and runs automatically. Tokens may include multiple named or positional parameters, as well as multi-value parameters. A manual mode that allows you to replace tokens in custom pieces of cached content (useful if you're using the $cache API). Some built-in tokens for common use-cases: CSRF-Tokens, replacing values from superglobals and producing random hexadecimal strings. The token format is completely customizable, all delimiters can be changed to avoid collisions with existing tag parsers or template languages. Links
      Github Repository & documentation Module directory (pending approval) If you are interested in learning more, the README is very extensive, with more usage examples, code samples and usage instructions!
    • By Craig
      I've been using Fathom Analytics for a while now and on a growing number of sites, so thought it was about time there was a PW module for it.
      WayFathomAnalytics
      WayFathomAnalytics is a group of modules which will allow you to view your Fathom Analytics dashboard in the PW admin panel and (optionally) automatically add and configure the tracking code on front-end pages.
      Links
      GitHub Readme & documentation Download Zip Modules directory Module settings screenshot What is Fathom Analytics?
      Fathom Analytics is a simple, privacy-focused website analytics tool for bloggers and businesses.

      Stop scrolling through pages of reports and collecting gobs of personal data about your visitors, both of which you probably don't need. Fathom is a simple and private website analytics platform that lets you focus on what's important: your business.
      Privacy focused Fast-loading dashboards, all data is on a single screen Easy to get what you need, no training required Unlimited email reports Private or public dashboard sharing Cookie notices not required (it doesn't use cookies or collect personal data) Displays: top content, top referrers, top goals and more
    • By daniels
      This is a lightweight alternative to other newsletter & newsletter-subscription modules.
      You can find the Module in the Modules directory and on Github
      It can subscribe, update, unsubscribe & delete a user in a list in Mailchimp with MailChimp API 3.0. It does not provide any forms or validation, so you can feel free to use your own. To protect your users, it does not save any user data in logs or sends them to an admin.
      This module fits your needs if you...
      ...use Mailchimp as your newsletter / email-automation tool ...want to let users subscribe to your newsletter on your website ...want to use your own form, validation and messages (with or without the wire forms) ...don't want any personal user data saved in any way in your ProcessWire environment (cf. EU data regulation terms) ...like to subscribe, update, unsubscribe or delete users to/from different lists ...like the Mailchimp UI for creating / sending / reviewing email campaigns *I have only tested it with PHP 7.x so far, so use on owners risk
      EDIT:
      Since 0.0.4, instructions and changelog can be found in the README only. You can find it here  🙂
      If you have questions or like to contribute, just post a reply or create an issue or pr on github, thanks!
    • By MoritzLost
      Sorry for the convoluted title. I have a problem with Process modules that define a custom page using the page key through getModuleInfo (as demonstrated in this excellent tutorial by @bernhard). Those pages are created automatically when the module is installed. The problem is that the title of the page only gets set in the current language. That's not a problem if the current language (language of the superuser who is installing the module) is the default language; if it isn't, the Process page is missing a title in the default language. This has the very awkward effect that a user using the backend in the default language (or any other language) will see an empty entry in the setup menu:

      This screenshot comes from my Cache Control module which includes a Process page. Now I realize the description sounds obscure, but for us it's a common setup: We a multiple bilingual sites where the default language is German and the second language is English. While the clients use the CMS in German, as a developer I prefer the English interface, so whenever I install a Process module I get this problem.
      As a module author, is there a way to handle this situation? I guess it would be possible to use post-installation hooks or create the pages manually, but I very much prefer the declarative approach. The page title is already translatable (through the __ function), but of course at the time of installation there is no translation, and as far as I'm aware it's not possible to ship translations with a module so they are used automatically. Could this situation be handled better in the core? I would prefer if the module installation process would always set the title of the Process page in the default language, instead of the language of the current user.
×
×
  • Create New...