Template Roll Printer with options (for 2.2.6, 2.3, 2.3.4, 2.4.0, 2.4.4)



  • Ciao,

    Here's my contribution for printing captive portal's vouchers using templates.
    The code is based on the work by Reward Gagarin (https://forum.pfsense.org/index.php?topic=100925.0)

    Changelog

    Features (initial release):

    • Print icon in the voucher rolls grid (2.2.6 version).
    • Options to modify the text of the vouchers: Voucher title, voucher info and the possibility to overwrite the voucher duration with a custom text.
    • Option to print only non-expired vouchers.
    • Options are saved in a config file.
    • Fixed a bug on the original code where the duration of the vouchers were always "expired".
    • Html+css template using divs with 21 vouchers per page. (using page-break-before, divs are never printed across pages. Tested with Chrome only).

    Update (18/04/2016):

    • Added "expire voucher" option.
    • 2.3 version.

    Update (01/06/2016):

    • Update 2.3 version zip with portalprint.priv.inc permission (credits: Ikkuranus)

    Update (23/10/2017):

    • 2.3.4 Version
    • 2.4.0 Version

    Update (11/04/2019):

    • 2.4.4 Version
    • Reuploaded old versions (lost in migrating to netgate?)

    Installation Instructions

    Since the installation steps are (mostly) the same for all versions, I'm adding instructions here below; you can still file the same guide in the readme.txt file.

    Prerequisites

    • SSH enabled
    • A client to connect to the portal via SSH (for Windows, I use WinSCP using SCP protocol. Notice: username for SSH connections is root)

    Installation Instructions
    1. Edit css file to fit your needs and overwrite logo.png with your onw logo
    2. in /usr/local/www/ overwrite services_captiveportal_vouchers.php
    3. in /usr/local/www/ upload services_captiveportal_vouchers_options.php and services_captiveportal_vouchers_print.php
    4. create a new folder named: "voucherfiles" (without ", case sensitive)
    5. upload voucherfiles directory's files in the newly created directory
    6. Print from Services -> Captive Portal -> Vouchers
    Extra:
    If you want people with more limited accounts to print out vouchers without having full access to the WebUI add the portalprint.priv.inc file in the /etc/inc/priv/ folder (not tested in 2.4.0)

    ~

    As this is a first release and I'm not mainly a PHP programmer, let me know if you find something strange.
    Hope this helps,
    Daniele

    Voucher-Template-Printer-2.2.6.zip
    Voucher-Template-Printer-2.3.zip
    Voucher-Template-Printer-2.3.4.zip
    Voucher-Template-Printer-2.4.0.zip
    Voucher-Template-Printer-2.4.4.zip



  • Hi,

    Looks good, any chance to put voucher ID in ean-13 barcode or even code-39?


  • LAYER 8 Netgate

    I would suggest adding an expiration date, which would be the date on which you can delete the roll.



  • @Derelict:

    I would suggest adding an expiration date, which would be the date on which you can delete the roll.

    How can You put expiration date if You don't know when voucher is gonna by initiated?



  • @fr0t:

    How can You put expiration date if You don't know when voucher is gonna by initiated?

    The same way as adding an expiration date to a password.
    You don't care if it was being used, or not.
    See for yourself => System: User Manager and check out a user.

    Expiring vouchers could be useful to "empty" rolls so the can be deleted.


  • LAYER 8 Netgate

    All I know is I want to be able to expire voucher rolls.  Might be a year or two years, but you want to be able to pronounce them dead. If that date is printed on the voucher, WAY easier.



  • @Gertjan:

    @fr0t:

    How can You put expiration date if You don't know when voucher is gonna by initiated?

    The same way as adding an expiration date to a password.
    You don't care if it was being used, or not.
    See for yourself => System: User Manager and check out a user.

    Expiring vouchers could be useful to "empty" rolls so the can be deleted.

    I was asking about voucher, not about user (with password). Its not possible to put the expiry date/time for not initiated voucher, another thing is, if there would be a option to set expiry date for each roll - this date could be printed on as something like: "use by: ….." or "valid until: ...... "


  • LAYER 8 Netgate

    The problem is you never know where they are. I suppose if it's important to the site it can just be put in the Title or Info fields.

    Does it work on 2.3?



  • @DanieleIT:

    Ciao,

    Here's my contribution for printing captive portal's vouchers using templates.
    The code is based on the work by Reward Gagarin (https://forum.pfsense.org/index.php?topic=100925.0)

    Features:

    • Print icon in the voucher rolls grid.
    • Options to modify the text of the vouchers: Voucher title, voucher info and the possibility to overwrite the voucher duration with a custom text.
    • Option to print only non-expired vouchers.
    • Options are saved in a config file.
    • Fixed a bug on the original code where the duration of the vouchers were always "expired".
    • Html+css template using divs with 21 vouchers per page. (using page-break-before, divs are never printed across pages. Tested with Chrome only).

    In the ZIP file a readme file on how to install the code!

    As this is a first release and I'm not mainly a PHP programmer, let me know if you find something strange.
    Hope this helps,

    Daniele

    Thanks for improving it! Good job.

    kind regards,



  • One question, will the previous issued vouchers work once I replace the files with yours?



  • @jassrahal:

    One question, will the previous issued vouchers work once I replace the files with yours?

    Yes. This is just a mod to print vouchers. It doesn't interact with vouchers in any other way.



  • @Derelict:

    I would suggest adding an expiration date, which would be the date on which you can delete the roll.

    Hi this would be a good idea! I'll do that as soon as I find some spare time.
    In the meanwhile people can use the "Voucher Info" text. By editing the CSS it can easily go 2 lines.

    Thanks!



  • If possible can you update it for pfSense 2.3  ?



  • @redeyes:

    If possible can you update it for pfSense 2.3  ?

    Yes, I'v uploaded today the 2.3! let me know if you find any issue!



  • Thanks mate. You're a STAR  :)



  • This is great! Any way to make this a package we can install so when we upgrade it will be reinstalled?



  • Hi,

    Few posts ago I asked about barcode, would it be something nearly impossible to do? I didn't install it yet because voucher w/o barcode can't be used in our site and my second question is - how is the template format like? Is it something I could re-design and try to put barcode myself?

    Thanks!



  • @fr0t:

    Hi,

    Few posts ago I asked about barcode, would it be something nearly impossible to do? I didn't install it yet because voucher w/o barcode can't be used in our site and my second question is - how is the template format like? Is it something I could re-design and try to put barcode myself?

    Thanks!

    Never mind, I have just installed another instance of pfs on another VM box and have seen how it works, it looks like bit complicated and I believe I would probably have to redesign template after every single update if I am right ?!

    So I decided to write my own application using Lazarus - it just require to import .csv file with vouchers and choose template with indyvidual information of each roll like valid for xxx minutes/weeks or months, barcode type, logo, place name etc. It has its own build in designer so to change anything in the template require just quick learn (intuitively easy) how it works and thats it.

    Its in quite raw format yet but if I see someone interested I can share my app once I finish it.



  • @fr0t:

    Hi,

    Few posts ago I asked about barcode, would it be something nearly impossible to do? I didn't install it yet because voucher w/o barcode can't be used in our site and my second question is - how is the template format like? Is it something I could re-design and try to put barcode myself?

    Thanks!

    Sorry I didn't have the time to look about barcodes generation!
    I've checked today, and there are a few nice jquery libraries for barcode generation.

    Please check this Fiddle I've created to see how it works:
    http://jsfiddle.net/Idioblast/3j1mnwe3/

    Basically, from the actual code you just jave to link the needed .js files (both jquery and barcode) and add a(with relative CSS).

    Then, and at the end of the page this code:

    
    $('.barcode').each(function() {
        var $this = $(this);
        $this.barcode(
             $this.siblings('.vcode').text(),
            'code128',
            {barWidth:1, barHeight:30, output: 'css'} 
        );
    });
    
    

    This cycles every .barcode div and looks for the code in the .vcode div and creates a code128 barcode.
    You can play with the options but it should work fine.

    Let me know
    Ciao



  • I have added some permissions so people with more limited accounts can print out vouchers without having full access to the webui

    compatible with 2.3.x not sure about older versions
    unzip the following file into /etc/inc/priv/

    @DanieleIT feel free to add this as part of the package.

    portalprint.priv.inc.zip



  • I am too noob. i googled for 2 hours on a guide on how to access this.
    /usr/local/www/ in pfSense GUI. using 2.3.1



  • If using Windows try win SCP

    @kenmark:

    I am too noob. i googled for 2 hours on a guide on how to access this.
    /usr/local/www/ in pfSense GUI. using 2.3.1



  • @misterpat:

    If using Windows try win SCP

    I used FTP but thank you for giving the idea. Now made it work on 2.3.1! Kappaaaaa!



  • Hello DanieleIT,

    I wonder if I could make my captive portal solution user interface (see my howto post) compatible with your voucher system.
    Did you write any documentation for it ?
    Do you have a github account with the code ?

    Regards,
    Ozy.



  • Hi Deajan, sorry for my late reply but apparently I'm not receiving mail notifications anymore  :-\

    You can make whatever you'd like to with the code, it's here for everyone to use.
    I did not write any documentation and I've not created a gib with the code. It's pretty much all there in the zip file.
    I'll be glad to help if you need (But please remember, as stated in my OP, that I'm not a PHP developer  :) )

    Ciao



  • Missing notifications too :(

    Would you mind if I fork your work into my github ?



  • I would not!
    Also, let me know the link of the git so I can update the OP with it



  • @ikkuranus:

    I have added some permissions so people with more limited accounts can print out vouchers without having full access to the webui

    compatible with 2.3.x not sure about older versions
    unzip the following file into /etc/inc/priv/

    @DanieleIT feel free to add this as part of the package.

    Thank you, I'll add the file in the zip (2.3.x version) as soon as possible.
    Ciao



  • Great job guys!

    Excited to see how far this will go.

    Kind regards,
    Reward



  • I rebuild the script a little bit.

    the modification is, that when you select 'Active only' it only spit out voucher that aren't used.
    so if a user is given away and it is activated then it won't be printed again.

    for my situation this is what i need. so if you like use it.
    the template files are in the zip file in the starting post.
    it is made for pfsense 2.3.x

    voucher_print.zip



  • Hello,

    Great job DanieleIT!

    Any chance to create a package for pfsense?  ;D ;D



  • How to install?



  • @Blackhat:

    How to install?

    Follow the readme inside the zip file



  • I used the permissions /etc/inc/priv/ and set those to a user, only after a reboot I can't seem to see what changed.



  • Hello DanieleIT,

    thank you very much for your great work.

    I have a question, if i would like to print  vouchers 4 X 10 (by yours is 3 X 7), how can i modify the php file?

    There is a print template attached. I had many this kleber Paper and would print the voucher on it. The only problem is: it is 4 X 10…...

    Thank you in advance!

    [4 X 10.zip](/public/imported_attachments/1/4 X 10.zip)



  • @astatine:

    I have a question, if i would like to print  vouchers 4 X 10 (by yours is 3 X 7), how can i modify the php file?

    You don't have to modify the PHP file. You just have to edit the dimension of the voucher divs, trought the voucherprint.css file.

    At line 12 you have:

    .voucher {
    	border-left: 1px solid #F4F4F4;
    	border-right: 1px solid #F4F4F4;
    	border-bottom: 1px solid #F4F4F4;
    	page-break-inside: avoid;
    	float: left;
    	height: 134px;
    	width: 206px;
    	position: relative;
    }
    

    Just edit the height and the width according to your needs. (you may also need to edit a little more css based on the new dimension).

    Give it a try and let me know!

    Ciao



  • Hello, DanieleIT

    Great job!
    Thanks.

    One question:

    in services_captiveportal_voucher.php in error check section you wrote following:

    // Check for form errors
    if ($_POST['charset'] && (strlen($_POST['charset'] < 2))) {
    $input_errors[] = gettext("Need at least 2 characters to create vouchers.");

    but original code is:
    // Check for form errors
    if ($_POST['charset'] && (strlen($_POST['charset']) < 2)) {
    $input_errors[] = gettext("Need at least 2 characters to create vouchers.");

    Why?



  • Hello K0ster,
    The mod is probably based on an old version of the code. I did not change that part, but that is clearly a bugfix.
    I'll have to merge the code when I can.

    Thank you



  • Hi DanieleIT,

    nice project!  :)

    Would it be a big thing for you to implement a field for choosing how many Vouchers to print (and mark them in the DB as printed)?

    Stefan



  • Ciao Daniele.
    Ottima idea.
    Installo, provo e commento

    –---------------------------

    Hello Daniele.
    Good idea.
    I install, I try and comment


Log in to reply