Jump to content

Recommended Posts

Hey, I'm new and I created a simple module for tagging pages because I didn't found a module for it (sadly this is not a core feature). This module is licensed under the GPL3 and cames with absolutly no warranty at all. You should test the module before using it in production environments. Currently it's an alpha release. if you like the module or have ideas for improvements feel free to post a comment. Currently this fieldtype is only compatible with the Inputfield I've created to because I haven't found  an Inputfield yet, that returns arrays from a single html input.

Greetings Sebi2020

FieldtypeTags.zip.asc

InputfieldTagify.zip

InputfieldTagify.zip.asc

FieldtypeTags.zip

  • Like 5
Link to comment
Share on other sites

@Robin S Thank you for your feedback. In fact I planned to add this features in the next release. I also planned to add autocomplete suggestions based on the already existing tags. 

@Sergio My intention was to store tags in page fields instead of creating a page for every tag you add. By doing so you only need one page/template whcih displays all pages with a given tag. As far as I know the philosophy behind ProcessWire is "Everything is a page" but I don't like to clutter my tree with a page for every tag and in my opinion it's very time consuming to create a page for every tag. 

@flydev Thanks!

Currently I don't know the API very well so I don't know if there is a way to fetch all entries of a given field and not just for the current page.  I would prefer to use the API instead of using the DatabasePDO class.

 

Edited by Sebi2020
Link to comment
Share on other sites

43 minutes ago, Sebi2020 said:

in my opinion it's very time consuming to create a page for every tag.

Lots of solutions for this from a simple API foreach, to the Batch Child Editor module or even this http://modules.processwire.com/modules/admin-actions-unordered-list-to-pages/

Everyone baulks at the everything is a page at first, but the benefits become apparent and it's actually very elegant and more importantly very flexible if you need to change things down the road.

Not saying there isn't a place for what you have built - just say that there are multiple way to skin a cat 🙂

  • Like 2
Link to comment
Share on other sites

Most of the page fields (like autocomplete) allow creating new pages on the fly, while editing the actual article page. 

But I totally see place for modules like this (they are always faster to configure for example). 

  • Like 1
Link to comment
Share on other sites

I just released version 2 of InputfieldTagify:

You can download the zip file from Github:
https://github.com/Sebi2020/InputfieldTagify/releases/tag/v0.0.2

@Robin S

It now supports configuration of predefined whitelist entries (in this case auto-suggestions) and allows you to enable additional delimiters like spaces and semicolons. I plan to include a option for specifying limits on tags in the next release.

Greetings Sebi2020

  • Like 3
Link to comment
Share on other sites

I've just released a new pre-release of FieldtypeTags and InputfieldTagify

New features include:

  • FieldtypeTags
    • Retrieval of all tags:
      $this('modules')->get('FieldtypeTags')->getAllTags();

       

    • Retrieval of all pages for a specific tag: 
      $this('modules')->get('FieldtypeTags')->getPagesByTag("tagname");

       

  • InputfieldTagify
    • Specification of tag limits

Downloads:
FieldtypeTags v0.1.0-pre: https://github.com/Sebi2020/FieldtypeTags/releases/tag/v0.1.0-pre
InputfieldTagify v0.1.0-pre: https://github.com/Sebi2020/InputfieldTagify/releases/tag/v0.1.0-pre 

Greetings Sebi2020

P.S:  Comments appreciated

Edited by Sebi2020
  • Like 1
Link to comment
Share on other sites

Thanks for the updates!

I spotted a few little issues in InputfieldTagify...

There are quotes missing around version, autoload and singular in getModuleInfo(): https://github.com/Sebi2020/InputfieldTagify/blob/354acf86ac88baa8c257523cd093ec202c573fe0/InputfieldTagify.module#L18-L20

PHP gives a warning that InputfieldTagify::renderReady() and InputfieldTagify::___processInput() should be compatible with the methods of the Inputfield class that the module extends.

So for renderReady() I think you want:

public function renderReady(Inputfield $parent = null, $renderValueMode = false) {
	$this->addClass("tagify-input");
	return parent::renderReady($parent, $renderValueMode);
}

And for ___processInput():

