acf
This commit is contained in:
54
plugins/fields/acfdownloadbutton/acfdownloadbutton.php
Normal file
54
plugins/fields/acfdownloadbutton/acfdownloadbutton.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?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;
|
||||
|
||||
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 PlgFieldsACFDownloadButton extends ACF_Field
|
||||
{
|
||||
/**
|
||||
* 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 Form $form The form.
|
||||
*
|
||||
* @return DOMElement
|
||||
*
|
||||
* @since 3.7.0
|
||||
*/
|
||||
public function onCustomFieldsPrepareDom($field, DOMElement $parent, Joomla\CMS\Form\Form $form)
|
||||
{
|
||||
if (!$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form))
|
||||
{
|
||||
return $fieldNode;
|
||||
}
|
||||
|
||||
$fieldNode->setAttribute('type', 'filelist');
|
||||
$fieldNode->setAttribute('hide_default', true);
|
||||
$fieldNode->setAttribute('directory', $field->fieldparams->get('directory', 'images'));
|
||||
$fieldNode->setAttribute('filter', $field->fieldparams->get('filter', ''));
|
||||
$fieldNode->setAttribute('exclude', $field->fieldparams->get('exclude', ''));
|
||||
$fieldNode->setAttribute('class', '');
|
||||
|
||||
return $fieldNode;
|
||||
}
|
||||
}
|
||||
21
plugins/fields/acfdownloadbutton/acfdownloadbutton.xml
Normal file
21
plugins/fields/acfdownloadbutton/acfdownloadbutton.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
|
||||
<name>ACF_DOWNLOADBUTTON</name>
|
||||
<description>ACF_DOWNLOADBUTTON_DESC</description>
|
||||
<author>Tassos Marinos</author>
|
||||
<creationDate>April 2017</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="acfdownloadbutton">acfdownloadbutton.php</filename>
|
||||
<filename>script.install.helper.php</filename>
|
||||
<filename>version.php</filename>
|
||||
<folder>params</folder>
|
||||
<folder>tmpl</folder>
|
||||
<folder>language</folder>
|
||||
</files>
|
||||
</extension>
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Botó de descàrrega"
|
||||
ACF_DOWNLOADBUTTON="Camps - ACF botó de descàrrega"
|
||||
ACF_DOWNLOADBUTTON_DESC="Crear un botó per descarregar arxius fàcilment!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Directori"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="La ruta del sistema d'arxius al directori que conté els arxius a llistar"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Incloure arxius"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="És una cadena d'expressió regular que s'utilitza per filtrar el llistat dels arxius seleccionats per ser inclosos al llistat desplegable. Si s'omet, s'inclouran tots els arxius al directori. L'argument d'inclusió d'arxius s'aplica abans que l'argument d'exclusió.<br><br><b>Filtrar una extensió individual:</b><br>.pdf<br><br><b>Filtrar un llistat d'extensions:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Excloure arxius"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="És una cadena d'expressió regular que s'utilitza per excloure arxius del llistat. L'argument d'exclusió d'arxius s'aplica després que l'argument d'inclusió.<br><br><b>Filtrar una extensió individual:</b><br>.pdf<br><br><b>Filtrar un llistat d'extensions:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Tipus"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Escull si mostrar el botó de descàrrega com un element botó o com un enllaç."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Etiqueta del botó"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Opcionalment, escriu una etiqueta de botó personalitzada que s'utilitzarà a la part pública. Si s'omet, s'utilitzarà l'etiqueta 'Descàrregar'."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Descarregar"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Classe del botó"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Escriu una classe pel botó que s'utilitzarà a la part pública. En la majoria d'infraestructures CSS un botó s'estila amb les classes 'btn' o 'button'"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Download knap"
|
||||
ACF_DOWNLOADBUTTON="Felter - ACF Download knap"
|
||||
ACF_DOWNLOADBUTTON_DESC="Opret let en fil download knap!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Mappe"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Filsystemstien til mappen der indeholder filerne der skal listes"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Inkluder filer"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Er en regulær udtryksstreng som anvendes til at filtrere listen med filer valgt til inkludering i dropdown listen. Hvis sprunget over, så vil alle filer i mappen blive inkluderet. Argumentet inkluder filer bliver anvendt før argumentet ekskluder filer.<br><br><b>Filtrer en enkelt udvidelse:</b><br>.pdf<br><br><b>Filtrer en liste med udvidelser:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Ekskluder filer"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Det er en regulær udtryksstreng som anvendes til at ekskludere filer fra listen. Argumentet eksluder filer bliver anvendt efter argumentet inkluder filer.<br><br><b>Filtrer en enkelt udvidelse:</b><br>.pdf<br><br><b>Filtrer en liste over udvidelser:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Type"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Vælg om downloadknappen skal vises som et knapelement eller som et link."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Knap label"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Angiv eventuelt en brugerdefineret knap label, som anvendes i frontend. Hvis sprunget over, så vil labelen 'Download' blive anvendt i stedet for."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Download"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Knap klasse"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Angiv en knap klasse som bliver anvendt i frontend. I de fleste CSS frameworks kan en knap styles ved anvendelse af klassen 'btn' eller 'button'"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Herunterladen Schaltfläche"
|
||||
ACF_DOWNLOADBUTTON="Felder - ACF-Herunterladen-Schaltfläche"
|
||||
ACF_DOWNLOADBUTTON_DESC="Schaltfläche zum Herunterladen von Dateien einfach erstellen!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Verzeichnis"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Der Dateisystempfad zu dem Verzeichnis, in dem sich die aufzulistenden Dateien befinden."
|
||||
ACF_DOWNLOADBUTTON_FILTER="Dateien einschließen"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Eine Zeichenfolge mit regulären Ausdrücken, mit der die Liste der Dateien gefiltert wird, die zur Aufnahme in die Dropdown-Liste ausgewählt wurden. Wenn diese Option nicht angegeben wird, werden alle Dateien im Verzeichnis eingeschlossen. Das Argument\" Include Files \"wird vor dem Argument\" Exclude Files \"angewendet. <br> <br> <b> Filtern einer einzelnen Erweiterung: </b> <br> .pdf <br> <br> <b> Filtern einer Liste von Erweiterungen: </b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Dateien ausschließen"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Ein regulärer Ausdruck, der zum Ausschließen von Dateien aus der Liste verwendet wird. Der Argumentausdruck\" Dateien ausschließen \"wird nach dem Argumentausdruck\" Dateien einschließen \"angewendet. <br> <br> <b> Filtern Sie eine einzelne Erweiterung: </b> <br> .pdf <br> <br> <b> Filtern einer Liste von Erweiterungen: </b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_TYPE="Typ"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Wählen Sie aus, ob die Herunterladen-Schaltfläche als Schaltflächenelement oder als Link angezeigt werden soll."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Schaltflächenbeschriftung"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Optional können Sie eine benutzerdefinierte Schaltflächenbezeichnung eingeben, die im Front-End verwendet wird. Wenn Sie diese nicht angeben, wird stattdessen die Bezeichnung \" Herunterladen \" verwendet."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Herunterladen"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Schaltfläche-Klasse"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Geben Sie eine Schaltflächenklasse ein, die im Front-End verwendet wird. In den meisten CSS-Frameworks kann eine Schaltfläche mit der Klasse 'btn' oder 'button' formatiert werden."
|
||||
@ -0,0 +1,24 @@
|
||||
; @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_ACFDOWNLOADBUTTON_LABEL="ACF - Download Button"
|
||||
ACF_DOWNLOADBUTTON="Fields - ACF Download Button"
|
||||
ACF_DOWNLOADBUTTON_DESC="Select a file in the back-end and display a download link or button in the front-end."
|
||||
ACF_DOWNLOADBUTTON_DIR="Directory"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="The filesystem path to the directory containing the files to be listed"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Include Files"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Is a regular expression string which is used to filter the list of files selected for inclusion in the drop-down list. If omitted, all files in the directory are included. The Include Files argument is applied before the Exclude Files argument.<br><br><b>Filter a single extension:</b><br>.pdf<br><br><b>Filtering a list of extensions:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Exclude Files"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Is a regular expression string which is used to exclude files from the list. The Exclude Files argument expression is applied after the Includes Files argument expression.<br><br><b>Filter a single extension:</b><br>.pdf<br><br><b>Filtering a list of extensions:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Type"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Choose whether to display the download button as a button element or as a link."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Button Label"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Optionally, enter a custom button label which will be used in the front-end. If omitted the 'Download' label will be used instead."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Download"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Button Class"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Enter a button class that will be used in the front-end. In most CSS frameworks a button can be styled using the class 'btn' or 'button'"
|
||||
ACF_DOWNLOADBUTTON_VALUE_DESC="Select a file from the list."
|
||||
@ -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_DOWNLOADBUTTON="Fields - ACF Download Button"
|
||||
ACF_DOWNLOADBUTTON_DESC="Select a file in the back-end and display a download link or button in the front-end."
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Botón de descarga"
|
||||
ACF_DOWNLOADBUTTON="Campos - Botón de descarga de ACF"
|
||||
ACF_DOWNLOADBUTTON_DESC="¡Cree un botón de descarga de archivos fácilmente!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Directorio"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="La ruta del sistema de archivos al directorio que contiene los archivos que se enumerarán"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Incluir archivos"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Es una cadena de expresión regular que se utiliza para filtrar la lista de archivos seleccionados para su inclusión en la lista desplegable. Si se omite, se incluyen todos los archivos del directorio. El argumento Incluir archivos se aplica antes que el argumento Excluir archivos.<br><br><b>Filtrar una sola extensión:</b><br>.pdf<br><br><b>Filtrar una lista de extensiones:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Excluir archivos"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Es una cadena de expresión regular que se utiliza para excluir archivos de la lista. La expresión del argumento Excluir archivos se aplica después de la expresión del argumento Incluye archivos.<br><br><b>Filtrar una sola extensión:</b><br>.pdf<br><br><b>Filtrar una lista de extensiones:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Tipo"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Elija si desea mostrar el botón de descarga como un elemento de botón o como un enlace."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Etiqueta del Botón"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Opcionalmente, ingrese una etiqueta de botón personalizada que se usará en el front-end. Si se omite, se utilizará la etiqueta 'Descargar' en su lugar."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Descargar"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Clase de Botón"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Ingrese la clase de botón que se usará en el front-end. En la mayoría de los marcos CSS, se puede diseñar un botón usando la clase 'btn' o 'button'"
|
||||
@ -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_DOWNLOADBUTTON="Campos - ACF Botón de Descarga"
|
||||
ACF_DOWNLOADBUTTON_DESC="Seleccione un archivo en el back-end y muestre un enlace o botón de descarga en el front-end."
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Download Button"
|
||||
ACF_DOWNLOADBUTTON="Champs - Download Button ACF"
|
||||
ACF_DOWNLOADBUTTON_DESC="Créer aisément un bouton de téléchargement"
|
||||
ACF_DOWNLOADBUTTON_DIR="Répertoire"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Le chemin du répertoire contenant les fichiers à lister"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Fichiers inclus"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="C'est une expression régulière qui est utilisée pour filtrer la liste des fichiers sélectionnés à insérer dans la liste déroulante. Par défaut, tous les fichiers du dossier sont inclus. La valeur Fichiers Inclus est appliquée avant celle de Fichiers Exclus.<br><br><b>Filtrer une seule extension : </b><br>.pdf<br><br><b>Filtrer une liste d'extension :</b><br>.pdfl.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE=" Fichiers exclus"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="C'est une expression régulière qui est utilisées pour exclure des fichiers de la liste. La valeur Fichiers Exclus est appliquée après celle de Fichiers Inclus.<br><br><b>Filtrer une seule extension :</b><br> .pdf<br><br><b>Filtrer une liste d'extension :</b><br>.pdfl.zip "
|
||||
ACF_DOWNLOADBUTTON_TYPE="Type"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Choisissez si vous affichez le bouton de téléchargement comme un élément bouton ou inot"
|
||||
ACF_DOWNLOADBUTTON_LABEL="Label du bouton"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Optionnellement, entrez un label personnalisé qui sera afficher pour le bouton. Par défaut, le label 'Télécharger' sera utilisé"
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Télécharger"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Classe du bouton"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Entrez une classe qui sera ensuite utilisé en front-end. La plupart des frameworks CSS utilisent la classe \"btn\" ou \"button\""
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Pulsante di scaricamento"
|
||||
ACF_DOWNLOADBUTTON="Fields - ACF Pulsante di scaricamento"
|
||||
ACF_DOWNLOADBUTTON_DESC="Crea facilmente il pulsante di download dei file!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Cartella"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Il percorso del filesystem per la cartella contenente i file da elencare"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Includi file"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="È una stringa di espressione regolare che viene utilizzata per filtrare l'elenco di file selezionati per l'inclusione nell'elenco a discesa. Se omessa, tutti i file nella directory sono inclusi. L'argomento includi file viene applicato prima dell'argomento escludi file.<br><br><b>Filtra una singola estensione:</b><br>.pdf<br><br><b>Filtro di un elenco di estensioni:</b><br>.pdf.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Escludi file"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="È una stringa di espressione regolare che viene utilizzata per escludere file dall'elenco. L'argomento escludi file viene applicato prima dell'argomento includi file.<br><br><b>Filtra una singola estensione:</b><br>.pdf<br><br><b>Filtrare un elenco di estensioni:</b><br>.pdf.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Tipologia"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Scegli se visualizzare il pulsante di download come elemento pulsante o come collegamento."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Etichetta del pulsante"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="A scelta, inserisci un'etichetta personalizzata per il pulsante che verrà usata nel front-end. Se omessa l'etichetta 'Scarica' verrà usata."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Scarica"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Classe pulsante"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Inserisci una classe pulsante che verrà utilizzata nel front-end. Nella maggior parte dei framework CSS un pulsante può essere disegnato usando la classe 'btn' o 'button'"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Download Knop"
|
||||
ACF_DOWNLOADBUTTON="Velden - ACF Download Knop"
|
||||
ACF_DOWNLOADBUTTON_DESC="Maak eenvoudig een downloadknop voor bestanden!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Directory"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Het bestandssysteempad naar de map met de bestanden wat als lijst zal worden weergegeven"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Bestanden Opnemen"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Is een reguliere expressietekenreeks welke wordt gebruikt om de lijst met te filteren bestanden die zijn geselecteerd voor opname in de vervolgkeuzelijst. Indien weggelaten, worden alle bestanden in de directory opgenomen. Het argument Bestanden Opnemen wordt toegepast vóór het argument Bestanden Uitsluiten. <br><br><br>Filter een enkele extensie:<br><br> .pdf <br><br><br>Een lijst met extensies filteren: <br><br>.pdf | .zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Bestanden uitsluiten"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Een reguliere expressietekenreeks welke wordt gebruikt om bestanden uit de lijst uit te sluiten. De argument uitdrukking Bestanden Uitsluiten wordt toegepast na de argumentuitdrukking Bestanden opnemen.<br><br><br> Een enkele extensie filteren:<br><br> .pdf <br><br><br>Een lijst met extensies filteren: <br><br>.pdf | .zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Type"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Kies of je de downloadknop wilt weergeven als knopelement of als een link."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Knop Label"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Voer optioneel een aangepast knoplabel in dat aan de voorkant wordt gebruikt. Indien weggelaten, wordt in plaats daarvan het label 'Downloaden' gebruikt."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Download"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Knop Klasse"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Voer een knopklasse in die op de front-end zal worden gebruikt. In de meeste CSS-frameworks kan een knop worden gestyled met de klasse 'btn' of 'button'"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - кнопка загрузки"
|
||||
ACF_DOWNLOADBUTTON="Поля - кнопка загрузки ACF"
|
||||
ACF_DOWNLOADBUTTON_DESC="Создать кнопку загрузки файла легко!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Справочник"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Путь файловой системы к каталогу, содержащему файлы, которые будут перечислены"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Включить файлы"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Строка регулярного выражения, которая используется для фильтрации списка файлов, выбранных для включения в раскрывающийся список. Если не указан, все файлы в каталоге включены. Аргумент Include Files применяется перед аргументом Exclude Files. <br> <br> <b> Фильтровать одно расширение: </ b> <br> .pdf <br> <br> <b> Фильтрация списка расширений: </ b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Исключить файлы"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Строка регулярного выражения, используемая для исключения файлов из списка. Выражение аргумента« Исключить файлы »применяется после выражения аргумента« Включает файлы ». <br> <br> <b> Фильтровать одно расширение: </ b> <br> .pdf <br> <br> <b> Фильтрация списка расширений: </ b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_TYPE="Тип"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Выберите, отображать ли кнопку загрузки как элемент кнопки или как ссылку."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Метка кнопки"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="При желании введите метку пользовательской кнопки, которая будет использоваться в интерфейсе. Если опущено, вместо нее будет использоваться метка"_QQ_" Скачать "_QQ_"."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Скачать"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Класс кнопок"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Введите класс кнопки, который будет использоваться во внешнем интерфейсе. В большинстве CSS-фреймворков кнопку можно стилизовать с помощью класса« btn »или« кнопка »"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - Nedladdningsknapp"
|
||||
ACF_DOWNLOADBUTTON="Fält - ACF Nedladdningsknapp"
|
||||
ACF_DOWNLOADBUTTON_DESC="Skapa en filnedladdningsknapp enkelt!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Mapp"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Filsystemets sökväg till mappen som innehåller filerna som ska listas"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Inkludera filer"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Är en sträng med reguljärt uttryck som används för att filtrera listan över filer som valts för att tas med i rullgardinsmenyn. Om fältet lämnas tomt inkluderas alla filer i mappen. Argumentet Inkludera filer tillämpas före argumentet Exkludera filer.<br><br><b>Filtrera en enskild filändelse:</b><br>.pdf<br><br><b>Filtrera en lista med filändelser:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Exkludera filer"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Är en sträng med reguljärt uttryck som används för att exkludera filer från listan. Argumentuttrycket Exkludera filer tillämpas efter argumentuttrycket Inkludera filer.<br><br><b>Filtrera en enskild filändelse:</b><br>.pdf<br><br><b>Filtrera en lista med filändelser:</b><br>.pdf|.zip"
|
||||
ACF_DOWNLOADBUTTON_TYPE="Typ"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Välj om nedladdningsknappen ska visas som en knapp eller som en länk."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Knapp etikett"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Valfritt: du kan ange en anpassad knappetikett som kommer att användas i frontend. Om fältet lämnas tomt kommer etiketten 'Ladda ner' att användas istället."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Ladda ner"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Knapp klass"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Ange en knappklass som kommer att användas i frontend. I de flesta CSS-ramverk kan en knapp designas med klasserna 'btn' eller 'button'"
|
||||
@ -0,0 +1,23 @@
|
||||
; @package Advanced Custom Fields
|
||||
; @version 2.8.8 Pro
|
||||
;
|
||||
; @author Tassos Marinos - http://www.tassos.gr/joomla-extensions
|
||||
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
|
||||
; @license http://www.tassos.gr
|
||||
|
||||
PLG_FIELDS_ACFDOWNLOADBUTTON_LABEL="ACF - кнопка завантаження"
|
||||
ACF_DOWNLOADBUTTON="Поля - кнопка завантаження ACF"
|
||||
ACF_DOWNLOADBUTTON_DESC="Створити кнопку завантаження файлів легко!"
|
||||
ACF_DOWNLOADBUTTON_DIR="Каталог"
|
||||
ACF_DOWNLOADBUTTON_DIR_DESC="Шлях файлової системи до каталогу, що містить файли, що підлягають переліку"
|
||||
ACF_DOWNLOADBUTTON_FILTER="Включити файли"
|
||||
ACF_DOWNLOADBUTTON_FILTER_DESC="Це звичайний виразний рядок, який використовується для фільтрації списку файлів, вибраних для включення до випадаючого списку. Якщо цей пункт пропущено, всі файли в каталозі включаються. Аргумент"_QQ_" Включити файли "_QQ_"застосовується перед аргументом"_QQ_" Виключити файли "_QQ_". <br> <br> <b> Фільтр одного розширення: </b> <br> .pdf <br> <br> <b> Фільтрація списку розширень: </b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE="Виключити файли"
|
||||
ACF_DOWNLOADBUTTON_EXCLUDE_DESC="Це звичайний рядок виразів, який використовується для виключення файлів зі списку. Вираз"_QQ_" Аргумент виключення файлів "_QQ_"застосовується після виразу аргументу"_QQ_" Включає файли "_QQ_". <br> <br> <b> Фільтр одного розширення: </b> <br> .pdf <br> <br> <b> Фільтрація списку розширень: </b> <br> .pdf | .zip "
|
||||
ACF_DOWNLOADBUTTON_TYPE="Тип"
|
||||
ACF_DOWNLOADBUTTON_TYPE_DESC="Виберіть, чи відображати кнопку завантаження як елемент кнопки чи як посилання."
|
||||
ACF_DOWNLOADBUTTON_LABEL="Мітка кнопки"
|
||||
ACF_DOWNLOADBUTTON_LABEL_DESC="Необов’язково введіть спеціальну мітку кнопки, яка буде використовуватися в передній частині. Якщо пропущена, замість цього буде використана мітка"_QQ_" Завантажити "_QQ_"."
|
||||
ACF_DOWNLOADBUTTON_DOWNLOAD="Завантажити"
|
||||
ACF_DOWNLOADBUTTON_CLASS="Клас кнопки"
|
||||
ACF_DOWNLOADBUTTON_CLASS_DESC="Введіть клас клавіш, який буде використовуватися в передній частині. У більшості фреймів CSS кнопку можна стилізувати, використовуючи клас"_QQ_" btn "_QQ_"або"_QQ_" button "_QQ_""
|
||||
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<form>
|
||||
<fields name="fieldparams" addfieldpath="/plugins/system/nrframework/fields">
|
||||
<fieldset name="fieldparams">
|
||||
<field name="directory" type="text"
|
||||
label="ACF_DOWNLOADBUTTON_DIR"
|
||||
description="ACF_DOWNLOADBUTTON_DIR_DESC"
|
||||
hint="images/downloads"
|
||||
/>
|
||||
<field name="filter" type="nrtext"
|
||||
label="ACF_DOWNLOADBUTTON_FILTER"
|
||||
description="ACF_DOWNLOADBUTTON_FILTER_DESC"
|
||||
hint=".zip"
|
||||
/>
|
||||
<field name="exclude" type="nrtext"
|
||||
label="ACF_DOWNLOADBUTTON_EXCLUDE"
|
||||
description="ACF_DOWNLOADBUTTON_EXCLUDE_DESC"
|
||||
hint=".zip"
|
||||
/>
|
||||
<field name="label" type="text"
|
||||
label="ACF_DOWNLOADBUTTON_LABEL"
|
||||
description="ACF_DOWNLOADBUTTON_LABEL_DESC"
|
||||
hint="Download"
|
||||
/>
|
||||
<field name="class" type="text"
|
||||
label="ACF_DOWNLOADBUTTON_CLASS"
|
||||
description="ACF_DOWNLOADBUTTON_CLASS_DESC"
|
||||
default="btn btn-primary"
|
||||
hint="btn"
|
||||
/>
|
||||
</fieldset>
|
||||
</fields>
|
||||
</form>
|
||||
691
plugins/fields/acfdownloadbutton/script.install.helper.php
Normal file
691
plugins/fields/acfdownloadbutton/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 PlgFieldsAcfdownloadbuttonInstallerScriptHelper
|
||||
{
|
||||
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/acfdownloadbutton/script.install.php
Normal file
23
plugins/fields/acfdownloadbutton/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 PlgFieldsACFDownloadButtonInstallerScript extends PlgFieldsACFDownloadButtonInstallerScriptHelper
|
||||
{
|
||||
public $alias = 'acfdownloadbutton';
|
||||
public $extension_type = 'plugin';
|
||||
public $plugin_folder = 'fields';
|
||||
public $show_message = false;
|
||||
}
|
||||
35
plugins/fields/acfdownloadbutton/tmpl/acfdownloadbutton.php
Normal file
35
plugins/fields/acfdownloadbutton/tmpl/acfdownloadbutton.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?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\CMS\Uri\Uri;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
$file = htmlspecialchars($field->value, ENT_COMPAT, 'UTF-8');
|
||||
|
||||
if (!$file || $file == '-1')
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Setup Variables
|
||||
$class = $fieldParams->get('class');
|
||||
$label = $fieldParams->get('label', 'ACF_DOWNLOADBUTTON_DOWNLOAD');
|
||||
$directory = ltrim($fieldParams->get('directory', 'images'), '/');
|
||||
$directory = rtrim($directory, '/');
|
||||
$filepath = Uri::root() . $directory . '/' . $file;
|
||||
|
||||
// Output
|
||||
$buffer = '<a href="' . $filepath . '" class="' . $class . '" download>' . Text::_($label) . '</a>';
|
||||
|
||||
echo $buffer;
|
||||
16
plugins/fields/acfdownloadbutton/version.php
Normal file
16
plugins/fields/acfdownloadbutton/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