acf
This commit is contained in:
115
plugins/fields/acfurl/acfurl.php
Normal file
115
plugins/fields/acfurl/acfurl.php
Normal file
@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Advanced Custom Fields
|
||||
* @version 2.8.8 Pro
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Form\Form;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
JLoader::register('ACF_Field', JPATH_PLUGINS . '/system/acf/helper/plugin.php');
|
||||
|
||||
if (!class_exists('ACF_Field'))
|
||||
{
|
||||
Factory::getApplication()->enqueueMessage('Advanced Custom Fields System Plugin is missing', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
class PlgFieldsACFUrl extends ACF_Field
|
||||
{
|
||||
/**
|
||||
* Override the field type
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $overrideType = 'UrlAdvanced';
|
||||
|
||||
/**
|
||||
* Update the label of the field in filters.
|
||||
*
|
||||
* @param \Bluecoder\Component\Jfilters\Administrator\Model\Filter\Option\Collection $options
|
||||
*
|
||||
* @return \Bluecoder\Component\Jfilters\Administrator\Model\Filter\Option\Collection
|
||||
*/
|
||||
public function onJFiltersOptionsAfterCreation(\Bluecoder\Component\Jfilters\Administrator\Model\Filter\Option\Collection $options)
|
||||
{
|
||||
// Make sure it is a field of that type
|
||||
if ($options->getFilterItem()->getAttributes()->get('type') !== $this->_name)
|
||||
{
|
||||
return $options;
|
||||
}
|
||||
|
||||
foreach ($options as $option)
|
||||
{
|
||||
$data = $option->getData();
|
||||
$value = isset($data->value) ? $data->value : '';
|
||||
|
||||
if ($value)
|
||||
{
|
||||
$value = json_decode($value, true);
|
||||
$value = isset($value['text']) ? Text::_($value['text']) : '';
|
||||
}
|
||||
|
||||
$option->setLabel($value);
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* The form event. Load additional parameters when available into the field form.
|
||||
* Only when the type of the form is of interest.
|
||||
*
|
||||
* @param Form $form The form
|
||||
* @param stdClass $data The data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 3.7.0
|
||||
*/
|
||||
public function onContentPrepareForm(Form $form, $data)
|
||||
{
|
||||
// Make sure we are manipulating the right field.
|
||||
if (isset($data->type) && ($data->type == $this->_name))
|
||||
{
|
||||
$form->removeField('default_value');
|
||||
}
|
||||
|
||||
return parent::onContentPrepareForm($form, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the field into a DOM XML element and appends it as a child on the given parent.
|
||||
*
|
||||
* @param stdClass $field The field.
|
||||
* @param DOMElement $parent The field node parent.
|
||||
* @param JForm $form The form.
|
||||
*
|
||||
* @return DOMElement
|
||||
*
|
||||
* @since 3.7.0
|
||||
*/
|
||||
public function onCustomFieldsPrepareDom($field, DOMElement $parent, Form $form)
|
||||
{
|
||||
if (!$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$fieldNode->setAttribute('default', json_encode([
|
||||
'text' => $field->fieldparams->get('default_text'),
|
||||
'target' => $field->fieldparams->get('default_target', 'same_tab')
|
||||
]));
|
||||
|
||||
return $fieldNode;
|
||||
}
|
||||
}
|
||||
22
plugins/fields/acfurl/acfurl.xml
Normal file
22
plugins/fields/acfurl/acfurl.xml
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
|
||||
<name>ACF_URL</name>
|
||||
<description>ACF_URL_DESC</description>
|
||||
<author>Tassos Marinos</author>
|
||||
<creationDate>October 2018</creationDate>
|
||||
<copyright>Copyright (C) 2019 Tassos Marinos. All rights reserved.</copyright>
|
||||
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
|
||||
<authorEmail>info@tassos.gr</authorEmail>
|
||||
<authorUrl>www.tassos.gr</authorUrl>
|
||||
<version>1.0</version>
|
||||
<scriptfile>script.install.php</scriptfile>
|
||||
<files>
|
||||
<filename plugin="acfurl">acfurl.php</filename>
|
||||
<filename>script.install.helper.php</filename>
|
||||
<filename>version.php</filename>
|
||||
<folder>fields</folder>
|
||||
<folder>language</folder>
|
||||
<folder>params</folder>
|
||||
<folder>tmpl</folder>
|
||||
</files>
|
||||
</extension>
|
||||
85
plugins/fields/acfurl/fields/urladvanced.php
Normal file
85
plugins/fields/acfurl/fields/urladvanced.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Tassos.gr <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
use Joomla\CMS\Form\FormField;
|
||||
use Joomla\CMS\Form\Form;
|
||||
|
||||
class JFormFieldUrlAdvanced extends FormField
|
||||
{
|
||||
/**
|
||||
* Method to attach a JForm object to the field.
|
||||
*
|
||||
* @param SimpleXMLElement $element The SimpleXMLElement object representing the <field /> tag for the form field object.
|
||||
* @param mixed $value The form field value to validate.
|
||||
* @param string $group The field name group control value.
|
||||
*
|
||||
* @return boolean True on success.
|
||||
*
|
||||
* @since 3.6
|
||||
*/
|
||||
public function setup(SimpleXMLElement $element, $value, $group = null)
|
||||
{
|
||||
if (!parent::setup($element, $value, $group))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->value && is_string($this->value))
|
||||
{
|
||||
// Guess here is the JSON string from 'default' attribute
|
||||
$this->value = json_decode($this->value, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function getInput()
|
||||
{
|
||||
$form_source = new SimpleXMLElement('
|
||||
<form>
|
||||
<fieldset name="url">
|
||||
<field name="text" type="text"
|
||||
label="ACF_URL_TEXT"
|
||||
description="ACF_URL_TEXT_DESC"
|
||||
class="w-100"
|
||||
hint="ACF_URL_TEXT_DESC"
|
||||
required="' . $this->required . '"
|
||||
disabled="' . $this->disabled . '"
|
||||
/>
|
||||
<field name="url" type="url"
|
||||
label="NR_URL"
|
||||
description="ACF_URL_VALUE_DESC"
|
||||
class="w-100"
|
||||
hint="ACF_URL_VALUE_DESC"
|
||||
required="' . $this->required . '"
|
||||
disabled="' . $this->disabled . '"
|
||||
/>
|
||||
<field name="target" type="list"
|
||||
label="ACF_URL_TARGET"
|
||||
description="ACF_URL_TARGET_DESC"
|
||||
required="' . $this->required . '"
|
||||
disabled="' . $this->disabled . '">
|
||||
<option value="same_tab">ACF_URL_TARGET_SAME_TAB</option>
|
||||
<option value="new_tab">ACF_URL_TARGET_NEW_TAB</option>
|
||||
<option value="popup">ACF_URL_TARGET_POPUP</option>
|
||||
</field>
|
||||
</fieldset>
|
||||
</form>
|
||||
');
|
||||
|
||||
$control = $this->name;
|
||||
$formname = 'urladvanced.' . str_replace(['jform[', '[', ']'], ['', '.', ''], $control);
|
||||
|
||||
$form = Form::getInstance($formname, $form_source->asXML(), ['control' => $control]);
|
||||
$form->bind($this->value);
|
||||
|
||||
return $form->renderFieldset('url');
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Camps - ACF URL"
|
||||
ACF_URL_DESC="Escriu un URL i un text a l'administració que es mostrarà com un enllaç a la part pública."
|
||||
ACF_URL_VALUE_DESC="L'URL de l'enllaç"
|
||||
ACF_URL_DEFAULT_TEXT="Text per defecte de l'enllaç"
|
||||
ACF_URL_TEXT="Text de l'enllaç"
|
||||
ACF_URL_TEXT_DESC="El text de l'enllaç"
|
||||
ACF_URL_CLASS="Classe URL"
|
||||
ACF_URL_CLASS_DESC="Personalitza l'URL amb les teves pròpies classes"
|
||||
ACF_URL_DEFAULT_TARGET="Obrir a per defecte"
|
||||
ACF_URL_TARGET="Obrir a"
|
||||
ACF_URL_TARGET_DESC="Escull si obrir l'enllaç per defecte a la mateixa pestanya, a una de nova o a una finestra emergent."
|
||||
ACF_URL_DL_LINK="Tractar com un enllaç de descàrrega"
|
||||
ACF_URL_DL_LINK_DESC="Escull si vols descarregar l'arxiu enlloc de navegar-hi"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Estableix si afegir l'atribut NoFollow perquè els cercadors no vagin a aquest enllaç"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Escull si vols afegir l'atribut NoReferrer per tal de no enviar la capçalera HTTP del referent i que no en facin seguiment les eines d'analítica"
|
||||
ACF_URL_ONCLICK="on Click"
|
||||
ACF_URL_ONCLICK_DESC="Escriu codi Javascript a executar en clicar."
|
||||
ACF_URL_TARGET_SAME_TAB="Mateixa pestanya"
|
||||
ACF_URL_TARGET_NEW_TAB="Pestanya nova"
|
||||
ACF_URL_TARGET_POPUP="Finestra emergent"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Felter - ACF URL"
|
||||
ACF_URL_DESC="Angiv en URL og en tekst i backend og vis det som et link i frontend."
|
||||
ACF_URL_VALUE_DESC="URL'en for linket"
|
||||
ACF_URL_DEFAULT_TEXT="Standard linktekst"
|
||||
ACF_URL_TEXT="Linktekst"
|
||||
ACF_URL_TEXT_DESC="Teksten på linket of the link"
|
||||
ACF_URL_CLASS="URL klasse"
|
||||
ACF_URL_CLASS_DESC="Brugerdefiner URLen med dine egne CSS klasser"
|
||||
ACF_URL_DEFAULT_TARGET="Standard åben iOpen in"
|
||||
ACF_URL_TARGET="Åben i"
|
||||
ACF_URL_TARGET_DESC="Vælg at åbne linket i samme fane, i en ny fane eller i et popup vindue."
|
||||
ACF_URL_DL_LINK="Behandl som et download link"
|
||||
ACF_URL_DL_LINK_DESC="Vælg om filen skal downloades i stedet for at der navigeres til linket"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Vælg om attributten NoFollow skal tilføjes, så søgemaskiner ikke følger dette link"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Vælg om attributten NoReferrer skal tilføjes, som så ikke vil sende HTTP henviser hovedet, så det ikke kan spores af analyseværktøjer"
|
||||
ACF_URL_ONCLICK="ved klik"
|
||||
ACF_URL_ONCLICK_DESC="Angiv Javascript kode der skal køres ved klik."
|
||||
ACF_URL_TARGET_SAME_TAB="Samme fane"
|
||||
ACF_URL_TARGET_NEW_TAB="Ny fane"
|
||||
ACF_URL_TARGET_POPUP="Popup vindue"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Felder - ACF URL"
|
||||
ACF_URL_DESC="Geben Sie eine URL und einen Text in das Backend ein und zeigen Sie diese als Link im Frontend an."
|
||||
ACF_URL_VALUE_DESC="Die URL des Links"
|
||||
ACF_URL_DEFAULT_TEXT="Standard-Linktext"
|
||||
ACF_URL_TEXT="Linktext"
|
||||
ACF_URL_TEXT_DESC="Der Text des Links"
|
||||
ACF_URL_CLASS="URL-Klasse"
|
||||
ACF_URL_CLASS_DESC="Passen Sie die URL mit Ihren eigenen CSS-Klassen an"
|
||||
ACF_URL_DEFAULT_TARGET="Standardmäßig geöffnet in"
|
||||
ACF_URL_TARGET="Öffnen in"
|
||||
ACF_URL_TARGET_DESC="Wählen Sie diese Option, um den Link auf derselben Registerkarte, in einer neuen Registerkarte oder in einem Popup-Fenster zu öffnen."
|
||||
ACF_URL_DL_LINK="Als Download-Link behandeln"
|
||||
ACF_URL_DL_LINK_DESC="Wählen Sie aus, ob die Datei heruntergeladen werden soll, anstatt zum Link zu navigieren."
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Wählen Sie aus, ob das NoFollow-Attribut hinzugefügt werden soll, damit Suchmaschinen diesem Link nicht folgen."
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Wählen Sie aus, ob das NoReferrer-Attribut hinzugefügt werden soll, das den HTTP-Referrer-Kopf nicht sendet, damit er nicht von den Analysetools verfolgt wird."
|
||||
ACF_URL_ONCLICK="bei Klick"
|
||||
ACF_URL_ONCLICK_DESC="Geben Sie den Javascript-Code ein, der bei Klick ausgeführt werden soll."
|
||||
ACF_URL_TARGET_SAME_TAB="Gleiche Registerkarte"
|
||||
ACF_URL_TARGET_NEW_TAB="Neuer Tab"
|
||||
ACF_URL_TARGET_POPUP="Popup-Fenster"
|
||||
@ -0,0 +1,32 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Fields - ACF URL"
|
||||
ACF_URL_DESC="Enter a URL and a Text in the back-end and display it as a link in the front-end."
|
||||
ACF_URL_VALUE_DESC="The URL of the link"
|
||||
ACF_URL_DEFAULT_TEXT="Default Link Text"
|
||||
ACF_URL_TEXT="Link Text"
|
||||
ACF_URL_TEXT_DESC="The text of the link"
|
||||
ACF_URL_CLASS="URL Class"
|
||||
ACF_URL_CLASS_DESC="Customize the URL with your own CSS classes"
|
||||
ACF_URL_DEFAULT_TARGET="Default Open in"
|
||||
ACF_URL_TARGET="Open in"
|
||||
ACF_URL_TARGET_DESC="Select to open the link in the same tab, in a new tab or in a popup window."
|
||||
ACF_URL_DL_LINK="Treat as Download Link"
|
||||
ACF_URL_DL_LINK_DESC="Select whether to download the file instead of navigating to the link"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Select whether to add NoFollow attribute so search engines wont follow this link"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Select whether to add NoReferrer attribute which won't send the HTTP referrer head so it won't be tracked by analytics tools"
|
||||
ACF_URL_ONCLICK="on Click"
|
||||
ACF_URL_ONCLICK_DESC="Enter Javascript code to run on click."
|
||||
ACF_URL_TARGET_SAME_TAB="Same tab"
|
||||
ACF_URL_TARGET_NEW_TAB="New tab"
|
||||
ACF_URL_TARGET_POPUP="Popup window"
|
||||
ACF_URL_NOOPENER="NoOpener"
|
||||
ACF_URL_NOOPENER_DESC="Select whether to add NoOpener attribute to prevent the new tab from giving context access to the original page.<br><br>What this does is essentially prevent any macilious code that may be present on the new tab to steal information from the original page.<br><br>Note that this attribute is already added by default by all modern browsers to external links.<br><br>Note: On links that open in new tab, this will always be applied."
|
||||
@ -0,0 +1,9 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
ACF_URL="Fields - ACF URL"
|
||||
ACF_URL_DESC="Enter a URL and a Text in the back-end and display it as a link in the front-end."
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Campos - ACF URL"
|
||||
ACF_URL_DESC="Ingrese una URL y un Texto en el back-end y muéstrelo como un enlace en el front-end."
|
||||
ACF_URL_VALUE_DESC="La URL del enlace"
|
||||
ACF_URL_DEFAULT_TEXT="Texto de vínculo predeterminado"
|
||||
ACF_URL_TEXT="Texto del Enlace"
|
||||
ACF_URL_TEXT_DESC="El texto del enlace"
|
||||
ACF_URL_CLASS="Clase de URL"
|
||||
ACF_URL_CLASS_DESC="Personalizar la URL con sus propias clases de CSS"
|
||||
ACF_URL_DEFAULT_TARGET="Predeterminado Abrir en"
|
||||
ACF_URL_TARGET="Abrir en"
|
||||
ACF_URL_TARGET_DESC="Seleccione para abrir el enlace en la misma pestaña, en una nueva pestaña o en una ventana emergente."
|
||||
ACF_URL_DL_LINK="Tratar como enlace de descarga"
|
||||
ACF_URL_DL_LINK_DESC="Seleccione si desea descargar el archivo en lugar de navegar hasta el enlace"
|
||||
ACF_URL_NOFOLLOW="No Seguir"
|
||||
ACF_URL_NOFOLLOW_DESC="Seleccione si desea agregar el atributo NoFollow para que los motores de búsqueda no sigan este enlace"
|
||||
ACF_URL_NOREFERRER="Sin Referencia"
|
||||
ACF_URL_NOREFERRER_DESC="Seleccione si desea agregar el atributo NoReferrer que no enviará el encabezado de referencia HTTP para que las herramientas de análisis no lo rastreen."
|
||||
ACF_URL_ONCLICK="al hacer clic"
|
||||
ACF_URL_ONCLICK_DESC="Ingrese el código Javascript para ejecutar al hacer clic."
|
||||
ACF_URL_TARGET_SAME_TAB="Misma pestaña"
|
||||
ACF_URL_TARGET_NEW_TAB="Nueva pestaña"
|
||||
ACF_URL_TARGET_POPUP="Ventana emergente"
|
||||
@ -0,0 +1,9 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
ACF_URL="Campos - ACF URL"
|
||||
ACF_URL_DESC="Ingrese una URL y un Texto en el back-end y muéstrelo como un enlace en el front-end."
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Champs - ACF URL"
|
||||
ACF_URL_DESC="Saisir une URL et un texte en arrière-plan et affichez-le en tant que lien sur le site public."
|
||||
ACF_URL_VALUE_DESC="URL du lien. Ne pas oublier http:// ou https://"
|
||||
ACF_URL_DEFAULT_TEXT="Texte par défaut du lien"
|
||||
ACF_URL_TEXT="Texte du lien"
|
||||
ACF_URL_TEXT_DESC="Le texte du lien"
|
||||
ACF_URL_CLASS="Classe CSS de l'URL"
|
||||
ACF_URL_CLASS_DESC="Personnaliser l'URL avec vos propres classes CSS"
|
||||
ACF_URL_DEFAULT_TARGET="Par défaut, ouvrir dans"
|
||||
ACF_URL_TARGET="Ouvrir dans"
|
||||
ACF_URL_TARGET_DESC="Choisir d'ouvrir le lien dans le même onglet, dans un nouvel onglet ou dans une fenêtre popup."
|
||||
ACF_URL_DL_LINK="Traiter comme un lien de téléchargement"
|
||||
ACF_URL_DL_LINK_DESC="Choisir de télécharger le fichier au lieu de naviguer vers le lien"
|
||||
; ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Sélectionner pour ajouter l'attribut NoFollow afin que les moteurs de recherche ne suivent pas ce lien"
|
||||
; ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Choisir d’ajouter ou non l’attribut NoReferrer qui n’enverra pas l'en-tête HTTP de référence et qui ne sera donc pas suivie par les outils d’analyse"
|
||||
; ACF_URL_ONCLICK="on Click"
|
||||
ACF_URL_ONCLICK_DESC="Entrer le code Javascript à exécuter au moment du clic."
|
||||
ACF_URL_TARGET_SAME_TAB="Même onglet"
|
||||
ACF_URL_TARGET_NEW_TAB="Nouvel onglet"
|
||||
ACF_URL_TARGET_POPUP="Fenêtre popup"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Campi - URL ACF"
|
||||
ACF_URL_DESC="Immettere un URL e un testo in amministrazione e visualizzarli come collegamento nel front-end."
|
||||
ACF_URL_VALUE_DESC="L'URL del collegamento"
|
||||
ACF_URL_DEFAULT_TEXT="Testo predefinito del collegamento"
|
||||
ACF_URL_TEXT="Testo collegamento"
|
||||
ACF_URL_TEXT_DESC="Il testo del collegamento"
|
||||
ACF_URL_CLASS="Classe URL"
|
||||
ACF_URL_CLASS_DESC="Personalizza l'URL con le tue classi CSS"
|
||||
ACF_URL_DEFAULT_TARGET="Apri in predefinito"
|
||||
ACF_URL_TARGET="Apri in"
|
||||
ACF_URL_TARGET_DESC="Selezionare per aprire il collegamento nella stessa scheda, in una nuova scheda o in una finestra popup."
|
||||
ACF_URL_DL_LINK="Utilizza come collegamento di scaricamento"
|
||||
ACF_URL_DL_LINK_DESC="Scegli se scaricare il file invece di navigare fino al collegamento"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Seleziona se aggiungere l'attributo NoFollow in modo che i motori di ricerca non seguano questo collegamento"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Seleziona se aggiungere l'attributo NoReferrer che non invierà l'intestazione del referrer HTTP in modo che non venga tracciato dagli strumenti di analisi dei dati"
|
||||
ACF_URL_ONCLICK="al clic"
|
||||
ACF_URL_ONCLICK_DESC="Inserisci il codice Javascript da eseguire al clic."
|
||||
ACF_URL_TARGET_SAME_TAB="Stessa scheda"
|
||||
ACF_URL_TARGET_NEW_TAB="Nuova scheda"
|
||||
ACF_URL_TARGET_POPUP="Finestra popup"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Velsden - ACF URL"
|
||||
ACF_URL_DESC="Voer een URL en een tekst in op de back-end en toon deze als een link aan de front-end."
|
||||
ACF_URL_VALUE_DESC="De URL van de link"
|
||||
ACF_URL_DEFAULT_TEXT="Standaard Link Tekst"
|
||||
ACF_URL_TEXT="Link Tekst"
|
||||
ACF_URL_TEXT_DESC="De tekst van de link"
|
||||
ACF_URL_CLASS="URL Klasse"
|
||||
ACF_URL_CLASS_DESC="Pas de URL aan met klasses van jezelf"
|
||||
ACF_URL_DEFAULT_TARGET="Standaard Openen in"
|
||||
ACF_URL_TARGET="Open in"
|
||||
ACF_URL_TARGET_DESC="Selecteer om de link te openen op het zelfde tabblad, op een nieuw tabblad of in een pop-upvenster ."
|
||||
ACF_URL_DL_LINK="Behandel als downloadlink"
|
||||
ACF_URL_DL_LINK_DESC="Selecteer of u het bestand wilt downloaden in plaats van de link te volgen"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Selecteer of je het kenmerk NoFollow wilt toevoegen zodat zoekmachines deze link niet zullen volgen"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Selecteer of je het NoReferrer-kenmerk wilt toevoegen dat de HTTP-verwijzingskop niet verzend en niet zal worden bijgehouden door analysetools"
|
||||
ACF_URL_ONCLICK="on Click"
|
||||
ACF_URL_ONCLICK_DESC="Voer Javascript-code in om te draaien zodra er geklikt is"
|
||||
ACF_URL_TARGET_SAME_TAB="Zelfde Tabblad"
|
||||
ACF_URL_TARGET_NEW_TAB="Nieuw Tabblad"
|
||||
ACF_URL_TARGET_POPUP="Popup Scherm"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Поля - ACF URL"
|
||||
ACF_URL_DESC="Введите URL-адрес и текст на серверной части и отобразите их в виде ссылки на серверной части."
|
||||
ACF_URL_VALUE_DESC="URL ссылки"
|
||||
ACF_URL_DEFAULT_TEXT="Текст ссылки по умолчанию"
|
||||
ACF_URL_TEXT="Текст ссылки"
|
||||
ACF_URL_TEXT_DESC="Текст ссылки"
|
||||
ACF_URL_CLASS="Класс URL"
|
||||
ACF_URL_CLASS_DESC="Настройте URL с вашими собственными классами CSS"
|
||||
ACF_URL_DEFAULT_TARGET="Открытие по умолчанию в"
|
||||
ACF_URL_TARGET="Открыть в"
|
||||
ACF_URL_TARGET_DESC="Выберите, чтобы открыть ссылку на той же вкладке, на новой вкладке или во всплывающем окне."
|
||||
ACF_URL_DL_LINK="Рассматривать как ссылку для скачивания"
|
||||
ACF_URL_DL_LINK_DESC="Выберите, загружать ли файл вместо перехода по ссылке"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Выберите, следует ли добавить атрибут NoFollow, чтобы поисковые системы не переходили по этой ссылке"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Выберите, следует ли добавить атрибут NoReferrer, который не будет отправлять голову реферера HTTP, чтобы он не отслеживался инструментами аналитики"
|
||||
ACF_URL_ONCLICK="при клике"
|
||||
ACF_URL_ONCLICK_DESC="Введите код Javascript для запуска при клике."
|
||||
ACF_URL_TARGET_SAME_TAB="Та же вкладка"
|
||||
ACF_URL_TARGET_NEW_TAB="Новая вкладка"
|
||||
ACF_URL_TARGET_POPUP="Всплывающее окно"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Fält - ACF URL"
|
||||
ACF_URL_DESC="Ange en URL och en text i backend och visa den som en länk i frontend."
|
||||
ACF_URL_VALUE_DESC="Länkens URL"
|
||||
ACF_URL_DEFAULT_TEXT="Standard länktext"
|
||||
ACF_URL_TEXT="Länktext"
|
||||
ACF_URL_TEXT_DESC="Länkens text."
|
||||
ACF_URL_CLASS="URL klass"
|
||||
ACF_URL_CLASS_DESC="Anpassa URLen med egna CSS-klasser."
|
||||
ACF_URL_DEFAULT_TARGET="Standard öppna i"
|
||||
ACF_URL_TARGET="Öppna i"
|
||||
ACF_URL_TARGET_DESC="Välj om länken ska öppnas i samma flik, i en ny flik eller i ett popup-fönster."
|
||||
ACF_URL_DL_LINK="Behandla som nedladdningslänk"
|
||||
ACF_URL_DL_LINK_DESC="Välj om du vill att filen ska laddas ner istället för att navigera till länken"
|
||||
ACF_URL_NOFOLLOW="NoFollow"
|
||||
ACF_URL_NOFOLLOW_DESC="Välj om du vill lägga till NoFollow-attribut så att sökmotorer inte följer den här länken"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Välj om du vill lägga till NoReferrer-attribut som stoppar HTTP-referrerhuvudet att skickas, så att det inte spåras av analysverktyg"
|
||||
ACF_URL_ONCLICK="on Click"
|
||||
ACF_URL_ONCLICK_DESC="Ange Javascript-kod för att köra vid klick."
|
||||
ACF_URL_TARGET_SAME_TAB="Samma flik"
|
||||
ACF_URL_TARGET_NEW_TAB="My flik"
|
||||
ACF_URL_TARGET_POPUP="Popup-fönster"
|
||||
@ -0,0 +1,30 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2019 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFURL_LABEL="ACF - URL"
|
||||
ACF_URL="Поля - URL-адреса ACF"
|
||||
ACF_URL_DESC="Введіть URL-адресу та текст у зворотній частині та відображіть їх як посилання на передньому."
|
||||
ACF_URL_VALUE_DESC="URL-адреса посилання"
|
||||
ACF_URL_DEFAULT_TEXT="Текст посилання за замовчуванням"
|
||||
ACF_URL_TEXT="Текст посилання"
|
||||
ACF_URL_TEXT_DESC="Текст посилання"
|
||||
ACF_URL_CLASS="Клас URL"
|
||||
ACF_URL_CLASS_DESC="Налаштувати URL-адресу за допомогою власних класів CSS"
|
||||
ACF_URL_DEFAULT_TARGET="Відкрити за замовчуванням"
|
||||
ACF_URL_TARGET="Відкрити в"
|
||||
ACF_URL_TARGET_DESC="Виберіть, щоб відкрити посилання на тій же вкладці, у новій вкладці або у спливаючому вікні."
|
||||
ACF_URL_DL_LINK="Розглянути як посилання для завантаження"
|
||||
ACF_URL_DL_LINK_DESC="Виберіть, чи потрібно завантажити файл замість переходу до посилання"
|
||||
ACF_URL_NOFOLLOW="Не виконувати"
|
||||
ACF_URL_NOFOLLOW_DESC="Виберіть, чи потрібно додати атрибут NoFollow, щоб пошукові системи не переходили за цим посиланням"
|
||||
ACF_URL_NOREFERRER="NoReferrer"
|
||||
ACF_URL_NOREFERRER_DESC="Виберіть, чи потрібно додати атрибут NoReferrer, який не буде надсилати голову реферала HTTP, щоб його не відстежували інструменти аналітики"
|
||||
ACF_URL_ONCLICK="при натисканні"
|
||||
ACF_URL_ONCLICK_DESC="Введіть код Javascript для запуску при натисканні."
|
||||
ACF_URL_TARGET_SAME_TAB="Та сама вкладка"
|
||||
ACF_URL_TARGET_NEW_TAB="Нова вкладка"
|
||||
ACF_URL_TARGET_POPUP="Вікно спливаючого вікна"
|
||||
54
plugins/fields/acfurl/params/acfurl.xml
Normal file
54
plugins/fields/acfurl/params/acfurl.xml
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<form>
|
||||
<fields name="fieldparams">
|
||||
<fieldset name="fieldparams">
|
||||
<field name="default_text" type="text"
|
||||
label="ACF_URL_DEFAULT_TEXT"
|
||||
description="ACF_URL_TEXT_DESC"
|
||||
hint="ACF_URL_TEXT"
|
||||
/>
|
||||
<field name="default_target" type="list"
|
||||
label="ACF_URL_DEFAULT_TARGET"
|
||||
description="ACF_URL_TARGET_DESC"
|
||||
default="same_tab">
|
||||
<option value="same_tab">ACF_URL_TARGET_SAME_TAB</option>
|
||||
<option value="new_tab">ACF_URL_TARGET_NEW_TAB</option>
|
||||
<option value="popup">ACF_URL_TARGET_POPUP</option>
|
||||
</field>
|
||||
|
||||
<field name="url_class" type="text"
|
||||
label="ACF_URL_CLASS"
|
||||
description="ACF_URL_CLASS_DESC"
|
||||
/>
|
||||
|
||||
<field name="noopener" type="nrtoggle"
|
||||
label="ACF_URL_NOOPENER"
|
||||
description="ACF_URL_NOOPENER_DESC"
|
||||
checked="true"
|
||||
/>
|
||||
|
||||
<field name="nofollow" type="nrtoggle"
|
||||
label="ACF_URL_NOFOLLOW"
|
||||
description="ACF_URL_NOFOLLOW_DESC"
|
||||
/>
|
||||
<field name="noreferrer" type="nrtoggle"
|
||||
label="ACF_URL_NOREFERRER"
|
||||
description="ACF_URL_NOREFERRER_DESC"
|
||||
/>
|
||||
<field name="treat_as_download_link" type="nrtoggle"
|
||||
label="ACF_URL_DL_LINK"
|
||||
description="ACF_URL_DL_LINK_DESC"
|
||||
/>
|
||||
<field name="onclick" type="textarea"
|
||||
label="ACF_URL_ONCLICK"
|
||||
description="ACF_URL_ONCLICK_DESC"
|
||||
class="input-xxlarge"
|
||||
rows="5"
|
||||
hint="ACF_URL_ONCLICK_DESC"
|
||||
/>
|
||||
|
||||
|
||||
</fieldset>
|
||||
</fields>
|
||||
</form>
|
||||
|
||||
691
plugins/fields/acfurl/script.install.helper.php
Normal file
691
plugins/fields/acfurl/script.install.helper.php
Normal file
@ -0,0 +1,691 @@
|
||||
<?php
|
||||
/**
|
||||
* Installer Script Helper
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2016 Tassos Marinos All Rights Reserved
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Installer\Installer;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\Filesystem\File;
|
||||
use Joomla\Filesystem\Folder;
|
||||
|
||||
class PlgFieldsAcfurlInstallerScriptHelper
|
||||
{
|
||||
public $name = '';
|
||||
public $alias = '';
|
||||
public $extname = '';
|
||||
public $extension_type = '';
|
||||
public $plugin_folder = 'system';
|
||||
public $module_position = 'status';
|
||||
public $client_id = 1;
|
||||
public $install_type = 'install';
|
||||
public $show_message = true;
|
||||
public $autopublish = true;
|
||||
public $db = null;
|
||||
public $app = null;
|
||||
public $installedVersion;
|
||||
|
||||
public function __construct(&$params)
|
||||
{
|
||||
$this->extname = $this->extname ?: $this->alias;
|
||||
$this->db = Factory::getDbo();
|
||||
$this->app = Factory::getApplication();
|
||||
$this->installedVersion = $this->getVersion($this->getInstalledXMLFile());
|
||||
}
|
||||
|
||||
/**
|
||||
* Preflight event
|
||||
*
|
||||
* @param string
|
||||
* @param JAdapterInstance
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function preflight($route, $adapter)
|
||||
{
|
||||
if (!in_array($route, array('install', 'update')))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Factory::getLanguage()->load('plg_system_novaraininstaller', JPATH_PLUGINS . '/system/novaraininstaller');
|
||||
|
||||
if ($this->show_message && $this->isInstalled())
|
||||
{
|
||||
$this->install_type = 'update';
|
||||
}
|
||||
|
||||
if ($this->onBeforeInstall() === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Preflight event
|
||||
*
|
||||
* @param string
|
||||
* @param JAdapterInstance
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function postflight($route, $adapter)
|
||||
{
|
||||
Factory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder());
|
||||
|
||||
if (!in_array($route, array('install', 'update')))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->onAfterInstall() === false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($route == 'install' && $this->autopublish)
|
||||
{
|
||||
$this->publishExtension();
|
||||
}
|
||||
|
||||
if ($this->show_message)
|
||||
{
|
||||
$this->addInstalledMessage();
|
||||
}
|
||||
|
||||
Factory::getCache()->clean('com_plugins');
|
||||
Factory::getCache()->clean('_system');
|
||||
}
|
||||
|
||||
public function isInstalled()
|
||||
{
|
||||
if (!is_file($this->getInstalledXMLFile()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$query = $this->db->getQuery(true)
|
||||
->select('extension_id')
|
||||
->from('#__extensions')
|
||||
->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type))
|
||||
->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName()));
|
||||
$this->db->setQuery($query, 0, 1);
|
||||
$result = $this->db->loadResult();
|
||||
|
||||
return empty($result) ? false : true;
|
||||
}
|
||||
|
||||
public function getMainFolder()
|
||||
{
|
||||
switch ($this->extension_type)
|
||||
{
|
||||
case 'plugin' :
|
||||
return JPATH_SITE . '/plugins/' . $this->plugin_folder . '/' . $this->extname;
|
||||
|
||||
case 'component' :
|
||||
return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname;
|
||||
|
||||
case 'module' :
|
||||
return JPATH_ADMINISTRATOR . '/modules/mod_' . $this->extname;
|
||||
|
||||
case 'library' :
|
||||
return JPATH_SITE . '/libraries/' . $this->extname;
|
||||
}
|
||||
}
|
||||
|
||||
public function getInstalledXMLFile()
|
||||
{
|
||||
return $this->getXMLFile($this->getMainFolder());
|
||||
}
|
||||
|
||||
public function getCurrentXMLFile()
|
||||
{
|
||||
return $this->getXMLFile(__DIR__);
|
||||
}
|
||||
|
||||
public function getXMLFile($folder)
|
||||
{
|
||||
switch ($this->extension_type)
|
||||
{
|
||||
case 'module' :
|
||||
return $folder . '/mod_' . $this->extname . '.xml';
|
||||
default :
|
||||
return $folder . '/' . $this->extname . '.xml';
|
||||
}
|
||||
}
|
||||
|
||||
public function foldersExist($folders = array())
|
||||
{
|
||||
foreach ($folders as $folder)
|
||||
{
|
||||
if (is_dir($folder))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function publishExtension()
|
||||
{
|
||||
switch ($this->extension_type)
|
||||
{
|
||||
case 'plugin' :
|
||||
$this->publishPlugin();
|
||||
|
||||
case 'module' :
|
||||
$this->publishModule();
|
||||
}
|
||||
}
|
||||
|
||||
public function publishPlugin()
|
||||
{
|
||||
$query = $this->db->getQuery(true)
|
||||
->update('#__extensions')
|
||||
->set($this->db->quoteName('enabled') . ' = 1')
|
||||
->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
|
||||
->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname))
|
||||
->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder));
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
|
||||
public function publishModule()
|
||||
{
|
||||
// Get module id
|
||||
$query = $this->db->getQuery(true)
|
||||
->select('id')
|
||||
->from('#__modules')
|
||||
->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
|
||||
->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
|
||||
$this->db->setQuery($query, 0, 1);
|
||||
$id = $this->db->loadResult();
|
||||
|
||||
if (!$id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// check if module is already in the modules_menu table (meaning is is already saved)
|
||||
$query->clear()
|
||||
->select('moduleid')
|
||||
->from('#__modules_menu')
|
||||
->where($this->db->quoteName('moduleid') . ' = ' . (int) $id);
|
||||
$this->db->setQuery($query, 0, 1);
|
||||
$exists = $this->db->loadResult();
|
||||
|
||||
if ($exists)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Get highest ordering number in position
|
||||
$query->clear()
|
||||
->select('ordering')
|
||||
->from('#__modules')
|
||||
->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
|
||||
->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id)
|
||||
->order('ordering DESC');
|
||||
$this->db->setQuery($query, 0, 1);
|
||||
$ordering = $this->db->loadResult();
|
||||
$ordering++;
|
||||
|
||||
// publish module and set ordering number
|
||||
$query->clear()
|
||||
->update('#__modules')
|
||||
->set($this->db->quoteName('published') . ' = 1')
|
||||
->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering)
|
||||
->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
|
||||
->where($this->db->quoteName('id') . ' = ' . (int) $id);
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
|
||||
// add module to the modules_menu table
|
||||
$query->clear()
|
||||
->insert('#__modules_menu')
|
||||
->columns(array($this->db->quoteName('moduleid'), $this->db->quoteName('menuid')))
|
||||
->values((int) $id . ', 0');
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
|
||||
public function addInstalledMessage()
|
||||
{
|
||||
Factory::getApplication()->enqueueMessage(
|
||||
Text::sprintf(
|
||||
Text::_($this->install_type == 'update' ? 'NRI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'NRI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'),
|
||||
'<strong>' . Text::_($this->name) . '</strong>',
|
||||
'<strong>' . $this->getVersion() . '</strong>',
|
||||
$this->getFullType()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function getPrefix()
|
||||
{
|
||||
switch ($this->extension_type)
|
||||
{
|
||||
case 'plugin';
|
||||
return Text::_('plg_' . strtolower($this->plugin_folder));
|
||||
|
||||
case 'component':
|
||||
return Text::_('com');
|
||||
|
||||
case 'module':
|
||||
return Text::_('mod');
|
||||
|
||||
case 'library':
|
||||
return Text::_('lib');
|
||||
|
||||
default:
|
||||
return $this->extension_type;
|
||||
}
|
||||
}
|
||||
|
||||
public function getElementName($type = null, $extname = null)
|
||||
{
|
||||
$type = is_null($type) ? $this->extension_type : $type;
|
||||
$extname = is_null($extname) ? $this->extname : $extname;
|
||||
|
||||
switch ($type)
|
||||
{
|
||||
case 'component' :
|
||||
return 'com_' . $extname;
|
||||
|
||||
case 'module' :
|
||||
return 'mod_' . $extname;
|
||||
|
||||
case 'plugin' :
|
||||
default:
|
||||
return $extname;
|
||||
}
|
||||
}
|
||||
|
||||
public function getFullType()
|
||||
{
|
||||
return Text::_('NRI_' . strtoupper($this->getPrefix()));
|
||||
}
|
||||
|
||||
public function isPro()
|
||||
{
|
||||
$versionFile = __DIR__ . "/version.php";
|
||||
|
||||
// If version file does not exist we assume a PRO version
|
||||
if (!is_file($versionFile))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Load version file
|
||||
require_once $versionFile;
|
||||
return (bool) $NR_PRO;
|
||||
}
|
||||
|
||||
public function getVersion($file = '')
|
||||
{
|
||||
$file = $file ?: $this->getCurrentXMLFile();
|
||||
|
||||
if (!is_file($file))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$xml = Installer::parseXMLInstallFile($file);
|
||||
|
||||
if (!$xml || !isset($xml['version']))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
return $xml['version'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks wether the extension can be installed or not
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function canInstall()
|
||||
{
|
||||
// The extension is not installed yet. Accept Install.
|
||||
if (!$installed_version = $this->getVersion($this->getInstalledXMLFile()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Path to extension's version file
|
||||
$versionFile = $this->getMainFolder() . "/version.php";
|
||||
$NR_PRO = true;
|
||||
|
||||
// If version file does not exist we assume we have a PRO version installed
|
||||
if (file_exists($versionFile))
|
||||
{
|
||||
require_once($versionFile);
|
||||
}
|
||||
|
||||
// The free version is installed. Accept install.
|
||||
if (!(bool)$NR_PRO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Current package is a PRO version. Accept install.
|
||||
if ($this->isPro())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// User is trying to update from PRO version to FREE. Do not accept install.
|
||||
Factory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__);
|
||||
|
||||
Factory::getApplication()->enqueueMessage(
|
||||
Text::_('NRI_ERROR_PRO_TO_FREE'), 'error'
|
||||
);
|
||||
|
||||
Factory::getApplication()->enqueueMessage(
|
||||
html_entity_decode(
|
||||
Text::sprintf(
|
||||
'NRI_ERROR_UNINSTALL_FIRST',
|
||||
'<a href="http://www.tassos.gr/joomla-extensions/' . $this->getUrlAlias() . '" target="_blank">',
|
||||
'</a>',
|
||||
Text::_($this->name)
|
||||
)
|
||||
), 'error'
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the URL alias of the extension.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function getUrlAlias()
|
||||
{
|
||||
$alias = $this->alias;
|
||||
|
||||
switch ($alias)
|
||||
{
|
||||
case 'smilepack':
|
||||
$alias = 'smile-pack';
|
||||
break;
|
||||
case 'convertforms':
|
||||
$alias = 'convert-forms';
|
||||
break;
|
||||
case 'rstbox':
|
||||
$alias = 'engagebox';
|
||||
break;
|
||||
case 'gsd':
|
||||
$alias = 'google-structured-data';
|
||||
break;
|
||||
}
|
||||
|
||||
// ACF
|
||||
if ($this->plugin_folder === 'fields' && ($alias === 'acf' || $this->startsWith($alias, 'acf')))
|
||||
{
|
||||
$alias = 'advanced-custom-fields';
|
||||
}
|
||||
|
||||
return $alias;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether string starts with substring.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $query
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function startsWith($string, $query)
|
||||
{
|
||||
return substr($string, 0, strlen($query)) === $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if current version is newer than the installed one
|
||||
* Used for Novarain Framework
|
||||
*
|
||||
* @return boolean [description]
|
||||
*/
|
||||
public function isNewer()
|
||||
{
|
||||
if (!$installed_version = $this->getVersion($this->getInstalledXMLFile()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
$package_version = $this->getVersion();
|
||||
|
||||
return version_compare($installed_version, $package_version, '<=');
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method triggered before installation
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function onBeforeInstall()
|
||||
{
|
||||
if (!$this->canInstall())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method triggered after installation
|
||||
*/
|
||||
public function onAfterInstall()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete files
|
||||
*
|
||||
* @param array $folders
|
||||
*/
|
||||
public function deleteFiles($files = array())
|
||||
{
|
||||
foreach ($files as $key => $file)
|
||||
{
|
||||
if (!is_file($file))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
File::delete($file);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes folders
|
||||
*
|
||||
* @param array $folders
|
||||
*/
|
||||
public function deleteFolders($folders = array())
|
||||
{
|
||||
foreach ($folders as $folder)
|
||||
{
|
||||
if (!is_dir($folder))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Folder::delete($folder);
|
||||
}
|
||||
}
|
||||
|
||||
public function dropIndex($table, $index)
|
||||
{
|
||||
$db = $this->db;
|
||||
|
||||
// Check if index exists first
|
||||
$query = 'SHOW INDEX FROM ' . $db->quoteName('#__' . $table) . ' WHERE KEY_NAME = ' . $db->quote($index);
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
|
||||
if (!$db->loadResult())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove index
|
||||
$query = 'ALTER TABLE ' . $db->quoteName('#__' . $table) . ' DROP INDEX ' . $db->quoteName($index);
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
}
|
||||
|
||||
public function dropUnwantedTables($tables) {
|
||||
|
||||
if (!$tables) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($tables as $table) {
|
||||
$query = "DROP TABLE IF EXISTS #__".$this->db->escape($table);
|
||||
$this->db->setQuery($query);
|
||||
$this->db->execute();
|
||||
}
|
||||
}
|
||||
|
||||
public function dropUnwantedColumns($table, $columns) {
|
||||
|
||||
if (!$columns || !$table) {
|
||||
return;
|
||||
}
|
||||
|
||||
$db = $this->db;
|
||||
|
||||
// Check if columns exists in database
|
||||
function qt($n) {
|
||||
return(Factory::getDBO()->quote($n));
|
||||
}
|
||||
|
||||
$query = 'SHOW COLUMNS FROM #__'.$table.' WHERE Field IN ('.implode(",", array_map("qt", $columns)).')';
|
||||
$db->setQuery($query);
|
||||
$rows = $db->loadColumn(0);
|
||||
|
||||
// Abort if we don't have any rows
|
||||
if (!$rows) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Let's remove the columns
|
||||
$q = "";
|
||||
foreach ($rows as $key => $column) {
|
||||
$comma = (($key+1) < count($rows)) ? "," : "";
|
||||
$q .= "drop ".$this->db->escape($column).$comma;
|
||||
}
|
||||
|
||||
$query = "alter table #__".$table." $q";
|
||||
|
||||
$db->setQuery($query);
|
||||
$db->execute();
|
||||
}
|
||||
|
||||
public function fetch($table, $columns = "*", $where = null, $singlerow = false) {
|
||||
if (!$table) {
|
||||
return;
|
||||
}
|
||||
|
||||
$db = $this->db;
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$query
|
||||
->select($columns)
|
||||
->from("#__$table");
|
||||
|
||||
if (isset($where)) {
|
||||
$query->where("$where");
|
||||
}
|
||||
|
||||
$db->setQuery($query);
|
||||
|
||||
return ($singlerow) ? $db->loadObject() : $db->loadObjectList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the Novarain Framework
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function loadFramework()
|
||||
{
|
||||
if (is_file(JPATH_PLUGINS . '/system/nrframework/autoload.php'))
|
||||
{
|
||||
include_once JPATH_PLUGINS . '/system/nrframework/autoload.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-orders plugin after passed array of plugins
|
||||
*
|
||||
* @param string $plugin Plugin element name
|
||||
* @param array $lowerPluginOrder Array of plugin element names
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function pluginOrderAfter($lowerPluginOrder)
|
||||
{
|
||||
|
||||
if (!is_array($lowerPluginOrder) || !count($lowerPluginOrder))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$db = $this->db;
|
||||
|
||||
// Get plugins max order
|
||||
$query = $db->getQuery(true);
|
||||
$query
|
||||
->select($db->quoteName('b.ordering'))
|
||||
->from($db->quoteName('#__extensions', 'b'))
|
||||
->where($db->quoteName('b.element') . ' IN ("'.implode("\",\"",$lowerPluginOrder).'")')
|
||||
->order('b.ordering desc');
|
||||
|
||||
$db->setQuery($query);
|
||||
$maxOrder = $db->loadResult();
|
||||
|
||||
if (is_null($maxOrder))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Get plugin details
|
||||
$query
|
||||
->clear()
|
||||
->select(array($db->quoteName('extension_id'), $db->quoteName('ordering')))
|
||||
->from($db->quoteName('#__extensions'))
|
||||
->where($db->quoteName('element') . ' = ' . $db->quote($this->alias));
|
||||
|
||||
$db->setQuery($query);
|
||||
$pluginInfo = $db->loadObject();
|
||||
|
||||
if (!isset($pluginInfo->ordering) || $pluginInfo->ordering > $maxOrder)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the new plugin order
|
||||
$object = new stdClass();
|
||||
$object->extension_id = $pluginInfo->extension_id;
|
||||
$object->ordering = ($maxOrder + 1);
|
||||
|
||||
try {
|
||||
$db->updateObject('#__extensions', $object, 'extension_id');
|
||||
} catch (Exception $e) {
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
23
plugins/fields/acfurl/script.install.php
Normal file
23
plugins/fields/acfurl/script.install.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Advanced Custom Fields
|
||||
* @version 2.8.8 Pro
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
require_once __DIR__ . '/script.install.helper.php';
|
||||
|
||||
class PlgFieldsACFUrlInstallerScript extends PlgFieldsACFUrlInstallerScriptHelper
|
||||
{
|
||||
public $alias = 'acfurl';
|
||||
public $extension_type = 'plugin';
|
||||
public $plugin_folder = "fields";
|
||||
public $show_message = false;
|
||||
}
|
||||
88
plugins/fields/acfurl/tmpl/acfurl.php
Normal file
88
plugins/fields/acfurl/tmpl/acfurl.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Advanced Custom Fields
|
||||
* @version 2.8.8 Pro
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\Registry\Registry;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
if (!$url = $field->value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$url = new Registry($url);
|
||||
|
||||
if (empty($url['url']))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$id = 'acf_url_' . $item->id . '_' . $field->id;
|
||||
|
||||
// Output
|
||||
$rel = [];
|
||||
$CSSClass = trim('acf_url ' . $fieldParams->get('url_class'));
|
||||
$buffer = '<a id="' . $id . '" href="' . $url->get('url') . '" class="' . $CSSClass . '"';
|
||||
$noopener = $fieldParams->get('noopener', '1') === '1';
|
||||
|
||||
// Add noopener rel attribute
|
||||
$rel = array_merge($rel, [
|
||||
'noopener' => $noopener
|
||||
]);
|
||||
|
||||
// Set target attribute
|
||||
if ($url->get('target') == 'new_tab')
|
||||
{
|
||||
$buffer .= ' target="_blank"';
|
||||
|
||||
// Force it on new_tab links
|
||||
$rel = array_merge($rel, [
|
||||
'noopener' => 1
|
||||
]);
|
||||
}
|
||||
|
||||
if ($url->get('target') == 'popup')
|
||||
{
|
||||
$onclick = $fieldParams->get('onclick');
|
||||
$new_window_code = 'window.open(\'' . $url->get('url') . '\', \'_blank\', \'width=800,height=600\'); return false;';
|
||||
$fieldParams->set('onclick', $onclick . $new_window_code);
|
||||
}
|
||||
|
||||
// Set the onClick handler - Do not remove this block from Free version as it's required by the target property.
|
||||
$onclick = $fieldParams->get('onclick');
|
||||
if (!empty($onclick)) {
|
||||
$buffer .= ' onclick="' . $onclick . '"';
|
||||
}
|
||||
|
||||
|
||||
// Set rel attributes
|
||||
$rel = array_filter(array_merge($rel, [
|
||||
'noreferrer' => $fieldParams->get('noreferrer', false),
|
||||
'nofollow' => $fieldParams->get('nofollow', false)
|
||||
]));
|
||||
|
||||
// Treat it as a download link
|
||||
if ($fieldParams->get('treat_as_download_link', false))
|
||||
{
|
||||
$buffer .= ' download';
|
||||
}
|
||||
|
||||
|
||||
if ($rel)
|
||||
{
|
||||
$buffer .= ' rel="' . implode(' ', array_keys($rel)) . '"';
|
||||
}
|
||||
|
||||
$buffer .= '>' . Text::_($url->get('text', $fieldParams->get('default_text'))) . '</a>';
|
||||
|
||||
echo $buffer;
|
||||
16
plugins/fields/acfurl/version.php
Normal file
16
plugins/fields/acfurl/version.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Advanced Custom Fields
|
||||
* @version 2.8.8 Pro
|
||||
*
|
||||
* @author Tassos Marinos <info@tassos.gr>
|
||||
* @link http://www.tassos.gr
|
||||
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
|
||||
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die('Restricted Access');
|
||||
$NR_PRO = "1";
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user