public function ___processInput(WireInputData $input) {
    //...

 

  • Like 1
Link to comment
Share on other sites

Thank you for your reply!

2 hours ago, Robin S said:

Thanks for the updates!

I spotted a few little issues in InputfieldTagify...

There are quotes missing around version, autoload and singular in getModuleInfo(): https://github.com/Sebi2020/InputfieldTagify/blob/354acf86ac88baa8c257523cd093ec202c573fe0/InputfieldTagify.module#L18-L20P

Why do you think there must be quotes? ProcessWire  is happy with booleans and integers. Even the core-modules are written in the same way:

		return array(
			'title' => 'Text',
			'version' => 100,
			'summary' => 'Field that stores a single line of text',
			'permanent' => true, 
			);

from wire/modules/Fieldtype/FieldtypeText.module

2 hours ago, Robin S said:

So for renderReady() I think you want:


public function renderReady(Inputfield $parent = null, $renderValueMode = false) {
	$this->addClass("tagify-input");
	return parent::renderReady($parent, $renderValueMode);
}

And for ___processInput():


public function ___processInput(WireInputData $input) {
    //...

 

When do you get this warnings? I cannot reproduce that (with E_ALL enabled in php.ini). 

Which PHP Version did you use? With my Version 7.0.28 everything seems to be fine.

 

Greetings Sebi2020

Link to comment
Share on other sites

6 minutes ago, Sebi2020 said:

Why do you think there must be quotes? ProcessWire  is happy with booleans and integers. Even the core-modules are written in the same way:


		return array(
			'title' => 'Text',
			'version' => 100,
			'summary' => 'Field that stores a single line of text',
			'permanent' => true, 
			);

from wire/modules/Fieldtype/FieldtypeText.module

I'm talking about the array keys, not the values. If you use a string as an array key the string has to be in quotes or else it is interpreted as a constant. In the FieldtypeText example you show the keys are correctly within quotes.

8 minutes ago, Sebi2020 said:

When do you get this warnings? I cannot reproduce that (with E_ALL enabled in php.ini)

I recommend installing Tracy Debugger - it is good at picking up errors that can otherwise be missed.

2019-02-09_205346.png.4d3a3d166798714cffb86538e3055199.png

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Content

    • By Marco Ro
      Hi guys!
      I'm a bit anxious because this is the first module I present! (beta modulo) But I will finally be able to share something with the community too! :)
      This is a BETA version of the PayPal payment system called: PayPal Commerce Platform.
      It is an advanced system (Business Pro account is needed) that brings various benefits in terms of fees and above all integrates direct payment with credit/debit cards. 
      The module integrates with Padloper 0.0.2, which is the current installation I'm using.
      This system integrates the classic PayPal buy button, the alternative or local payment method and the new payment system: credit/debit cards that doesn't go through the PayPal account. It is a Stripe-style payment, it connects directly with the bank and integrates 3D security validation.
      I say that it is a BETA because this module currently only works with Sandbox account, to put it live you need to change API url manually (manually for the moment).
      Because this module is not ready for live:
      I would like to have your opinion on how I built the module (is the first one I do). I don't want to share something that is not fish but I need a comparison with someone more experienced than me, for be sure that this is the best way to code the module.
      If you want to try this I created a git, you will find all the instructions for installation and correct operation. (Git has a MIT licensed)
      https://github.com/MarcooRo/processwire-PayPal-Commerce-Platform I hope I did something that you guys can like :)
    • By monollonom
      (once again I was surprised to see a work of mine pop up in the newsletter, this time without even listing the module on PW modules website 😅. Thx @teppo !)
      FieldtypeQRCode
      Github: https://github.com/romaincazier/FieldtypeQRCode
      Modules directory: https://processwire.com/modules/fieldtype-qrcode/
      A simple fieldtype generating a QR Code from the public URL of the page, and more.
      Using the PHP library QR Code Generator by Kazuhiko Arase.

      Options
      In the field’s Details tab you can change between .gif or .svg formats. If you select .svg you will have the option to directly output the markup instead of a base64 image. SVG is the default.
      You can also change what is used to generate the QR code and even have several sources. The accepted sources (separated by a comma) are: httpUrl, editUrl, or the name of any text/URL/file/image field.
      If LanguageSupport is installed the compatible sources (httpUrl, text field, ...) will return as many QR codes as there are languages. Note however that when outputting on the front-end, only the languages visible to the user will be generated.
      Formatting
      Unformatted value
      When using $page->getUnformatted("qrcode_field") it returns an array with the following structure:
      [ [ "label" => string, // label used in the admin "qr" => string, // the qrcode image "source" => string, // the source, as defined in the configuration "text" => string // and the text used to generate the qrcode ], ... ] Formatted value
      The formatted value is an <img>/<svg> (or several right next to each other). There is no other markup.
      Should you need the same markup as in the admin you could use:
      $field = $fields->get("qrcode_field"); $field->type->markupValue($page, $field, $page->getUnformatted("qrcode_field")); But it’s a bit cumbersome, plus you need to import the FieldtypeQRCode's css/js. Best is to make your own markup using the unformatted value.
      Static QR code generator
      You can call FieldtypeQRCode::generateQRCode to generate any QR code you want. Its arguments are:
      string $text bool $svg Generate the QR code as svg instead of gif ? (default=true) bool $markup If svg, output its markup instead of a base64 ? (default=false) Hooks
      Please have a look at the source code for more details about the hookable functions.
      Examples
      $wire->addHookAfter("FieldtypeQRCode::getQRText", function($event) { $page = $event->arguments("page"); $event->return = $page->title; // or could be: $event->return = "Your custom text"; }) $wire->addHookAfter("FieldtypeQRCode::generateQRCodes", function($event) { $qrcodes = $event->return; // keep everything except the QR codes generated from editUrl foreach($qrcodes as $key => &$qrcode) { if($qrcode["source"] === "editUrl") { unset($qrcodes[$key]); } } unset($qrcode); $event->return = $qrcodes; })
    • By Shohan Arafat
      I was looking for code sample where I can attach a textarea for setting up a content in my page. And I wanted to do it programatically. But I can't find a way to do that. Is it possible to add a content textarea with program?
    • By HMCB
      Unlike the Integer input type, Decimal doesn’t allow for a default value. I’d love to see this added.
      I’m working on a mini project where this would come in really handy. The site admins would have all 7 fields pre-populated and they can then adjust as needed.
    • By Sebi
      AppApiFile adds the /file endpoint to the AppApi routes definition. Makes it possible to query files via the api. 
      This module relies on the base module AppApi, which must be installed before AppApiFile can do its work.
      Features
      You can access all files that are uploaded at any ProcessWire page. Call api/file/route/in/pagetree?file=test.jpg to access a page via its route in the page tree. Alternatively you can call api/file/4242?file=test.jpg (e.g.,) to access a page by its id. The module will make sure that the page is accessible by the active user.
      The GET-param "file" defines the basename of the file which you want to get.
      The following GET-params (optional) can be used to manipulate an image:
      width height maxwidth maxheight cropX cropY Use GET-Param format=base64 to receive the file in base64 format.
×
×
  • Create New...