diff --git a/CHANGELOG.md b/CHANGELOG.md index a2b6a8c..101b187 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ ### Modulsammlung - Changelog ___ +### 11.07.2023 Version 4.17 + +removed mblock mform demos +removed formular generator do form! ### 11.03.2023 Version 4.16.1 diff --git a/do_form.md b/do_form.md deleted file mode 100644 index 565671f..0000000 --- a/do_form.md +++ /dev/null @@ -1,297 +0,0 @@ ---- -title: Modulsammlung Formulargenerator -authors: [skerbis] -prio: ---- - -# Formulargenerator - -Das Modul ist Teil der Modulsammlung - -Basiert auf den Formular-Generator aus REDAXO 3.2 und do form! - -- Es werden E-Mails wahlweise im HTML oder Text-Format erstellt. -- Eine automatische (personalisierbare) Bestätigungs-E-Mail an den Absender steht als Option zur Verfügung. -- Die Danke-Meldung auf der Website kann mittels WYSIWYG-Editor frei gestaltet werden. -- Es gibt verschiedene Spamschutz-Lösungen, die verwendet werden können. -- do form! unterstützt per SSL verschlüsselte E-Mails. -- Die Übergabe von Post- oder Session-Variablen ist möglich. -- Auch eine Übertragung von Dateien vom und zum Absender ist möglich. -- Die Dateien werden wahlweise per E-Mail mit verschickt. - -Das Modul ist sehr flexibel in der Konfiguration und Gestaltung. - -## Mindest-Systemvoraussetzungen: - -- REDAXO 5.x -- AddOn PHPMailer -- YForm (nur wg. einer einzigen Funktion) -- Addon: ein WYSIWYG-Editor, default ist cke5, ist einstellbar in der Modulausgabe - -## Konfiguration - -### Konfiguration der Eingabe - -Die Moduleingabe bietet Möglichkeit Funktionen ein- bzw. auszublenden. - -- UPLOADS true oder false -- SESSIONS AKTIVIEREN true oder false -- BCC AKTIVIEREN true oder false -- SSL-Umschalter - Muss in der Ausgabe angepasst werden (nicht in do form! 6.x) - -### Konfiguration der Ausgabe - -Bitte Kommentare im Quellcode oder in der Eingabe beachten. - - -## Hinweise - -Absender-Adresse / WICHTIG! -Die Absendermail sollte unbedingt festgelegt werden wenn die E-Mail automatisch (optional) beantwortet werden soll. Das geht über die Validierungseinstellung `sender`. - -Schreibweise: - -``` -text|E-Mail|1|||sender -``` - -## Feldaufbau - -typ|bezeichnung|pflicht|default|value|validierung - -- An erster Stelle definiert man den Feldtyp -- Pflichtfelder werden mit einer 1 an der 3. Stelle deklariert. -- Defaultwerte können an 4. Stelle eingegeben werden. -- Bei einigen Feldern (z.B. date und select) haben die Stellen 4 und 5 eine andere Bedeutung. -- An letzter Stelle kann bei Textfeldern die Validierung festgelegt werden. (Textfelder sind u.a. auch date, email, IBAN) - -## Beispiel einer Formulardefinition - -``` -fieldstart|Kontaktdaten -text|Name|1|||checkfield -text|Vorname|1|||name -text|Firma | -text|Straße| -text|PLZ|1|||plz -text|Ort|1||| -text|Telefon||||tel -text|Telefax||||tel -email|E-Mail|1|||sender -fieldend| -radio|Geschlecht|0|Mann;Frau|m;w| -url|Website|1|||url -IBAN|Ihre IBAN|1|DE||iban -BIC|BIC|1|||bic -date|Datum der Meldung|1|today||date -textarea|Ihre Nachricht:|1| -upload|ZIP-Upload|0||zip||12.5m -upload|Bild-Upload|0||png;jpg;gif||5.0m -text|Bitte geben Sie nochmals Ihren Namen ein|1|||check -info|Felder mit * sind Pflichtfelder -hidden|Produkt:|1|GET_produkt -``` - -## Textfelder im Formulargenerator - -CSS-Klasse: `.formtext` / Je nach Feld kommen noch die Klassen: `.ftext`, `.fIBAN`, `.fIBAN`, `.femail`,`.fplz` usw. hinzu. - -Die Textfelder mit der Bezeichnung "Vorname" und "Nachname" können in der Bestätigungsmail mit den Platzhaltern %Vorname% und %Nachname% eingesetzt werden. - -``` -text|Name|1|||checkfield -text|Vorname|1|||name -text|Firma | -text|Straße| -text|PLZ|1|||plz -text|Ort|1||| -text|Telefon||||tel -text|Telefax||||tel -email|E-Mail|1|||sender -``` - -### GET-Variablen können - -über ein Textfeld ausgelesen werden - -``` -text|Titel:|1|GET_Variablenname| -``` - -Alternativ kann man die Variable versteckt übertragen - -``` -hidden|Titel:|1|GET_Variablenname| -``` - -### Passwörter - -``` -password|Ihre Passwort|1||| -``` - -### Textfelder für Bankdaten - -Die IBAN wird in der Bestätigungsmail anonymisiert - -``` -IBAN|Ihre IBAN|1|DE||iban -BIC|BIC|1|||bic -``` - -### URL-Texteingabe - -Prüft eine URL http://* - -``` -url|Website|1|||url -``` - - ### Datumsfeld - -Durch Eingabe von „today“ wird das aktuelle Datum als Default-Wert gesetzt. -HTML5-fähige Browser zeigen auch den Placeholder dd.mm.jjjj an. - -``` -date|Datum der Meldung|1|today||date -``` - - -## Texarea - -Textblock z.B. zur Erfassung einer Nachricht, CSS-Klasse: `.formtextfield` - -``` -textarea|Ihre Nachricht:|1| -``` - -## Radio-Buttons und Select-Felder - -## Radio-Buttons - -Hiermit kann man den Besuchern eine Optionsauswahl präsentieren. Die Werte werden per Semikolon getrennt. - -CSS-Klasse: `.formradio` - -``` -radio|Geschlecht|0|Mann;Frau|m;w| -``` - -### Select-Felder - -Hiermit kann man den Besuchern ein Auswahlmenü präsentieren. Die Werte werden per Semikolon getrennt. -Wird das Select wie nachfolgend als Anrede-Auswahl genutzt, kann in der Bestätigungsmail %Anrede% als Platzhalter verwendet werden. - -CSS-Klasse: `.formselect` - -``` -select|Anrede|1||;Herr;Frau -``` - - -## Upload durch User - -*upload* stellt eine Upload-Möglichkeit zur Verfügung. -Diese Funktion muss im Eingabe-Modul aktiviert sein. (siehe Quellcode) -Bei den erlaubten Dateien kann jede beliebige Endung angegeben werden. Die Werte werden per Semikolon getrennt. Bei der Angabe zur Dateigröße können die Kürzel k = Kilobyte, m = Megabyte und g = Gigabyte verwendet werden. Die maximal mögliche Uploadgröße wird aus der php.ini-Datei ermittelt und in der Moduleingabe unterhalb der Angabe zum Uploadordner eingeblendet. - -``` -upload|ZIP-Upload|0||zip||12.5m -upload|Bild-Upload|0||png;jpg;gif||5.0m -``` - -## Spezielles: - -Sessionvariable do form! kann den Inhalt einer Sessionvariable in einem hidden-Field übertragen. Diese muss in der Eingabe definiert werden. (Aktivierung erforderlich) - -``` -svar|bezeichnung -``` - -Die Validierung `check` -prüft ob die Eingabe dem Feld mit der Validierung „checkfield“ oder "Sendercheck" entspricht. - -``` -text|Bitte geben Sie nochmals Ihren Namen ein|1|||check -info Hinweis an den Erfasser (wird nicht übertragen) CSS-Klasse: .formhinweis -info|Felder mit * sind Pflichtfelder -``` - -### ilink / exlink - -Interner Link: ilink - -Link im neuen Fenster: exlink - -CSS-Klasse: `.formlink` - -Anwendung: - -Der Aufbau unterscheidet sich stark von den anderen Feldern: - -`ilink|id|parameter(& = & amp;)|CSS-Klasse|Bezeichnung` - -Beispiel: `exlink|24|Unsere AGB` - -### trennelement - -Mit diesem Feld kann man einen Abstand zwischen den einzelnen Feldern schaffen. - -CSS-Klasse: `.formtrenn` - -Verwendung: trennelement| - - -### headline / info - -Hiermit können Sie Zwischenüberschriften oder Hinweise erstellen headline kann auch verwendet werden um die endgültige E-Mail zu strukturieren. headline dient hierbei als Zwischenüberschrift der 2. Ebene (h2) in der E-Mail -Info wird nur auf der Website angezeigt - -Verwendung: - -``` -headline|text der erscheinen soll -info|text der erscheinen soll -``` - - -## Gestaltungsmöglichkeiten - -Das Formular hat die Klasse .formgen. Die CSS-Klassen der Eingabefelder entnehmen Sie bitte den Feldbeschreibungen. Jedes Feld inkl. Label ist zudem innerhalb eines DIVs mit der CSS-Kalsse .formfiled untergebracht. Dieses DIV wird bei einem Fehler (wie auch die Label) mit einer zusätzlichen CSS-Klasse belegt. Standard: .formerror. Die Klassenbezeichnung lässt sich in der Ausgabe des Moduls leicht anpassen. - -### Fieldset - -`fieldstart|Kontaktdaten` - -`fieldend|` beendet ein fieldset - - -### DIV - -`divstart|cssklasse` oder `divstart|#cssID` - -`divend|` beendet ein DIV - - -## Validierung von Text-Feldern - -(text, IBAN, BIC, email, date, url...) Validierungen werden auch durchgeführt, wenn das Feld kein Pflichtfeld ist. - -Zur Validierung stehen folgende Funktionen zur Verfügung: - -- url - prüft die eingegebene URL -- date - prüft das Datum -- time - prüft die eingegebene Uhrzeit -- name - prüft ob ein Name eingegeben wurden (bestimmte Zeichen wie - und . sind erlaubt) -- alpha - prüft ob "nur" Buchstaben eingegeben wurden -- digit - prüft ob eine Zahl eingegeben wurde -- plz - 5-stellige Postleitzahlen -- plz4 - 4-stellige Postleitzahlen (z.B. Schweiz) -- tel - prüft ob mindestens 6 Zahlen eingegeben wurden -- email - prüft ob eine korrekte E-Mail-Adresse eingegeben wurde -- sender - prüft und legt die Absenderadresse des Besuchers fest -- bic - Prüft eine BIC-Eingabe -- iban - Prüft eine IBAN-Eingabe -- checkfield - Festlegung des Feldes das wiederholt werden soll -- sendercheck - Festlegung des E-Mail-Feldes das wiederholt werden soll und als Absender (sender) definiert werden soll -- check - Prüft ob die Eingabe dem checkfield entspricht diff --git a/lib/module/0036_text_kontaktformular_generator/config.inc b/lib/module/0036_text_kontaktformular_generator/config.inc deleted file mode 100644 index 0fa9001..0000000 --- a/lib/module/0036_text_kontaktformular_generator/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0036 - Text / Kontaktformular-Generator (do form!)" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module/0036_text_kontaktformular_generator/info.inc b/lib/module/0036_text_kontaktformular_generator/info.inc deleted file mode 100644 index 2cf5e8a..0000000 --- a/lib/module/0036_text_kontaktformular_generator/info.inc +++ /dev/null @@ -1,7 +0,0 @@ -

Formulargenerator-Modul

-

Kompatibel mit UiKit

-

Dieser Generator ermöglicht das Erstellen und Versenden von E-Mail-Formularen. Etwas einfacher als mit yForm.

-

Ein Standardformular ist direkt beim ersten Aufruf vorkonfiguriert

-

Eine ausführliche Hilfe findet man in den REDAXO tricks -


-

Die beiliegenden CSS-Stile sind nur ein Beispiel und werden bei UiKit nicht vollständig benötigt.

diff --git a/lib/module/0036_text_kontaktformular_generator/input.inc b/lib/module/0036_text_kontaktformular_generator/input.inc deleted file mode 100644 index 20be78d..0000000 --- a/lib/module/0036_text_kontaktformular_generator/input.inc +++ /dev/null @@ -1,325 +0,0 @@ -Datenschutzerklärung gelesen|1| -info|Geben Sie bitte nochmal Ihren Vornamen ein -text|Nachname|1|||check -'; -$sessionson = false; - - -/** - * Convert a shorthand byte value from a PHP configuration directive to an integer value - * @param string $value - * @return int - */ -if (!function_exists('convertBytes')) { -function convertBytes( $value ) { - if ( is_numeric( $value ) ) { - return $value; - } else { - $value = trim ($value); - $value_length = strlen( $value ); - $qty = substr( $value, 0, $value_length - 1 ); - $unit = strtolower( substr( $value, $value_length - 1 ) ); - switch ( $unit ) { - case 'g': - $qty *= 1024; - case 'm': - $qty *= 1024; - case 'k': - $qty *= 1024; - } - return $qty; - } -} -} -?> - - - - - - - -
- - -
- -
-Formularfelder - Beispiel-einblenden -
-
- - -
- -
- - Platzhalter: %Mail% -
-
- - -
- -
- - Sie können einen BCC-Empfänger eingeben -
-
- - - -
- -
- -
-
- -
- -
- -
-
- - -
- -
- -
Soll die E-Mail im HTML-Format verschickt werden? -
-
- -
- -
- -
Es muss ein Feld mit der Validierung "sender" definiert sein -
-
- - -
- -
- -
Maximale Größe: -
-
- - - - - -
- -
- -
Beispiel: Einsatz per svar|Warenkorb -
-
- - - - -
class="myDivs"> - -
- -
- -
-
- -
- -
- -
Platzhalter: %Absender% -
-
- -
- -
- -
-
- - -
- -
- -
-
- -
- -
- REX_MEDIA[id=1 widget=1] -
-
- -
- -
- - Platzhalter für Bestätigungstext:
- %Betreff%, %Datum% , %Zeit%, %Absender%, %Mail%, %Vorname%, %Nachname%
,
- %Besuchermail% (wird durch sender gesetzt)
-
-
- - -
- - -
- -
- -
-
- -
-
-
-
Beispiel-Formular:
-
- -
-
-
-

Kurzbeschreibung:

- do form! basiert auf den in Redaxo 3.2 mitgelieferten Formular-Generator.
- Beim ersten Aufruf erstellt das Modul eine Konfiguration für ein Standard-Kontaktformular.
- Im Beispiel-Formular sehen Sie Möglichkeiten zur Konfiguration.
-Empfehlung:
- Wir empfehlen im PHP-Mailer die Einstellung SMTP-AUTH zu verwenden. -
-
Validierung von Textfeldern - -
    -
  • alpha (nur engl.Buchstaben)
  • -
  • url (URL)
  • -
  • date
  • -
  • time
  • -
  • IBAN
  • -
  • BIC
  • -
  • digit (nur Zahlen)
  • -
  • plz (5 Zahlen)
  • -
  • plz4 (4 Zahlen)
  • -
  • tel
  • -
  • name prüft Namen und z.B. übliche Firmenbezeichnungen
  • -
  • mail (prüft eingegebene E-Mail-Adressen)
  • -
  • sender (diese Adresse wird als Absendermail eingesetzt und geprüft)
  • -
  • check - Prüfen der Spamschutzeingabe (captchapic oder checkfield)
    - entspricht sonst der Validierung: name
  • -
  • checkfield (legt ein Vergleichsfeld fest das als Spamschutzcode gilt)
  • -
-

 

-
-
-
-
-
-
- - diff --git a/lib/module/0036_text_kontaktformular_generator/output.inc b/lib/module/0036_text_kontaktformular_generator/output.inc deleted file mode 100644 index 4e8ebc5..0000000 --- a/lib/module/0036_text_kontaktformular_generator/output.inc +++ /dev/null @@ -1,1149 +0,0 @@ -
-
-
-*'; // Markierung von Pflichtfeldern -$form_bcc = "REX_VALUE[11]"; // BCC-Feld -$form_deliver_org = "REX_VALUE[13]"; //Original senden an Bestätigungsmail anhängen -$form_submit_title = "REX_VALUE[7]"; // Bezeichnung des Sende-Buttons -$form_attachment = rex_path::media(). "REX_MEDIA[id=1 output=1]"; // Pfad zum Dateianhang bei Bestätigungs-E-Mail -$form_upload_folder = rex_path::media(). "upload/"; // Pfad für Dateien, die über das Formular hochgeladen werden -$form_send_path = false; // true, wenn der Pfad zum Anhang mitgesendet werden soll -// FROMMODE: true entspricht der Absender der E-Mail dem Empfänger der Mail -// Bei false wird der Absender aus den PHPMailer-Addon-Einstellungen übernommen -$form_from_mode = true; // Standard=true umgeht Spamfilter -// Welche Felder sollen nicht in der E-Mail übertragen werden? -$form_ignore_fields = array( - 'captcha', - 'sicherheitscode', - 'ilink', - 'link', - 'divstart', - 'divend', - 'fieldend', - 'info', - 'exlink' -); -// Captcha -$captchaID = 000; // ID zum Captcha-Artikel der das Captcha-Template nutzt -$captchasource = htmlspecialchars(rex_getUrl($captchaID)); -// Alternative: Externe Einbindung eines Captchas -// $captchasource="/redaxo/captcha/captcha.php"; -// Fehlermeldungen / Mehrsprachig -// Sprache 0 -- Hier Deutsch -if (rex_clang::getCurrentId() == 1) { - //### Achtung! Hinter <<< EOD darf kein Leerzeichen stehen. - $form_error = << Bitte überprüfen Sie Ihre Eingaben. -EOD; - $form_iban_info = << Zu Ihrer Sicherheit wurde die IBAN anonymisiert.
-EOD; - $form_iban_info = << -Please check the information you have provided. -EOD; - $form_notice_reload = "
You have tried to reload this page. Your message has already been sent."; -} -// Sprache 2 -- z.B. Niederlande -if (rex_clang::getCurrentId() == 3) { - $form_error = << -Controleer uw gegevens. -EOD; - $form_notice_reload = "
You have tried to reload this page. Your message has been already sent."; -} -// E-Mail-HEADER -$form_template_html = ' - - - -NACHRICHTEN-ÜBERMITTLUNG - - - - -
- ' . $form_subject . ' -

-'; -// E-Mail-Footer -$form_template_html_footer = '

-
'; -$nonhtmlfooter = "\n----------------------------------\n - "; -// Ende der allgemeinen Konfiguration - -$sselect = $absendermail = ""; -$cupload = 0; -$fcounter = $xcounter = 1; - - -if (!function_exists('is_old_android')) { - function is_old_android($version = '4.2.0') - { - - if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) { - - preg_match('/Android (\d+(?:\.\d+)+)[;)]/', $_SERVER['HTTP_USER_AGENT'], $matches); - - return version_compare($matches[1], $version, '<='); - - } - - } -} - - -/** - * prueft ob die Mindestanzahl an Argumenten mit der Vorgabe uebereinstimmt - * - * Achtung! Die Mindestanzahl an Elementen muss mit Array-Zaehlweise angegeben werden. - * D.h., die Zahlung beginnt inkl. der Null. - * - * @param int $mustHave - Mindestanzahl an Elementen - * @param array $elements - Elementa-Array - * @param string $formelement - Name des Elementes in dem der Check ausgefuehrt wird - * @return string - */ - - -if (!function_exists('form_checkElements')) { - function form_checkElements($mustHave, $elements, $formelement) - { - // Diese Information ist nur im Backend zu sehen - if (rex::isBackend()) { - // $formelement darf nicht leer sein - if ($formelement == '') { - return 'Der Formelementename wurde nicht erkannt. Siehe Funktion "form_checkElements"
'; - } - // $mustHave muss mind. 2 sein - if ((int) $mustHave < 2) { - return $formelement . ': Die Vorgabezahl darf nicht kleiner als 2 sein!
'; - } - // $elements muss ein Array sein - if (!is_array($elements)) { - return $formelement . ': Das ubergebene Element ist kein Array.
'; - } - $anzahlElemente = count($elements); - if ($mustHave > count($elements)) { - $fehlermeldung = 'Es wurden nicht genuegend Argumente fuer das Formualarfeld "' . $formelement . '" angegeben.
'; - $fehlermeldung .= 'Angegeben wurden ' . $anzahlElemente . ' Argumente, benoetigt werden aber mind. ' . $mustHave . ' Argumente!
' . "\n"; - return $fehlermeldung; - } else { - return ''; - } - } else { - return ''; - } - } -} -/** - * Gibt eine Fehlermeldung vom Upload zurueck - * - * @param $error_code - * @see http://de.php.net/manual/en/features.file-upload.errors.php - * @return string Fehlermeldung - */ -if (!function_exists('file_upload_error_message')) { - function file_upload_error_message($error_code) - { - switch ($error_code) { - case UPLOAD_ERR_INI_SIZE: // Fehler Nr.: 1 - return 'The uploaded file exceeds the upload_max_filesize directive in php.ini'; - case UPLOAD_ERR_FORM_SIZE: // Fehler Nr.: 2 - return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'; - case UPLOAD_ERR_PARTIAL: // Fehler Nr.: 3 - return 'The uploaded file was only partially uploaded'; - case UPLOAD_ERR_NO_FILE: // Fehler Nr.: 4 - return 'No file was uploaded'; - case UPLOAD_ERR_NO_TMP_DIR: // Fehler Nr.: 6 (Introduced in PHP 4.3.10 and PHP 5.0.3.) - return 'Missing a temporary folder'; - case UPLOAD_ERR_CANT_WRITE: // Fehler Nr.: 7 (Introduced in PHP 5.1.0.) - return 'Failed to write file to disk'; - case UPLOAD_ERR_EXTENSION: // Fehler Nr.: 8 (Introduced in PHP 5.2.0.) - return 'File upload stopped by extension'; - default: - return 'Unknown upload error'; - } - } -} - - - -if (!function_exists('getValidIban')) { - function getValidIban($iban) - { - // normalize - $iban = str_replace(array( - ' ', - '-', - '.', - ',' - ), '', strtoupper($iban)); - // define the pattern - $pattern = '#(?P((?=[0-9A-Z]{28}$)AL\d{10}[0-9A-Z]{16}$|^(?=[0-9A-Z]{24}$)AD\d{10}[0-9A-Z]{12}$|^(?=[0-9A-Z]{20}$)AT\d{18}$|^(?=[0-9A-Z]{22}$)BH\d{2}[A-Z]{4}[0-9A-Z]{14}$|^(?=[0-9A-Z]{16}$)BE\d{14}$|^(?=[0-9A-Z]{20}$)BA\d{18}$|^(?=[0-9A-Z]{22}$)BG\d{2}[A-Z]{4}\d{6}[0-9A-Z]{8}$|^(?=[0-9A-Z]{21}$)HR\d{19}$|^(?=[0-9A-Z]{28}$)CY\d{10}[0-9A-Z]{16}$|^(?=[0-9A-Z]{24}$)CZ\d{22}$|^(?=[0-9A-Z]{18}$)DK\d{16}$|^FO\d{16}$|^GL\d{16}$|^(?=[0-9A-Z]{28}$)DO\d{2}[0-9A-Z]{4}\d{20}$|^(?=[0-9A-Z]{20}$)EE\d{18}$|^(?=[0-9A-Z]{18}$)FI\d{16}$|^(?=[0-9A-Z]{27}$)FR\d{12}[0-9A-Z]{11}\d{2}$|^(?=[0-9A-Z]{22}$)GE\d{2}[A-Z]{2}\d{16}$|^(?=[0-9A-Z]{22}$)DE\d{20}$|^(?=[0-9A-Z]{23}$)GI\d{2}[A-Z]{4}[0-9A-Z]{15}$|^(?=[0-9A-Z]{27}$)GR\d{9}[0-9A-Z]{16}$|^(?=[0-9A-Z]{28}$)HU\d{26}$|^(?=[0-9A-Z]{26}$)IS\d{24}$|^(?=[0-9A-Z]{22}$)IE\d{2}[A-Z]{4}\d{14}$|^(?=[0-9A-Z]{23}$)IL\d{21}$|^(?=[0-9A-Z]{27}$)IT\d{2}[A-Z]\d{10}[0-9A-Z]{12}$|^(?=[0-9A-Z]{20}$)[A-Z]{2}\d{5}[0-9A-Z]{13}$|^(?=[0-9A-Z]{30}$)KW\d{2}[A-Z]{4}22!$|^(?=[0-9A-Z]{21}$)LV\d{2}[A-Z]{4}[0-9A-Z]{13}$|^(?=[0-9A-Z]{,28}$)LB\d{6}[0-9A-Z]{20}$|^(?=[0-9A-Z]{21}$)LI\d{7}[0-9A-Z]{12}$|^(?=[0-9A-Z]{20}$)LT\d{18}$|^(?=[0-9A-Z]{20}$)LU\d{5}[0-9A-Z]{13}$|^(?=[0-9A-Z]{19}$)MK\d{5}[0-9A-Z]{10}\d{2}$|^(?=[0-9A-Z]{31}$)MT\d{2}[A-Z]{4}\d{5}[0-9A-Z]{18}$|^(?=[0-9A-Z]{27}$)MR13\d{23}$|^(?=[0-9A-Z]{30}$)MU\d{2}[A-Z]{4}\d{19}[A-Z]{3}$|^(?=[0-9A-Z]{27}$)MC\d{12}[0-9A-Z]{11}\d{2}$|^(?=[0-9A-Z]{22}$)ME\d{20}$|^(?=[0-9A-Z]{18}$)NL\d{2}[A-Z]{4}\d{10}$|^(?=[0-9A-Z]{15}$)NO\d{13}$|^(?=[0-9A-Z]{28}$)PL\d{10}[0-9A-Z]{,16}n$|^(?=[0-9A-Z]{25}$)PT\d{23}$|^(?=[0-9A-Z]{24}$)RO\d{2}[A-Z]{4}[0-9A-Z]{16}$|^(?=[0-9A-Z]{27}$)SM\d{2}[A-Z]\d{10}[0-9A-Z]{12}$|^(?=[0-9A-Z]{,24}$)SA\d{4}[0-9A-Z]{18}$|^(?=[0-9A-Z]{22}$)RS\d{20}$|^(?=[0-9A-Z]{24}$)SK\d{22}$|^(?=[0-9A-Z]{19}$)SI\d{17}$|^(?=[0-9A-Z]{24}$)ES\d{22}$|^(?=[0-9A-Z]{24}$)SE\d{22}$|^(?=[0-9A-Z]{21}$)CH\d{7}[0-9A-Z]{12}$|^(?=[0-9A-Z]{24}$)TN59\d{20}$|^(?=[0-9A-Z]{26}$)TR\d{7}[0-9A-Z]{17}$|^(?=[0-9A-Z]{,23}$)AE\d{21}$|^(?=[0-9A-Z]{22}$)GB\d{2}[A-Z]{4}\d{14}))#'; - // check - if (preg_match($pattern, $iban, $matches)) { - return true; - } else { - return false; - } - } -} -if (!function_exists('convertBytes')) { - function convertBytes($value) - { - if (is_numeric($value)) { - return $value; - } - - $value = trim($value); - $unit = strtolower(substr($value, -1)); - $qty = (int)substr($value, 0, -1); - - switch ($unit) { - case 'g': - $qty *= 1024; - case 'm': - $qty *= 1024; - case 'k': - $qty *= 1024; - break; - } - - return $qty; - } -} - -$rex_form_data = <<","",rex_yform::unhtmlentities($rex_form_data))); - -$mailbody = << tempFile ) - * @var array - */ -$upload_File = array(); -for ($i = 0; $i < count($form_elements); $i++) { - // ueberspringe Leerzeilen - if (trim($form_elements[$i]) == '') { - continue; - } - $element = explode("|", $form_elements[$i]); - $AFE[$i] = $element; - $formfield = 0; - - - switch ($element[0]) { - case "svar": - case "session": - $formoutput[] = ' - '; - break; - // Gestaltungselemente - case "headline": - $formoutput[] = '
' . $element[1] . '
'; - break; - case "info": - $formoutput[] = '
' . $element[1] . '
'; - break; - case "HTML": - case "html": - $formoutput[] = '
' . $element[1] . '
'; - break; - case "exlink": - $formoutput[] = ''; - break; - case "ilink": - case "link": - if ($element[3] != "") { - $linkclass = 'class="' . $element[3] . '" '; - } else { - $linkclass = ""; - } - $formoutput[] = ''; - break; - case "trennelement": - case "divider": - $formoutput[] = '
'; - break; - case "fieldstart": - $formoutput[] = '
' . $element[1] . ''; - $formfield = "on"; - break; - case "fieldend": - $formoutput[] = '
'; - $formfield = "on"; - break; - case "divstart": - $str = $element[1]; - $first = $str[0]; - $id = str_replace("#", '', $str); - if (!isset($element[2])) - $element[2] = ''; // Zeile eingefügt - ### MW ### - if ($first == '#') { - $formoutput[] = '
' . $element[2]; - } else { - $formoutput[] = '
' . $element[2]; - } - $formfield = "on"; - break; - case "divend": - $formoutput[] = '
'; - $formfield = "on"; - break; - // Formular-Felder - case "checkbox": - $req = ''; - $cchecked = ""; - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - } - if (!isset($element[3])) - $element[3] = ''; // Zeile eingefügt - ### MW ### - if ((trim($FORM[$form_ID]["el_" . $i]) == "X") || ($FORM[$form_ID]["el_" . $i] == '' && !$FORM[$form_ID][$form_ID . "send"] && $element[3] == 1)) { - $cchecked = ' checked="checked"'; - $hidden = ""; - } else { - $cchecked = ''; - //$hidden = '
'; - $hidden = ""; - } - if (isset($element[2]) && $element[2] == 1 && $cchecked == "" && $FORM[$form_ID][$form_ID . "send"]) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $e = 1; - $warning_set = 1; - } - if(!isset($element[4])) - { - $element[4] = ''; - } - $formoutput[] = $hidden . ' -
-
'; - break; - // Radio-Buttons von Markus Feustel 07.01.2008 - case "radio": - $req = ''; - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - } - if ((trim($FORM[$form_ID]["el_" . $i]) == 1) || ($FORM[$form_ID]["el_" . $i] == '' && !$FORM[$form_ID][$form_ID . "send"] && $element[3] == 1)) { - $checked = ' checked="checked"'; - $hidden = ''; - } else { - $checked = ""; - $hidden = ''; - } - if (trim($FORM[$form_ID]["el_" . $i]) == '' && trim($element[5]) != '') { - $FORM[$form_ID]["el_" . $i] = trim($element[5]); - } - if (isset($element[2]) && $element[2] == 1 && trim($FORM[$form_ID]["el_" . $i]) == "" && $FORM[$form_ID][$form_ID . "send"] == 1) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - $e = 1; - } - $ro = explode(';', trim($element[3])); - $val = explode(';', trim($element[4])); - $formlabel[$i] = ''; - $fo = $formlabel[$i] . '
' . "\n"; - for ($xi = 0; $xi < count($ro); $xi++) { - if ($val[$xi] == trim($FORM[$form_ID]["el_" . $i])) { - $checked = ' checked="checked"'; - } else { - $checked = ''; - } - $fo .= '
' . "\n"; - $fo .= '
' . "\n"; - } - $fo .= '
' . "\n"; - $formoutput[$i] = '
' . $fo . '
'; - break; - // Ende Radio-Buttons - case "hidden": - case "password": - case "text": - case "email": - case "url": - case "date": - case "time": - case "IBAN": - case "BIC": - case "subject": - $req = ''; - $freq = ''; - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - $freq = ' required'; - } - // 14.08.2009: GET-VARIABLENABFRAGE von Tito übernommen, siehe http://forum.redaxo.de/ftopic11635-30.html - if ($FORM[$form_ID]["el_" . $i] == '' && !$FORM[$form_ID][$form_ID . 'send'] && isset($element[3])) // " && isset($element[3])" eingefügt - ### MW ### - { - if (strchr($element[3], 'GET_')) { - $get = explode('GET_', $element[3]); - $element[3] = rex_get($get[1]); - } - - if ($element[3] == "session") { - $element[3] = $_SESSION["REX_VALUE[16]"]; - unset($_SESSION["REX_VALUE[16]"]); - } - if ($element[3] == "today") { - $element[3] = $form_DATE; - } - if ($element[3] == "now") { - $element[3] = $form_TIME; - } - - $FORM[$form_ID]["el_" . $i] = trim($element[3]); - } - if (isset($element[2]) && $element[2] == 1 && (trim($FORM[$form_ID]["el_" . $i]) == "" || trim($FORM[$form_ID]["el_" . $i]) == trim($element[3])) && $FORM[$form_ID][$form_ID . "send"] == 1) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - } - // ### Validierung falls Pflichtelement oder Inhalt da und Formular abgeschickt - if (!isset($element[5])) - $element[5] = ''; // Zeile eingefügt - ### MW ### - if ((isset($element[2]) && $element[2] == 1) && (trim($FORM[$form_ID]["el_" . $i]) != "") && ($FORM[$form_ID][$form_ID . "send"] == 1) || (trim($element[5]) != "" && $FORM[$form_ID][$form_ID . "send"] == 1 && $element[2] != 1 && trim($FORM[$form_ID]["el_" . $i]) != "")) { - // checken, ob und welches Validierungsmodell gewaehlt - if (trim($element[5]) != '') { - // falls Validierung gefordert - $valid_ok = TRUE; - $inhalt = trim($FORM[$form_ID]["el_" . $i]); - switch (trim($element[5])) { - case "mail": - if (!preg_match("#^.+@(.+\.)+([a-zA-Z]{2,6})$#", $inhalt)) - $valid_ok = FALSE; - break; - case "sender": - case "sendercheck": - case "absendermail": - if (!preg_match("#^.+@(.+\.)+([a-zA-Z]{2,6})$#", $inhalt)) { - $valid_ok = FALSE; - } else { - $absendermail = $inhalt; - $responsemail = str_replace("%Usermail%", $absendermail, $responsemail); - $responsemail = str_replace("%Besuchermail%", $absendermail, $responsemail); - // Neu: 14.01.2014 - Sender als Checkfield - if ($element[5] == "sendercheck") { - $_SESSION["formcheck"] = $inhalt; - } - } - break; - case "tel": - case "telefon": - if (preg_match("#^[ \(\)\+0-9\/-]{6,}+$#", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - } - break; - case "plz": - if (preg_match("/^[0-9]{5}$/", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - } - break; - case "plz4": - if (preg_match("/^[0-9]{4}$/", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - } - break; - case "name": - if (preg_match("/^[^;,@%:_#+*'!\"§$\/()=?]+$/i", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - } - break; - case "digit": - if (!ctype_digit($inhalt)) - $valid_ok = FALSE; - break; - case "alpha": - if (!ctype_alpha($inhalt)) - $valid_ok = FALSE; - break; - case "url": - $inhalt = trim($inhalt); - if (preg_match("#^(http|https|ftp)+(://www.)+([a-z0-9-_.]{2,}\.[a-z]{2,4})$#i", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - break; - } - break; - case "iban": - if (($validiban = getValidIban($inhalt))) { - break; - } else { - $valid_ok = FALSE; - break; - } - break; - case "date": - if (strpos($inhalt, '.')) { - $values = explode('.', $inhalt); - $day = $values[0]; - $month = $values[1]; - $year = $values[2]; - if ($check = checkdate($month, $day, $year)) { - break; - } else { - $valid_ok = FALSE; - break; - } - } else { - $valid_ok = FALSE; - break; - } - break; - case "time": - if (!(bool) preg_match('/^(?:2[0-3]||(([0-9]||0[0-9])||1[0-9])):[0-5][0-9]$/', trim($inhalt))) { - $valid_ok = FALSE; - break; - } - break; - case "bic": - if (preg_match("#^[a-zA-Z]{6}[a-zA-Z0-9]{2,5}$#", $inhalt)) { - break; - } else { - $valid_ok = FALSE; - } - break; - case "checkfield": - if (preg_match("/[\w\p{L}]/u", $inhalt)) { - $_SESSION["formcheck"] = $inhalt; - break; - } else { - $valid_ok = FALSE; - } - break; - // Captchaabfrage - case "check": - case "captcha": - if (isset($_SESSION['token'])) { - if ($_SESSION['token'] == rex_request::post('token')) { - $formcaptcha = 'off'; - $valid_ok = FALSE; - $dfreload = $form_notice_reload; - break; - } - } - if ($_SESSION["formcheck"] == $inhalt) { - $valid_ok = TRUE; - break; - } else { - $formcaptcha = 'off'; - $valid_ok = FALSE; - break; - } - } // switch (trim($element[5])) - if (!$valid_ok) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - } - } // falls Validierung gefordert - } - $placeholder = ''; - // ### /Validierung - if ($element[0] == "hidden") { - $inptype = "hidden"; - } - if ($element[0] == "BIC") { - $placeholder = ' placeholder="Bitte BIC eingeben"'; - $inptype = "text"; - } - if ($element[0] == "IBAN") { - $placeholder = ' placeholder="Bitte IBAN eingeben"'; - $inptype = "text"; - } - if ($element[0] == "date") { - $placeholder = ' placeholder="tt.mm.jjjj"'; - if (is_old_android()) { - $inptype = "text"; - } else { - $inptype = "date"; - } - } - if ($element[0] == "time") { - $placeholder = ' placeholder="hh:mm"'; - $inptype = "time"; - } - if ($element[0] == "text") { - $inptype = "text"; - } - if ($element[0] == "password") { - $inptype = "password"; - } - if ($element[0] == "email") { - $placeholder = ' placeholder="name@domain.de"'; - $inptype = "email"; - } - if ($element[0] == "url") { - $inptype = "url"; - } - if ($formcaptcha == 'off') { - if ($inptype == 'hidden') { - $formoutput[] = ' - '; - } else { - $formoutput[] = ' -
-
- '; - } - $formcaptcha = 'on'; - } else { - $formoutput[] = ' -
-
- '; - } - break; - case "textarea": - $req = ''; - $freq = ''; - $fehlerImFormaufbau = form_checkElements(2, $element, 'textarea'); - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - $freq = ' required'; - } - if (isset($element[3]) && $FORM[$form_ID]["el_" . $i] == '' && !$FORM[$form_ID][$form_ID . "send"]) { - $FORM[$form_ID]["el_" . $i] = $element[3]; - } - if (isset($element[2]) && isset($element[3]) && $element[2] == 1 && (trim($FORM[$form_ID]["el_" . $i]) == "" || trim($FORM[$form_ID]["el_" . $i]) == trim($element[3])) && $FORM[$form_ID][$form_ID . "send"] == 1) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - } - $formoutput[] = $fehlerImFormaufbau . ' -
-
'; - break; - case "select": - case "subjectselect": - $req = ''; - $fehlerImFormaufbau = form_checkElements(3, $element, 'select'); - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - } - $SEL = new rex_select(); - $SEL->setName("FORM[" . $form_ID . "][el_" . $i . "]"); - $SEL->setId("el_" . $i); - $SEL->setSize(1); - $SEL->setStyle(' class="formselect uk-select"'); - if ($FORM[$form_ID]["el_" . $i] == "" && !$FORM[$form_ID][$form_ID . "send"]) { - $SEL->setSelected($element[3]); - } else { - $SEL->setSelected($FORM[$form_ID]["el_" . $i]); - } - foreach (explode(";", trim($element[4])) as $v) { - $SEL->addOption($v, $v); - } - if (isset($element[2]) && $element[2] == 1 && trim($FORM[$form_ID]["el_" . $i]) == "" && $FORM[$form_ID][$form_ID . "send"] == 1) { - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - } - $formoutput[] = $fehlerImFormaufbau . ' -
- - - ' . str_replace('size="1"','', $SEL->get()) . '
'; - break; - - - // Upload - case "upload": - $fehlerImFormaufbau = form_checkElements(5, $element, 'Upload'); - $req = ''; - $error_message = ''; - // wird true, wenn keine Datei uebergeben wurde - $upload_keineDateivorhanden = false; - if (isset($element[2]) && $element[2] == 1) { - $req = $form_required; - } - if (isset($element[6]) && trim($element[6]) != '') { - $upload_MaxSice = trim($element[6]); - } else { - $upload_MaxSice = 0; - } - if (!empty($_FILES)) { - if ($_FILES['FORM']['error'][$form_ID]['el_' . $i] === UPLOAD_ERR_OK) { - // upload ok - } elseif ($req == '' && $_FILES['FORM']['error'][$form_ID]['el_' . $i] === UPLOAD_ERR_NO_FILE) { - // upload ok aber keine Datei vorhanden - $upload_keineDateivorhanden = true; - } else { - $error_message .= file_upload_error_message($_FILES['FORM']['error'][$form_ID]['el_' . $i]); - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - } - $domailfile = []; - // alexplus: http://forum.redaxo.de/ftopic11635-150.html - if (!$upload_keineDateivorhanden && $error_message == '') { - $targetPath = $form_upload_folder; - $tempFile = $_FILES['FORM']['tmp_name'][$form_ID]['el_' . $i]; - $preTarget = time() . "_" . $_FILES['FORM']['name'][$form_ID]['el_' . $i]; - // Leerzeichen ersetzen durch _ - $targetFile = str_replace(" ", "_", $preTarget); - $targetPathFile = str_replace('//', '/', $targetPath) . $targetFile; - // Multimail - $cupload++; - $domailfile[$cupload] = $targetFile; - $upload_Extensions = array(); - $upload_Extensions_errormessage = ''; - $zaehler_element = count(explode(";", trim($element[4]))); - $zaehler_element_z = 0; - foreach (explode(";", trim($element[4])) as $v) { - if ($v != '') { - $upload_Extensions[] = $v; - $upload_Extensions_errormessage .= '.' . $v; - } - $zaehler_element_z++; - if ($zaehler_element_z < $zaehler_element) { - $upload_Extensions_errormessage .= ' | '; - } - } - $fileParts = pathinfo($_FILES['FORM']['name'][$form_ID]['el_' . $i]); - if (isset($fileParts['extension']) and $fileParts['extension'] != '' and in_array($fileParts['extension'], $upload_Extensions)) { - $upload_File[$targetPathFile] = $tempFile; - $FORM[$form_ID]['el_' . $i] = ($form_send_path) ? $targetPathFile : $targetFile; - } else { - // Warnung ueber nicht erlaubte Datei ausgeben - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - $error_message .= '
Die Datei kann nicht hochgeladen werden. Evtl. liegt es an einem falschen Dateityp. Erlaubt ist hier nur: ' . $upload_Extensions_errormessage . '
'; - } - if ($_FILES['FORM']['size'][$form_ID]['el_' . $i] < convertBytes($upload_MaxSice)) { - // alles ok - } else { - // Warnung ueber zu grosse Datei ausgeben - $warning["el_" . $i] = $form_warn_css; - $warnblock["el_" . $i] = $form_warnblock_css; - $warning_set = 1; - $error_message .= 'Die Datei "' . htmlspecialchars($targetFile) . '" ist zu groß!
'; - $error_message .= 'Erlaubt sind maximal ' . convertBytes($upload_MaxSice) / 1048576 . ' MB'; - } - } // if (!$upload_keineDateivorhanden && $error_message == '') - } // if (!empty($_FILES)) - if (isset($error_message) and $error_message != '') { - $error_message = '

' . $error_message . '

'; - } else { - $error_message = ''; - } - $form_tmp = ''; - $form_tmp .= $fehlerImFormaufbau; - $form_tmp .= $error_message; - # $form_tmp .= "\n" . '
' . "\n"; - - $form_tmp .= '
'; - - $form_tmp .= - - '
- - - - -
'; - - - - - $formoutput[] = $form_tmp; - $form_enctype = 'enctype="multipart/form-data"'; - break; - } -} - -// pruefe Pfad auf Vorhandensein und Schreibrechte, Wenn Pfad nicht vorhanden, ignoriere die weitere Verarbeitung. -if (isset($form_upload_folder) and $form_upload_folder != '' and rex::isBackend()) { - // ... dum die dum ... Pfadpruefung erfolgt hier ...beginnt der Uploadpfad nicht mit einem Slash, muss es sich um einen lokalen Ordner handeln der vom Backend aus erweitert werden muss - if (substr($form_upload_folder, 0, 1) != '/') { - $form_upload_folder_tmp = '../' . $form_upload_folder; - } else { - $form_upload_folder_tmp = $form_upload_folder; - } - - if (rex_dir::isWritable($form_upload_folder_tmp) !== true) { - echo rex_view::warning('Der Uploadpfad "' . $form_upload_folder_tmp . '" ist nicht beschreibbar.
- Pruefe die Schreibrechte oder lasse die Angaben zum Uploadordner leer, wenn kein Uploadfeld genutzt wird.'); - } -} -// =================AUSGABE-KOPF============================ -$out = ' - -
-
- '; -// =================Formular-generieren===================== -foreach ($formoutput as $fields) { - $out .= $fields; -} -// =================AUSGABE-FUSS============================ -$out .= ' - - -
- -
-
- '; -// =================SEND MAIL=============================== -if (isset($FORM[$form_ID][$form_ID . 'send']) && $FORM[$form_ID][$form_ID . 'send'] == 1 && !$warning_set) { - // BEGIN :: Uploadverarbeitung pruefe Pfad auf Vorhandensein und Schreibrechte - // Wenn Pfad nicht vorhanden, ignoriere die weitere Verarbeitung. - if (isset($form_upload_folder) and $form_upload_folder != '' and count($upload_File) > 0) { - // ... dum die dum ... Pfadpruefung erfolgt hier ... - foreach ($upload_File as $targetFile => $tempFile) { - move_uploaded_file($tempFile, $targetFile); - } - } // if (isset ($form_upload_folder) and $form_upload_folder != '') - // END :: Uploadverarbeitung - $_SESSION['token'] = rex_request::post('token'); - - // Selbsdefinierte Sessionvariable zurücksetzen - if ("REX_VALUE[16]" != "") { - unset($_SESSION["REX_VALUE[16]"]); - } - $rmailbody = $rmailbodyhtml = ''; - // E-Mail-Content - foreach ($FORM[$form_ID] as $k => $v) { - $matches = array(); - - // HTML-AUSGABE und Plaintext erstellen - $key = preg_replace('#el_#', '', $k); - if ($k != $form_ID . 'submit' && $k != $form_ID . 'send' && (!isset($AFE[$key][5]) || $AFE[$key][5] != 'captcha') && stripslashes($v) != '' && isset($AFE[$key][1]) && !in_array($AFE[$key][0], $form_ignore_fields)) { - $v = strip_tags($v); - $v = stripslashes($v); - $v2 = substr($v, 0, -5) . 'XXXXX'; - switch ($AFE[$key][0]) { - case "subjectselect": - $sselect = $v . ' - '; - break; - case "BIC": - $mailbodyhtml .= '' . $fcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . '
'; - $mailbody .= $xcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . "\n"; - $rmailbodyhtml .= '' . $fcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . '
'; - $rmailbody .= $xcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . "\n"; - $fcounter++; - $xcounter++; - break; - case "IBAN": - $rmailbodyhtml .= $form_iban_info . '' . $fcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v2) . '
'; - $rmailbody .= $form_iban_info2 . $xcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v2) . "\n"; - $mailbodyhtml .= '' . $fcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . '
'; - $mailbody .= $xcounter . '. ' . $AFE[$key][1] . ": " . strtoupper($v) . "\n"; - $fcounter++; - $xcounter++; - break; - case "fieldstart": - $mailbodyhtml .= '

' . $v . '

'; - $mailbody .= "\n" . '****' . $v . "\n" . '---------------------------------------------------------' . "\n"; - $rmailbodyhtml .= '

' . $v . '

'; - $rmailbody .= "\n" . '****' . $v . "\n" . '---------------------------------------------------------' . "\n"; - break; - case "headline": - $mailbodyhtml .= '

' . $v . '

'; - $mailbody .= "\n" . '---' . $v . "\n" . '---------------------------------------------------------' . "\n"; - $rmailbodyhtml .= '

' . $v . '

'; - $rmailbody .= "\n" . '---' . $v . "\n" . '---------------------------------------------------------' . "\n"; - break; - case "subject": - $mailbodyhtml .= '' . $fcounter . '. ' . $AFE[$key][1] . ": " . stripslashes($v) . '
'; - $mailbody .= $xcounter . '. ' . $AFE[$key][1] . ": " . stripslashes($v) . "\n"; - $subject = "Anfrage zu: " . stripslashes($v); - $fcounter++; - $xcounter++; - break; - - - default: - $mailbodyhtml .= '' . $fcounter . '. ' . strip_tags($AFE[$key][1]) . ": " . $v . '
'; - $mailbody .= $xcounter . '. ' . strip_tags($AFE[$key][1]) . ": " . $v . "\n"; - $rmailbodyhtml .= '' . $fcounter . '. ' . strip_tags($AFE[$key][1]) . ": " . $v . '
'; - $rmailbody .= $xcounter . '. ' . strip_tags($AFE[$key][1]) . ": " . $v . "\n"; - $fcounter++; - $xcounter++; - } - } - } - - -$Body = $form_template_html . nl2br($mailbodyhtml) . $form_template_html_footer; -$To = "REX_VALUE[1]"; -$from = $From = "REX_VALUE[1]"; - - // E-Mail - $mail = new rex_mailer(); // Mailer initialisieren - $mail->CharSet = 'UTF-8'; // Zeichensatz - $mail->AddAddress($To); // Empfänger - if ($absendermail != '') { - $mail->AddReplyTo($absendermail); // Antwort an Absender per Reply-To - Besucher - } - if ($form_bcc != '') { - $mail->AddBCC($form_bcc); - } - -// Wenn true Daten aus do form! , wenn false aus PHPMailer - if ($form_from_mode == true) { - $mail->From = $From; - $mail->Sender = $from ; //Absenderadresse als Return-Path - $mail->FromName = $from ; // Abdendername entspricht Empfängeradresse - } -// Betreff ermitteln - if ($sselect != "") { - $mail->Subject = $sselect . "REX_VALUE[4]"; // Betreff subjectselect - - } - - else { - $mail->Subject = $subject; // Betreff - } - - // HTML-EMAIL JA /NEIN - if ("REX_VALUE[12]" == 'ja') { - $mail->Body = $form_template_html . nl2br($mailbodyhtml) . $form_template_html_footer; - $mail->AltBody = $mailbody . $nonhtmlfooter; - } else { - $mail->Body = $mailbody . $nonhtmlfooter; - } - - - // Dateianhänge versenden - if (is_array($domailfile) and "REX_VALUE[15]" == "Ja" and $cupload > "0") { - foreach ($domailfile as $dfile) { - $mail->AddAttachment($form_upload_folder.$dfile); - } - } - if (!function_exists('doppelversand')) { - function doppelversand() - { - } - $mail->Send(); // Versenden an Empfänger - - - } - -// =================MAIL-RESPONDER============================ -if (isset($FORM[$form_ID][$form_ID . 'send']) && $FORM[$form_ID][$form_ID . 'send'] == 1 && $responder == 'ok' && !$warning_set && isset($absendermail)) -{ -// SETUP -$Body = $form_template_html . nl2br($responsemail) . '
' . nl2br($rmailbodyhtml) . $form_template_html_footer; -$To = $absendermail; -$from = "REX_VALUE[2]"; -$FromName = "REX_VALUE[8]"; -$rsubject = "REX_VALUE[17]"; - -// SENDEN - -$mail = new rex_mailer(); -#$mail->Body = $Body; -#$mail->AltBody = nl2br($responsemail); -$mail->AddAddress($To); -$mail->FromName = $FromName; -#$mail->From = $from; -$mail->Sender = $from ; //Absenderadresse als Return-Path -$mail->Subject = $rsubject; -$mail->Priority = null; - - if ("REX_MEDIA[id=1 output=1]" != '') { - $mail->AddAttachment($form_attachment); - } - if ($form_deliver_org != 'ja') { - $mail->Body = $responsemail . $nonhtmlfooter; - } else { - if ("REX_VALUE[12]" == 'ja') { - $mail->IsHTML(true); - $mail->Body = $form_template_html . nl2br($responsemail) . '
' . nl2br($rmailbodyhtml) . $form_template_html_footer; - $mail->AltBody = $responsemail.$rmailbody . $nonhtmlfooter; - } else { - $mail->Body = $responsemail . "\n-----------------------------------------------\n" . $rmailbody . $nonhtmlfooter; - } - } - - if (!function_exists('doppelversand2')) { - function doppelversand2() - { - } - $mail->Send(); // Versenden an Empfänger - } - - } - -// =================MAIL-RESPONDER-ENDE========================= - unset($_SESSION["formcheck"]); // -echo '
REX_VALUE[id=6 output=html]
'; - $noform = 1; -} else { - $noform = 0; -} -if ($warning_set) { - echo '
'; - echo ($form_error . $dfreload); - echo '
'; - print $out; -} else { - if ($noform != 1) { - print $out; - } -} -?> - -
-
-
- - diff --git a/lib/module/0036_text_kontaktformular_generator/styles_css.inc b/lib/module/0036_text_kontaktformular_generator/styles_css.inc deleted file mode 100644 index 7c3b1b2..0000000 --- a/lib/module/0036_text_kontaktformular_generator/styles_css.inc +++ /dev/null @@ -1,173 +0,0 @@ -.doform { - box-sizing: border-box; - display: block; - padding: 0; - text-align: left; -} - -.doform div, .doform textarea, .doform input { - box-sizing: border-box; -} - -.doform .formsubmit { - clear: both; -} - -.doform .doformdiv { - display: block; - float: left; - width: 50%; -} - -.doform .doformdiv2 { - display: block; - float: left; - padding-left: 25px; - width: 50%; -} - -.doform .formheadline { - color: #000; - font-size: 1.5em; - font-weight: 300; - margin-bottom: .5em; -} - -.doform .formhinweis { - color: #000; - font-size: 1em; - font-weight: 600; - margin-bottom: .5em; -} - -.doform .radioblock { - margin-bottom: 1.5em; - margin-top: 1.5em; -} - -.doform .radiofield { - box-sizing: border-box; - color: #333; - float: left; - padding: 10px; - text-align: center; - width: 25%; -} - -.doform .radiofield input[type=radio] { - display: none; -} - -.doform .radiofield label { - border: none; - box-sizing: border-box; - display: block; - float: left; - font-size: 1.5em; - margin-left: auto; - margin-right: auto; - padding: 4px 11px; - text-align: center; - transition: all .3s ease-in-out; - width: 100%; -} - -.doform .radiofield input[type=radio]:checked +label, .radiofield label:hover { - background-color: #eee; - border-radius: 10px; - color: #000; -} - -.doform .radioblock label { - border-bottom: 2px solid #333; - font-size: 1em; - margin-bottom: 1em; - padding-bottom: 10px; -} - -.doform .textradio .radiofield label { - border: 1px solid #eee; - border-radius: 10px; - font-size: .9em; - text-align: center; -} - -.doform .formtext { - background-color: #fff; - border: 1px solid #eee; - box-shadow: inset 0 0 2px #666; - clear: both; - color: #000; - font-size: 18px; - font-weight: 300; - height: 30px; - margin-bottom: 15px; - padding: 0; - width: 100%; -} - -.doform .formselect { - background-color: #fff; - border: 1px solid #8694a1; - clear: both; - color: #000; - font-size: 18px; - font-weight: 300; - height: 30px; - margin-bottom: 15px; - padding: 0; - width: 100%; -} - -.doform .forminfo { - color: #900; - display: block; - font-size: 1.2em; - padding-bottom: 15px; -} - -.doform textarea { - background-color: #fff; - border: 1px solid #ccc; - clear: both; - color: #000; - font-size: 18px; - margin-bottom: 20px; - width: 100%; -} - -.doform label { - clear: both; - display: block; - font-size: 1em; - margin-bottom: .5em; - margin-right: 20px; -} - -.doform label.formerror { - color: #900; -} - -.doform label span { - color: #414550; -} - -.doform input[type=text]:focus, .doform input[type=text]:hover, .doform textarea:focus, .doform textarea:hover, .doform input[type=text]:focus, .doform input[type=text]:hover, .doform textarea:focus, .doform textarea:hover { - background-color: #fff; -} - -.doform input[type=submit] { - background-color: #000; - border: none; - color: #fff; - font-size: 1.2em; - margin-bottom: 10px; - padding: 8px; - text-transform: uppercase; - transition: all .3s ease-in-out; -} - -.doform input[type=submit]:hover { - background-color: #fff; - color: #000; -} diff --git a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/config.inc b/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/config.inc deleted file mode 100644 index 8f2d063..0000000 --- a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0700 - MBlock - MForm - Teammitglieder" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/info.inc b/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/info.inc deleted file mode 100644 index f1efb83..0000000 --- a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/info.inc +++ /dev/null @@ -1,10 +0,0 @@ -

MBlock - MForm - Teammitglieder

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/input.inc b/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/input.inc deleted file mode 100644 index 25b6971..0000000 --- a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/input.inc +++ /dev/null @@ -1,23 +0,0 @@ -addFieldset('Team member'); - -// textinput -$mform->addTextField("$id.0.name", array('label'=>'Name')); // use string for x.0 json values - -// media button -$mform->addMediaField(1, array('label'=>'Avatar')); // mblock will auto set the media file as json value - -// parse form -echo MBlock::show($id, $mform->show(), array('min'=>2,'max'=>4)); // add settings min and max - -?> diff --git a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/output.inc b/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0700_mblock_mform_teammitglieder/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/config.inc b/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/config.inc deleted file mode 100644 index 00bcf79..0000000 --- a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0705 - MBlock - MForm - Link und Linklist" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/info.inc b/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/info.inc deleted file mode 100644 index 5b1c47a..0000000 --- a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/info.inc +++ /dev/null @@ -1,10 +0,0 @@ -

MBlock - MForm - Link und Linklist

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/input.inc b/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/input.inc deleted file mode 100644 index 456c44f..0000000 --- a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/input.inc +++ /dev/null @@ -1,23 +0,0 @@ -addFieldset('Links'); - -// link button -$mform->addLinkField(1,array('label'=>'Link')); - -// linklist button -$mform->addLinklistField(1,array('label'=>'Link list')); - -// parse form -echo MBlock::show($id, $mform->show()); - -?> diff --git a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/output.inc b/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0705_mblock_mform_link_und_linklist/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/config.inc b/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/config.inc deleted file mode 100644 index ffbc3db..0000000 --- a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0710 - MBlock - MForm - Media und Medialist" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/info.inc b/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/info.inc deleted file mode 100644 index d1e3448..0000000 --- a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/info.inc +++ /dev/null @@ -1,10 +0,0 @@ -

MBlock - MForm - Media und Medialist

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/input.inc b/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/input.inc deleted file mode 100644 index 5bbca2d..0000000 --- a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/input.inc +++ /dev/null @@ -1,23 +0,0 @@ -addFieldset('Media'); - -// media button -$mform->addMediaField(1, array('label'=>'Medium')); - -// medialist button -$mform->addMedialistField(1, array('label'=>'Media list')); - -// parse form -echo MBlock::show($id, $mform->show()); - -?> diff --git a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/output.inc b/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0710_mblock_mform_media_und_medialist/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/config.inc b/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/config.inc deleted file mode 100644 index 2223df1..0000000 --- a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0715 - MBlock - MForm - Diverse Formularelemente" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/info.inc b/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/info.inc deleted file mode 100644 index 679939f..0000000 --- a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/info.inc +++ /dev/null @@ -1,10 +0,0 @@ -

MBlock - MForm - Diverse Formularelemente

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/input.inc b/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/input.inc deleted file mode 100644 index 915fd8d..0000000 --- a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/input.inc +++ /dev/null @@ -1,33 +0,0 @@ -addFieldset('Text Inputs'); - -// textinput -$mform->addTextField("$id.0.test1", array('label'=>'Input Text1')); // use string for x.0 json values -$mform->addTextField("$id.0.test2", array('label'=>'Input Text2')); // use string for x.0 json values - -// textarea -$mform->addTextAreaField("$id.0.test3", array('label'=>'Textarea Text3')); - -// fieldset -$mform->addFieldset('Select elements'); - -// selects -$mform->addSelectField("$id.0.test4", array(1=>'test-1',2=>'test-2',3=>'test-3',4=>'test-4'), array('label'=>'Select')); - -// select group -$mform->addSelectField("$id.0.test5", array('group 1'=>array(1=>'test-1',2=>'test-2'), 'group 2'=>array(3=>'test-3',4=>'test-4')), array('label'=>'Select optgroup')); - -// parse form -echo MBlock::show($id, $mform->show()); - -?> diff --git a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/output.inc b/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0715_mblock_mform_diverse_forumlarelemente/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/config.inc b/lib/module_mform_mblock/0800_mblock_html_teammitglieder/config.inc deleted file mode 100644 index 87074d4..0000000 --- a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0800 - MBlock - HTML - Teammitglieder" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/info.inc b/lib/module_mform_mblock/0800_mblock_html_teammitglieder/info.inc deleted file mode 100644 index 2e337be..0000000 --- a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/info.inc +++ /dev/null @@ -1,9 +0,0 @@ -

MBlock - HTML - Teammitglieder

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/input.inc b/lib/module_mform_mblock/0800_mblock_html_teammitglieder/input.inc deleted file mode 100644 index afab193..0000000 --- a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/input.inc +++ /dev/null @@ -1,28 +0,0 @@ - - Team member -
-
-
-
-
-
-
- REX_MEDIA[id="1" widget="1"] -
-
- -EOT; - -// parse form -echo MBlock::show($id, $form); - -?> diff --git a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/output.inc b/lib/module_mform_mblock/0800_mblock_html_teammitglieder/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0800_mblock_html_teammitglieder/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/config.inc b/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/config.inc deleted file mode 100644 index eaaa403..0000000 --- a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0805 - MBlock - HTML - Link und Linklist" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/info.inc b/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/info.inc deleted file mode 100644 index 64d459b..0000000 --- a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/info.inc +++ /dev/null @@ -1,9 +0,0 @@ -

MBlock - HTML - Link und Linklist

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/input.inc b/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/input.inc deleted file mode 100644 index ae014f8..0000000 --- a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/input.inc +++ /dev/null @@ -1,30 +0,0 @@ - - Links -
-
-
- REX_LINK[id="1" widget="1"] -
-
-
-
-
- REX_LINKLIST[id="1" widget="1"] -
-
- -EOT; - -// parse form -echo MBlock::show($id, $form); - -?> diff --git a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/output.inc b/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0805_mblock_html_link_und_linklist/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/config.inc b/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/config.inc deleted file mode 100644 index 5156d77..0000000 --- a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0810 - MBlock - HTML - Media und Medialist" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/info.inc b/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/info.inc deleted file mode 100644 index 04fd5a7..0000000 --- a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/info.inc +++ /dev/null @@ -1,9 +0,0 @@ -

MBlock - HTML - Media und Medialist

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/input.inc b/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/input.inc deleted file mode 100644 index 6f1aabc..0000000 --- a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/input.inc +++ /dev/null @@ -1,30 +0,0 @@ - - Media -
-
-
- REX_MEDIA[id="1" widget="1"] -
-
-
-
-
- REX_MEDIALIST[id="1" widget="1"] -
-
- -EOT; - -// parse form -echo MBlock::show($id, $form); - -?> diff --git a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/output.inc b/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0810_mblock_html_media_und_medialist/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/config.inc b/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/config.inc deleted file mode 100644 index 53e911d..0000000 --- a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/config.inc +++ /dev/null @@ -1,2 +0,0 @@ -modulname = "0715 - MBlock - HTML - Diverse Formularelemente" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung diff --git a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/info.inc b/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/info.inc deleted file mode 100644 index 180f59c..0000000 --- a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/info.inc +++ /dev/null @@ -1,9 +0,0 @@ -

MBlock - HTML - Diverse Formularelemente

- -
-Voraussetzungen -

-

-

diff --git a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/input.inc b/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/input.inc deleted file mode 100644 index 4473b82..0000000 --- a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/input.inc +++ /dev/null @@ -1,59 +0,0 @@ - - Text Inputs -
-
-
-
-
-
-
-
-
-
-
-
- -
- Select elements -
-
-
- -
-
-
-
-
- -
-
-
-EOT; - -// parse form -echo MBlock::show($id, $form); - -?> diff --git a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/output.inc b/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/output.inc deleted file mode 100644 index 21e3c42..0000000 --- a/lib/module_mform_mblock/0815_mblock_html_diverse_forumlarelemente/output.inc +++ /dev/null @@ -1,7 +0,0 @@ -'; -print_r(rex_var::toArray("REX_VALUE[1]")); -echo ''; - -?> diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/config.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/config.inc deleted file mode 100644 index 3523a26..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/config.inc +++ /dev/null @@ -1,3 +0,0 @@ -modulname = "0820 - MBlock - MForm - Owl Carousel (Slider)" -status = 1; 0 = geplant, 1 = fertig, 2 = in Bearbeitung -assets_folder= owlcarousel diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/info.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/info.inc deleted file mode 100644 index 2442fcd..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/info.inc +++ /dev/null @@ -1,31 +0,0 @@ -

MBlock - MForm - OwlCarousel2 (Slider)

- -

Diese Modul dient dazu Bilder mittels des Owl Carousel 2 auszugeben.

- -
-Voraussetzungen -

-

-

-
-

Bitte beachten

-

Es werden nicht automatisch die benötigeten JS und CSS Dateien eingebunden!

-

Es werden die Dateien des JavaScript Plugins OwlCarousel in den Ordner ./assets/owlcarousel kopiert. Somit stehen dort die erforderlichen JS und CSS Dateien zur Verfügung.

- -

Die benötigten Dateien müssen also von Hand in das/die Frontend-Template/s eingebunden werden.

- -

Eine Anleitung gibt es hier.

-

Demos gibt es hier.

-
-

Hinweis

-

Grundsätzlich basiert der Output auf dem Bootstrap Carousel. Das Element im Slider-Markup ist nur ein Beispiel, wei man weitere gestalterische Elemente individuell pro Slide einbinden kann.

-

Die Inhalte der Formular-Blöcke lassen sich, nach dem ersten Hinzufügen des Moduls, mit Klick auf die Head Sliderbild einklappen, damit die Blöcke sich leichter sortieren lassen.
Die Expertenoptionen für das Owl Carousel lassen sich auch so ausklappen.

- -
-

Es ist natürlich möglich die Dateien "von Hand" an anderer Stelle zu kopieren und auch auf andere Weise einzubinden...

diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/input.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/input.inc deleted file mode 100644 index d61cef0..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/input.inc +++ /dev/null @@ -1,340 +0,0 @@ - -
- -
'.PHP_EOL; - -echo '
'.PHP_EOL; -echo '
'.PHP_EOL; - -// base ID -$id = 1; - -// init mform -$mform = new MForm(); - -// fieldset -$mform->addFieldset('Sliderbild'); - -// media button -$mform->addMediaField(1, array('preview'=>'1'),'', array('label'=>'Medium')); - -$mform->addHtml('
'); - - -// fieldset -$mform->addFieldset('Text Inputs'); - -// textarea -$mform->addTextAreaField("$id.0.slidertext", array('label'=>'Slidertext','class'=>'redactorEditor2-owlCarousel')); - -// fieldset for positioning -$mform->addFieldset('Textplatzierung und Elemente'); - -// text placement -$mform->addSelectField("$id.0.textplace", array(0=>'nicht anzeigen','left-top'=>'links-oben','center-top'=>'mitte-oben','right-top'=>'rechts-oben','left-middle'=>'links-mitte','center-middle'=>'mitte-mitte','right-middle'=>'rechts-mitte','left-bottom'=>'links-unten','center-bottom'=>'mitte-unten','right-bottom'=>'rechts-unten'), array('label'=>'Textplatzierung')); - -// special element -$mform->addSelectField("$id.0.element", array(0=>'nein',1=>'ja'), array('label'=>'Mit Element?')); - -//ToDo -//add data-hash -$mform->addHtml('
'); - - -// parse form -echo MBlock::show($id, $mform->show()); -echo '
'.PHP_EOL; -echo '
'.PHP_EOL; -//base id options -$oid = 20; - -// init options mform -$omform = new MForm(); - -// fieldset -$omform->addFieldset('Generelle Einstellungen'); - -// debug -$omform->addSelectField("$oid.0.debug", array('false'=>'Aus','true'=>'An'), array('label'=>'Debug ')); - -// layout -$omform->addSelectField("$oid.0.layout", array('wide'=>'100% Breite','boxed'=>'Boxed'), array('label'=>'Layout')); - -//select option if image should be used in img tag -$omform->addSelectField("$oid.0.useImg", array('true'=>'Ja','false'=>'Nein'), array('label'=>'Bild als img ausgeben ')); - -// fieldset -$omform->addFieldset('Einstellungen OwlCarousel Offizielle Doku'); - -// items -$omform->addInputField("number","$oid.0.items", array('label'=>'Items ')); - -// loop -$omform->addSelectField("$oid.0.loop", array('true'=>'Ja','false'=>'Nein'), array('label'=>'Loop ')); - -// nav -$omform->addSelectField("$oid.0.nav", array('false'=>'Nein','true'=>'Ja'), array('label'=>'nav ')); - -// dots -$omform->addSelectField("$oid.0.dots", array('true'=>'Ja','false'=>'Nein'), array('label'=>'dots ')); - -// autoplay -$omform->addSelectField("$oid.0.autoplay", array('false'=>'Nein','true'=>'Ja'), array('label'=>'autoplay ')); - -// autoplayTimeout -$omform->addInputField("number","$oid.0.autoplayTimeout", array('label'=>'autoplayTimeout ')); - -// autoplayHoverPause -$omform->addSelectField("$oid.0.autoplayHoverPause", array('false'=>'Nein','true'=>'Ja'), array('label'=>'autoplayHoverPause ')); - -// margin -$omform->addInputField("number","$oid.0.margin", array('label'=>'Margin(px) ')); - -// autowidth -$omform->addSelectField("$oid.0.autoWidth", array('true'=>'Ja','false'=>'Nein'), array('label'=>'autoWidth ')); - -// fieldset -$omform->addFieldset('Experten - Einstellungen OwlCarousel'); -// html -$omform->addHtml('
'); -// rewind -$omform->addSelectField("$oid.0.rewind", array('true'=>'Ja','false'=>'Nein'), array('label'=>'rewind ')); - -// center -$omform->addSelectField("$oid.0.center", array('false'=>'Nein','true'=>'Ja'), array('label'=>'Center ')); - -// mouseDrag -$omform->addSelectField("$oid.0.mouseDrag", array('true'=>'Ja','false'=>'Nein'), array('label'=>'mouseDrag ')); - -// touchDrag -$omform->addSelectField("$oid.0.touchDrag", array('true'=>'Ja','false'=>'Nein'), array('label'=>'touchDrag ')); - -// pullDrag -$omform->addSelectField("$oid.0.pullDrag", array('true'=>'Ja','false'=>'Nein'), array('label'=>'pullDrag ')); - -// freeDrag -$omform->addSelectField("$oid.0.freeDrag", array('false'=>'Nein','true'=>'Ja'), array('label'=>'freeDrag ')); - -// stagePadding -$omform->addInputField("number","$oid.0.stagePadding", array('label'=>'stagePadding ')); - -// startPosition -$omform->addTextField("$oid.0.startPosition", array('label'=>'startPosition ')); - -// URLhashListener -$omform->addSelectField("$oid.0.URLhashListener", array('false'=>'Nein','true'=>'Ja'), array('label'=>'URLhashListener ')); - -// navText -$omform->addTextField("$oid.0.navText", array('label'=>'navText ')); - -// navElement -$omform->addTextField("$oid.0.navElement", array('label'=>'navElement ')); - -// slideBy -$omform->addTextField("$oid.0.slideBy", array('label'=>'slideBy ')); - -// dotsEach -$omform->addSelectField("$oid.0.dotsEach", array('false'=>'Nein','true'=>'Ja'), array('label'=>'dotsEach ')); - -// lazyLoad -$omform->addSelectField("$oid.0.lazyLoad", array('false'=>'Nein','true'=>'Ja'), array('label'=>'lazyLoad ')); - -// lazyContent - commented out since not implemented yet implemented in Owl Carousel -//$omform->addSelectField("$oid.0.lazyContent", array('false'=>'Nein','true'=>'Ja'), array('label'=>'lazyContent ')); - -// responsiveClass -$omform->addSelectField("$oid.0.responsiveClass", array('true'=>'Ja','false'=>'Nein'), array('label'=>'responsiveClass ')); - -// responsive -$omform->addTextAreaField("$oid.0.responsive", array('label'=>'responsive ')); - -// responsiveRefreshRate -$omform->addInputField("number","$oid.0.responsiveRefreshRate", array('label'=>'responsiveRefreshRate ')); - -// responsiveBaseElement -$omform->addTextField("$oid.0.responsiveBaseElement", array('label'=>'responsiveBaseElement ')); - -// video -$omform->addSelectField("$oid.0.video", array('false'=>'Nein','true'=>'Ja'), array('label'=>'video ')); - -// videoHeight -$omform->addTextField("$oid.0.videoHeight", array('label'=>'videoHeight ')); - -// videoWidth -$omform->addTextField("$oid.0.videoWidth", array('label'=>'videoWidth ')); - -// animateOut -$omform->addTextField("$oid.0.animateOut", array('label'=>'animateOut ')); - -// animateIn -$omform->addTextField("$oid.0.animateIn", array('label'=>'animateIn ')); - -// nestedItemSelector -$omform->addTextField("$oid.0.nestedItemSelector", array('label'=>'nestedItemSelector ')); - -// itemElement -$omform->addTextField("$oid.0.itemElement", array('label'=>'itemElement ')); - -// stageElement -$omform->addTextField("$oid.0.stageElement", array('label'=>'stageElement ')); - -// navContainer -$omform->addTextField("$oid.0.navContainer", array('label'=>'navContainer ')); - -// dotsContainer -$omform->addTextField("$oid.0.dotsContainer", array('label'=>'dotsContainer ')); -// html -$omform->addHtml('
'); - -// fieldset -$omform->addFieldset('CSS und ID setzen um den OwlSlider'); - -// itemElement -$omform->addTextField("$oid.0.cssclasses", array('label'=>'Klassen')); - -// itemElement -$omform->addTextField("$oid.0.cssid", array('label'=>'ID')); - - -echo $omform->show(); - -echo '
-
-'.PHP_EOL; - -?> - - - - diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/mediamanager.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/mediamanager.inc deleted file mode 100644 index d49c81c..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/mediamanager.inc +++ /dev/null @@ -1,109 +0,0 @@ -setTable(rex::getTablePrefix().'media_manager_type'); -$mediamanager_typ->setValue('name','owlCarousel_backend'); -$mediamanager_typ->setValue('description','Zur Darstellung von Bildern im Backend.'); - -try { - $mediamanager_typ->insert(); - echo rex_view::success('Der Media Manager "owlCarousel_backend" Typ wurde angelegt. '); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager "owlCarousel_backend" Typ wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -$mediamanager_typ_id = (int) $mediamanager_typ->getLastId(); - -$mediamanager_typ_effekt = rex_sql::factory(); -$mediamanager_typ_effekt->setTable(rex::getTablePrefix().'media_manager_type_effect'); -$mediamanager_typ_effekt->setValue('type_id', $mediamanager_typ_id); -$mediamanager_typ_effekt->setValue('priority', 1); -$mediamanager_typ_effekt->setValue('effect', 'resize'); -$mediamanager_typ_effekt->setValue('parameters', '{"rex_effect_crop":{"rex_effect_crop_width":"","rex_effect_crop_height":"","rex_effect_crop_offset_width":"","rex_effect_crop_offset_height":"","rex_effect_crop_hpos":"center","rex_effect_crop_vpos":"middle"},"rex_effect_filter_blur":{"rex_effect_filter_blur_repeats":"10","rex_effect_filter_blur_type":"gaussian","rex_effect_filter_blur_smoothit":""},"rex_effect_filter_sharpen":{"rex_effect_filter_sharpen_amount":"80","rex_effect_filter_sharpen_radius":"0.5","rex_effect_filter_sharpen_threshold":"3"},"rex_effect_flip":{"rex_effect_flip_flip":"X"},"rex_effect_header":{"rex_effect_header_download":"open_media","rex_effect_header_cache":"no_cache"},"rex_effect_insert_image":{"rex_effect_insert_image_brandimage":"","rex_effect_insert_image_hpos":"left","rex_effect_insert_image_vpos":"top","rex_effect_insert_image_padding_x":"-10","rex_effect_insert_image_padding_y":"-10"},"rex_effect_mediapath":{"rex_effect_mediapath_mediapath":""},"rex_effect_mirror":{"rex_effect_mirror_height":"","rex_effect_mirror_set_transparent":"colored","rex_effect_mirror_bg_r":"","rex_effect_mirror_bg_g":"","rex_effect_mirror_bg_b":""},"rex_effect_resize":{"rex_effect_resize_width":"250","rex_effect_resize_height":"","rex_effect_resize_style":"maximum","rex_effect_resize_allow_enlarge":"not_enlarge"},"rex_effect_rounded_corners":{"rex_effect_rounded_corners_topleft":"","rex_effect_rounded_corners_topright":"","rex_effect_rounded_corners_bottomleft":"","rex_effect_rounded_corners_bottomright":""},"rex_effect_workspace":{"rex_effect_workspace_width":"","rex_effect_workspace_height":"","rex_effect_workspace_hpos":"left","rex_effect_workspace_vpos":"top","rex_effect_workspace_set_transparent":"colored","rex_effect_workspace_bg_r":"","rex_effect_workspace_bg_g":"","rex_effect_workspace_bg_b":""}}'); - -try { - $mediamanager_typ_effekt->insert(); - echo rex_view::success('Der Media Manager Effekt wurde angelegt und kann konfiguriert werden!'); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager Effekt wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -//owlCarousel_content -$mediamanager_typ = rex_sql::factory(); -$mediamanager_typ->setTable(rex::getTablePrefix().'media_manager_type'); -$mediamanager_typ->setValue('name','owlCarousel_content'); -$mediamanager_typ->setValue('description','Die normale Größe für die Frontend Ausgabe'); - -try { - $mediamanager_typ->insert(); - echo rex_view::success('Der Media Manager "owlCarousel_content" Typ wurde angelegt. '); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager "owlCarousel_content" Typ wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -$mediamanager_typ_id = (int) $mediamanager_typ->getLastId(); - -$mediamanager_typ_effekt = rex_sql::factory(); -$mediamanager_typ_effekt->setTable(rex::getTablePrefix().'media_manager_type_effect'); -$mediamanager_typ_effekt->setValue('type_id', $mediamanager_typ_id); -$mediamanager_typ_effekt->setValue('priority', 1); -$mediamanager_typ_effekt->setValue('effect', 'resize'); -$mediamanager_typ_effekt->setValue('parameters', '{"rex_effect_crop":{"rex_effect_crop_width":"","rex_effect_crop_height":"","rex_effect_crop_offset_width":"","rex_effect_crop_offset_height":"","rex_effect_crop_hpos":"center","rex_effect_crop_vpos":"middle"},"rex_effect_filter_blur":{"rex_effect_filter_blur_repeats":"10","rex_effect_filter_blur_type":"gaussian","rex_effect_filter_blur_smoothit":""},"rex_effect_filter_sharpen":{"rex_effect_filter_sharpen_amount":"80","rex_effect_filter_sharpen_radius":"0.5","rex_effect_filter_sharpen_threshold":"3"},"rex_effect_flip":{"rex_effect_flip_flip":"X"},"rex_effect_header":{"rex_effect_header_download":"open_media","rex_effect_header_cache":"no_cache"},"rex_effect_insert_image":{"rex_effect_insert_image_brandimage":"","rex_effect_insert_image_hpos":"left","rex_effect_insert_image_vpos":"top","rex_effect_insert_image_padding_x":"-10","rex_effect_insert_image_padding_y":"-10"},"rex_effect_mediapath":{"rex_effect_mediapath_mediapath":""},"rex_effect_mirror":{"rex_effect_mirror_height":"","rex_effect_mirror_set_transparent":"colored","rex_effect_mirror_bg_r":"","rex_effect_mirror_bg_g":"","rex_effect_mirror_bg_b":""},"rex_effect_resize":{"rex_effect_resize_width":"1600","rex_effect_resize_height":"","rex_effect_resize_style":"maximum","rex_effect_resize_allow_enlarge":"not_enlarge"},"rex_effect_rounded_corners":{"rex_effect_rounded_corners_topleft":"","rex_effect_rounded_corners_topright":"","rex_effect_rounded_corners_bottomleft":"","rex_effect_rounded_corners_bottomright":""},"rex_effect_workspace":{"rex_effect_workspace_width":"","rex_effect_workspace_height":"","rex_effect_workspace_hpos":"left","rex_effect_workspace_vpos":"top","rex_effect_workspace_set_transparent":"colored","rex_effect_workspace_bg_r":"","rex_effect_workspace_bg_g":"","rex_effect_workspace_bg_b":""}}'); - -try { - $mediamanager_typ_effekt->insert(); - echo rex_view::success('Der Media Manager Effekt wurde angelegt und kann konfiguriert werden!'); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager Effekt wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -//owlCarousel_content_retina -$mediamanager_typ = rex_sql::factory(); -$mediamanager_typ->setTable(rex::getTablePrefix().'media_manager_type'); -$mediamanager_typ->setValue('name','owlCarousel_content_retina'); -$mediamanager_typ->setValue('description','Für das data-src-retina und lazyload'); - -try { - $mediamanager_typ->insert(); - echo rex_view::success('Der Media Manager "owlCarousel_content_retina" Typ wurde angelegt. '); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager "owlCarousel_content_retina" Typ wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -$mediamanager_typ_id = (int) $mediamanager_typ->getLastId(); - -$mediamanager_typ_effekt = rex_sql::factory(); -$mediamanager_typ_effekt->setTable(rex::getTablePrefix().'media_manager_type_effect'); -$mediamanager_typ_effekt->setValue('type_id', $mediamanager_typ_id); -$mediamanager_typ_effekt->setValue('priority', 1); -$mediamanager_typ_effekt->setValue('effect', 'resize'); -$mediamanager_typ_effekt->setValue('parameters', '{"rex_effect_crop":{"rex_effect_crop_width":"","rex_effect_crop_height":"","rex_effect_crop_offset_width":"","rex_effect_crop_offset_height":"","rex_effect_crop_hpos":"center","rex_effect_crop_vpos":"middle"},"rex_effect_filter_blur":{"rex_effect_filter_blur_repeats":"10","rex_effect_filter_blur_type":"gaussian","rex_effect_filter_blur_smoothit":""},"rex_effect_filter_sharpen":{"rex_effect_filter_sharpen_amount":"80","rex_effect_filter_sharpen_radius":"0.5","rex_effect_filter_sharpen_threshold":"3"},"rex_effect_flip":{"rex_effect_flip_flip":"X"},"rex_effect_header":{"rex_effect_header_download":"open_media","rex_effect_header_cache":"no_cache"},"rex_effect_insert_image":{"rex_effect_insert_image_brandimage":"","rex_effect_insert_image_hpos":"left","rex_effect_insert_image_vpos":"top","rex_effect_insert_image_padding_x":"-10","rex_effect_insert_image_padding_y":"-10"},"rex_effect_mediapath":{"rex_effect_mediapath_mediapath":""},"rex_effect_mirror":{"rex_effect_mirror_height":"","rex_effect_mirror_set_transparent":"colored","rex_effect_mirror_bg_r":"","rex_effect_mirror_bg_g":"","rex_effect_mirror_bg_b":""},"rex_effect_resize":{"rex_effect_resize_width":"3200","rex_effect_resize_height":"","rex_effect_resize_style":"maximum","rex_effect_resize_allow_enlarge":"not_enlarge"},"rex_effect_rounded_corners":{"rex_effect_rounded_corners_topleft":"","rex_effect_rounded_corners_topright":"","rex_effect_rounded_corners_bottomleft":"","rex_effect_rounded_corners_bottomright":""},"rex_effect_workspace":{"rex_effect_workspace_width":"","rex_effect_workspace_height":"","rex_effect_workspace_hpos":"left","rex_effect_workspace_vpos":"top","rex_effect_workspace_set_transparent":"colored","rex_effect_workspace_bg_r":"","rex_effect_workspace_bg_g":"","rex_effect_workspace_bg_b":""}}'); - -try { - $mediamanager_typ_effekt->insert(); - echo rex_view::success('Der Media Manager Effekt wurde angelegt und kann konfiguriert werden!'); -} catch (rex_sql_exception $e) { - echo rex_view::warning('Der Media Manager Effekt wurde nicht angelegt.
Wahrscheinlich existiert er schon.'); -} - -//redactor 2 owlCarousel Profile -if (rex_addon::get('redactor2')->isAvailable() && !redactor2::profileExists('owlCarousel')) { - $redactor2_profile = rex_sql::factory(); - $redactor2_profile->setTable(rex::getTablePrefix().'redactor2_profiles'); - $redactor2_profile->setValue('name','owlCarousel'); - $redactor2_profile->setValue('description','Konfiguration für den OwlSlider'); - $redactor2_profile->setValue('urltype','relative'); - $redactor2_profile->setValue('minheight','300'); - $redactor2_profile->setValue('maxheight','800'); - $redactor2_profile->setValue('characterlimit','0'); - $redactor2_profile->setValue('redactor_plugins','alignment,blockquote,italic,bold,underline,deleted,orderedlist,unorderedlist,paragraph,sub,sup,textdirection,fontcolor[Weiss=#ffffff|Schwarz=#000000],fontfamily[Arial|Times],fontsize[12px|15pt|120%],groupheading[1|2|3|4|5|6],grouplink[email|external|internal|media|medialink],redo,undo,cleaner,fullscreen,source'); - $redactor2_profile->setValue('toolbarfixed','0'); - $redactor2_profile->setValue('shortcuts','0'); - - try { - $redactor2_profile->insert(); - echo rex_view::success('Das Redactor Profil "owlCarousel" wurde angelegt. '); - } catch (rex_sql_exception $e) { - echo rex_view::warning('Das Redactor Profil "owlCarousel" wurde nicht angelegt.
Wahrscheinlich existiert es schon.'); - } -} \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/output.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/output.inc deleted file mode 100644 index 06a1a2f..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/output.inc +++ /dev/null @@ -1,152 +0,0 @@ -'; - print_r(rex_var::toArray("REX_VALUE[1]")); - print_r(rex_var::toArray("REX_VALUE[20]")); - echo ''; - } - else { - echo '
';
-            dump(rex_var::toArray("REX_VALUE[1]"));
-            dump(rex_var::toArray("REX_VALUE[20]"));
-            echo '
'; - } - } - - //show what was edited - $output = ''; - - $output .= 'Layout: '.$owlConfiguration[0]['layout'] . '
'; - - foreach($items as $item) { - //get media item - $file = rex_media::get($item['REX_MEDIA_1']); - $mediaPath = $file->getUrl(); - $mediaTitle = $file->getTitle(); - - $output .= '
'; - $output .= '
'; - $output .= ' ' . $mediaTitle . ''; - $output .= '
'; - $output .= '
'; - $output .= ' Text:
' . $item['slidertext']; - $output .= '
'; - $output .= '
'; - $output .= ' Ausrichtung:
'. ($item['textplace'] != '0' ? $item['textplace'] : ''); - $output .= '
'; - $output .= '
'; - $output .= '
'; - } - - print $output; -} -else { - $output = ''; - - //layout config - if($owlConfiguration[0]['layout'] == 'boxed') { - $output .= '
'.PHP_EOL; - $output .= '
'.PHP_EOL; - $output .= '
'.PHP_EOL; - } - - // surrounding container - $output .= ''; - $output .= ''; - - //layout config - if($owlConfiguration[0]['layout'] == 'boxed') { - $output .= '
'.PHP_EOL; - $output .= '
'.PHP_EOL; - $output .= '
'.PHP_EOL; - } - $output .= ''.PHP_EOL; - - //let the owls have it - print $output; - -} - -?> - - - - \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/LICENSE b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/LICENSE deleted file mode 100644 index 699398c..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2014 Owl -Modified work Copyright 2016 David Deutsch - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/README.md b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/README.md deleted file mode 100644 index 21be1f5..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/README.md +++ /dev/null @@ -1,108 +0,0 @@ -# OwlCarousel2 is currently being transferred to a new owner - -Stay tuned while the new owner sorts through some stuff. (Oh, hi, I'm [David](https://github.com/daviddeutsch)!) - -## Owl Carousel 2 Beta - -Touch enabled [jQuery](https://jquery.com/) plugin that lets you create a beautiful, responsive carousel slider. **To get started, check out https://owlcarousel2.github.io/OwlCarousel2/.** - -Please consider that the project is still in beta. The current status of the milestones can be found [here](https://github.com/owlcarousel2/OwlCarousel2/milestones). If you want to use the [latest development](https://github.com/owlcarousel2/OwlCarousel2/archive/develop.zip) see [building](#building). - -## Quick start - -### Install - -This package can be installed with: - -- [npm](https://www.npmjs.com/package/owl.carousel): `npm install --save owl.carousel` -- [bower](http://bower.io/search/?q=owl.carousel): `bower install --save owl.carousel` - -Or download the [latest release](https://github.com/OwlCarousel2/OwlCarousel2/releases). - -### Load - -#### Webpack - -Load the required stylesheet and JS: - -```js -import 'owl.carousel/dist/assets/owl.carousel.css'; -import $ from 'jquery'; -import 'imports?jQuery=jquery!owl.carousel'; -``` - -#### Static HTML - -Put the required stylesheet at the [top](https://developer.yahoo.com/performance/rules.html#css_top) of your markup: - -```html - -``` - -```html - -``` - -**NOTE:** If you want to use the default navigation styles, you will also need to include `owl.theme.default.css`. - - -Put the script at the [bottom](https://developer.yahoo.com/performance/rules.html#js_bottom) of your markup right after jQuery: - -```html - - -``` - -```html - - -``` - -### Usage - -Wrap your items (`div`, `a`, `img`, `span`, `li` etc.) with a container element (`div`, `ul` etc.). Only the class `owl-carousel` is mandatory to apply proper styles: - -```html - -``` -**NOTE:** The `owl-theme` class is optional, but without it, you will need to style navigation features on your own. - - -Call the [plugin](https://learn.jquery.com/plugins/) function and your carousel is ready. - -```javascript -$(document).ready(function(){ - $('.owl-carousel').owlCarousel(); -}); -``` - -## Documentation - -The documentation, included in this repo in the root directory, is built with [Assemble](http://assemble.io/) and publicly available at https://owlcarousel2.github.io/OwlCarousel2/. The documentation may also be run locally. - -## Building - -This package comes with [Grunt](http://gruntjs.com/) and [Bower](http://bower.io/). The following tasks are available: - - * `default` compiles the CSS and JS into `/dist` and builds the doc. - * `dist` compiles the CSS and JS into `/dist` only. - * `watch` watches source files and builds them automatically whenever you save. - * `test` runs [JSHint](http://www.jshint.com/) and [QUnit](http://qunitjs.com/) tests headlessly in [PhantomJS](http://phantomjs.org/). - -To define which plugins are build into the distribution just edit `/_config.json` to fit your needs. - -## Contributing - -Please read [CONTRIBUTING.md](CONTRIBUTING.md). - -## License - -The code and the documentation are released under the [MIT License](LICENSE). diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/ajax-loader.gif b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/ajax-loader.gif deleted file mode 100644 index a152509..0000000 Binary files a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/ajax-loader.gif and /dev/null differ diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.css deleted file mode 100644 index 26ea527..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.css +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -/* - * Owl Carousel - Core - */ -.owl-carousel { - display: none; - width: 100%; - -webkit-tap-highlight-color: transparent; - /* position relative and z-index fix webkit rendering fonts issue */ - position: relative; - z-index: 1; } - .owl-carousel .owl-stage { - position: relative; - -ms-touch-action: pan-Y; } - .owl-carousel .owl-stage:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; } - .owl-carousel .owl-stage-outer { - position: relative; - overflow: hidden; - /* fix for flashing background */ - -webkit-transform: translate3d(0px, 0px, 0px); } - .owl-carousel .owl-item { - position: relative; - min-height: 1px; - float: left; - -webkit-backface-visibility: hidden; - -webkit-tap-highlight-color: transparent; - -webkit-touch-callout: none; } - .owl-carousel .owl-item img { - display: block; - width: 100%; - -webkit-transform-style: preserve-3d; } - .owl-carousel .owl-nav.disabled, - .owl-carousel .owl-dots.disabled { - display: none; } - .owl-carousel .owl-nav .owl-prev, - .owl-carousel .owl-nav .owl-next, - .owl-carousel .owl-dot { - cursor: pointer; - cursor: hand; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .owl-carousel.owl-loaded { - display: block; } - .owl-carousel.owl-loading { - opacity: 0; - display: block; } - .owl-carousel.owl-hidden { - opacity: 0; } - .owl-carousel.owl-refresh .owl-item { - visibility: hidden; } - .owl-carousel.owl-drag .owl-item { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .owl-carousel.owl-grab { - cursor: move; - cursor: grab; } - .owl-carousel.owl-rtl { - direction: rtl; } - .owl-carousel.owl-rtl .owl-item { - float: right; } - -/* No Js */ -.no-js .owl-carousel { - display: block; } - -/* - * Owl Carousel - Animate Plugin - */ -.owl-carousel .animated { - -webkit-animation-duration: 1000ms; - animation-duration: 1000ms; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; } - -.owl-carousel .owl-animated-in { - z-index: 0; } - -.owl-carousel .owl-animated-out { - z-index: 1; } - -.owl-carousel .fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; } - -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; } - 100% { - opacity: 0; } } - -@keyframes fadeOut { - 0% { - opacity: 1; } - 100% { - opacity: 0; } } - -/* - * Owl Carousel - Auto Height Plugin - */ -.owl-height { - transition: height 500ms ease-in-out; } - -/* - * Owl Carousel - Lazy Load Plugin - */ -.owl-carousel .owl-item .owl-lazy { - opacity: 0; - transition: opacity 400ms ease; } - -.owl-carousel .owl-item img.owl-lazy { - -webkit-transform-style: preserve-3d; - transform-style: preserve-3d; } - -/* - * Owl Carousel - Video Plugin - */ -.owl-carousel .owl-video-wrapper { - position: relative; - height: 100%; - background: #000; } - -.owl-carousel .owl-video-play-icon { - position: absolute; - height: 80px; - width: 80px; - left: 50%; - top: 50%; - margin-left: -40px; - margin-top: -40px; - background: url("owl.video.play.png") no-repeat; - cursor: pointer; - z-index: 1; - -webkit-backface-visibility: hidden; - transition: -webkit-transform 100ms ease; - transition: transform 100ms ease; } - -.owl-carousel .owl-video-play-icon:hover { - -webkit-transform: scale(1.3, 1.3); - -ms-transform: scale(1.3, 1.3); - transform: scale(1.3, 1.3); } - -.owl-carousel .owl-video-playing .owl-video-tn, -.owl-carousel .owl-video-playing .owl-video-play-icon { - display: none; } - -.owl-carousel .owl-video-tn { - opacity: 0; - height: 100%; - background-position: center center; - background-repeat: no-repeat; - background-size: contain; - transition: opacity 400ms ease; } - -.owl-carousel .owl-video-frame { - position: relative; - z-index: 1; - height: 100%; - width: 100%; } diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.min.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.min.css deleted file mode 100644 index 7420bb1..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.carousel.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:-webkit-transform .1s ease;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.css deleted file mode 100644 index bcff309..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.css +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -/* - * Default theme - Owl Carousel CSS File - */ -.owl-theme .owl-nav { - margin-top: 10px; - text-align: center; - -webkit-tap-highlight-color: transparent; } - .owl-theme .owl-nav [class*='owl-'] { - color: #FFF; - font-size: 14px; - margin: 5px; - padding: 4px 7px; - background: #D6D6D6; - display: inline-block; - cursor: pointer; - border-radius: 3px; } - .owl-theme .owl-nav [class*='owl-']:hover { - background: #869791; - color: #FFF; - text-decoration: none; } - .owl-theme .owl-nav .disabled { - opacity: 0.5; - cursor: default; } - -.owl-theme .owl-nav.disabled + .owl-dots { - margin-top: 10px; } - -.owl-theme .owl-dots { - text-align: center; - -webkit-tap-highlight-color: transparent; } - .owl-theme .owl-dots .owl-dot { - display: inline-block; - zoom: 1; - *display: inline; } - .owl-theme .owl-dots .owl-dot span { - width: 10px; - height: 10px; - margin: 5px 7px; - background: #D6D6D6; - display: block; - -webkit-backface-visibility: visible; - transition: opacity 200ms ease; - border-radius: 30px; } - .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { - background: #869791; } diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.min.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.min.css deleted file mode 100644 index 150d01c..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.default.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.css deleted file mode 100644 index cf870d6..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.css +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -/* - * Green theme - Owl Carousel CSS File - */ -.owl-theme .owl-nav { - margin-top: 10px; - text-align: center; - -webkit-tap-highlight-color: transparent; } - .owl-theme .owl-nav [class*='owl-'] { - color: #FFF; - font-size: 14px; - margin: 5px; - padding: 4px 7px; - background: #D6D6D6; - display: inline-block; - cursor: pointer; - border-radius: 3px; } - .owl-theme .owl-nav [class*='owl-']:hover { - background: #4DC7A0; - color: #FFF; - text-decoration: none; } - .owl-theme .owl-nav .disabled { - opacity: 0.5; - cursor: default; } - -.owl-theme .owl-nav.disabled + .owl-dots { - margin-top: 10px; } - -.owl-theme .owl-dots { - text-align: center; - -webkit-tap-highlight-color: transparent; } - .owl-theme .owl-dots .owl-dot { - display: inline-block; - zoom: 1; - *display: inline; } - .owl-theme .owl-dots .owl-dot span { - width: 10px; - height: 10px; - margin: 5px 7px; - background: #D6D6D6; - display: block; - -webkit-backface-visibility: visible; - transition: opacity 200ms ease; - border-radius: 30px; } - .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { - background: #4DC7A0; } diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.min.css b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.min.css deleted file mode 100644 index 2c51e13..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.theme.green.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0} \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.video.play.png b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.video.play.png deleted file mode 100644 index 98a8ea8..0000000 Binary files a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/assets/owl.video.play.png and /dev/null differ diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.js b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.js deleted file mode 100644 index b112f2f..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.js +++ /dev/null @@ -1,3273 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -/** - * Owl carousel - * @version 2.1.6 - * @author Bartosz Wojciechowski - * @author David Deutsch - * @license The MIT License (MIT) - * @todo Lazy Load Icon - * @todo prevent animationend bubling - * @todo itemsScaleUp - * @todo Test Zepto - * @todo stagePadding calculate wrong active classes - */ -;(function($, window, document, undefined) { - - /** - * Creates a carousel. - * @class The Owl Carousel. - * @public - * @param {HTMLElement|jQuery} element - The element to create the carousel for. - * @param {Object} [options] - The options - */ - function Owl(element, options) { - - /** - * Current settings for the carousel. - * @public - */ - this.settings = null; - - /** - * Current options set by the caller including defaults. - * @public - */ - this.options = $.extend({}, Owl.Defaults, options); - - /** - * Plugin element. - * @public - */ - this.$element = $(element); - - /** - * Proxied event handlers. - * @protected - */ - this._handlers = {}; - - /** - * References to the running plugins of this carousel. - * @protected - */ - this._plugins = {}; - - /** - * Currently suppressed events to prevent them from beeing retriggered. - * @protected - */ - this._supress = {}; - - /** - * Absolute current position. - * @protected - */ - this._current = null; - - /** - * Animation speed in milliseconds. - * @protected - */ - this._speed = null; - - /** - * Coordinates of all items in pixel. - * @todo The name of this member is missleading. - * @protected - */ - this._coordinates = []; - - /** - * Current breakpoint. - * @todo Real media queries would be nice. - * @protected - */ - this._breakpoint = null; - - /** - * Current width of the plugin element. - */ - this._width = null; - - /** - * All real items. - * @protected - */ - this._items = []; - - /** - * All cloned items. - * @protected - */ - this._clones = []; - - /** - * Merge values of all items. - * @todo Maybe this could be part of a plugin. - * @protected - */ - this._mergers = []; - - /** - * Widths of all items. - */ - this._widths = []; - - /** - * Invalidated parts within the update process. - * @protected - */ - this._invalidated = {}; - - /** - * Ordered list of workers for the update process. - * @protected - */ - this._pipe = []; - - /** - * Current state information for the drag operation. - * @todo #261 - * @protected - */ - this._drag = { - time: null, - target: null, - pointer: null, - stage: { - start: null, - current: null - }, - direction: null - }; - - /** - * Current state information and their tags. - * @type {Object} - * @protected - */ - this._states = { - current: {}, - tags: { - 'initializing': [ 'busy' ], - 'animating': [ 'busy' ], - 'dragging': [ 'interacting' ] - } - }; - - $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { - this._handlers[handler] = $.proxy(this[handler], this); - }, this)); - - $.each(Owl.Plugins, $.proxy(function(key, plugin) { - this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] - = new plugin(this); - }, this)); - - $.each(Owl.Workers, $.proxy(function(priority, worker) { - this._pipe.push({ - 'filter': worker.filter, - 'run': $.proxy(worker.run, this) - }); - }, this)); - - this.setup(); - this.initialize(); - } - - /** - * Default options for the carousel. - * @public - */ - Owl.Defaults = { - items: 3, - loop: false, - center: false, - rewind: false, - - mouseDrag: true, - touchDrag: true, - pullDrag: true, - freeDrag: false, - - margin: 0, - stagePadding: 0, - - merge: false, - mergeFit: true, - autoWidth: false, - - startPosition: 0, - rtl: false, - - smartSpeed: 250, - fluidSpeed: false, - dragEndSpeed: false, - - responsive: {}, - responsiveRefreshRate: 200, - responsiveBaseElement: window, - - fallbackEasing: 'swing', - - info: false, - - nestedItemSelector: false, - itemElement: 'div', - stageElement: 'div', - - refreshClass: 'owl-refresh', - loadedClass: 'owl-loaded', - loadingClass: 'owl-loading', - rtlClass: 'owl-rtl', - responsiveClass: 'owl-responsive', - dragClass: 'owl-drag', - itemClass: 'owl-item', - stageClass: 'owl-stage', - stageOuterClass: 'owl-stage-outer', - grabClass: 'owl-grab' - }; - - /** - * Enumeration for width. - * @public - * @readonly - * @enum {String} - */ - Owl.Width = { - Default: 'default', - Inner: 'inner', - Outer: 'outer' - }; - - /** - * Enumeration for types. - * @public - * @readonly - * @enum {String} - */ - Owl.Type = { - Event: 'event', - State: 'state' - }; - - /** - * Contains all registered plugins. - * @public - */ - Owl.Plugins = {}; - - /** - * List of workers involved in the update process. - */ - Owl.Workers = [ { - filter: [ 'width', 'settings' ], - run: function() { - this._width = this.$element.width(); - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function(cache) { - cache.current = this._items && this._items[this.relative(this._current)]; - } - }, { - filter: [ 'items', 'settings' ], - run: function() { - this.$stage.children('.cloned').remove(); - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function(cache) { - var margin = this.settings.margin || '', - grid = !this.settings.autoWidth, - rtl = this.settings.rtl, - css = { - 'width': 'auto', - 'margin-left': rtl ? margin : '', - 'margin-right': rtl ? '' : margin - }; - - !grid && this.$stage.children().css(css); - - cache.css = css; - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function(cache) { - var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, - merge = null, - iterator = this._items.length, - grid = !this.settings.autoWidth, - widths = []; - - cache.items = { - merge: false, - width: width - }; - - while (iterator--) { - merge = this._mergers[iterator]; - merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; - - cache.items.merge = merge > 1 || cache.items.merge; - - widths[iterator] = !grid ? this._items[iterator].width() : width * merge; - } - - this._widths = widths; - } - }, { - filter: [ 'items', 'settings' ], - run: function() { - var clones = [], - items = this._items, - settings = this.settings, - view = Math.max(settings.items * 2, 4), - size = Math.ceil(items.length / 2) * 2, - repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, - append = '', - prepend = ''; - - repeat /= 2; - - while (repeat--) { - clones.push(this.normalize(clones.length / 2, true)); - append = append + items[clones[clones.length - 1]][0].outerHTML; - clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); - prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; - } - - this._clones = clones; - - $(append).addClass('cloned').appendTo(this.$stage); - $(prepend).addClass('cloned').prependTo(this.$stage); - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function() { - var rtl = this.settings.rtl ? 1 : -1, - size = this._clones.length + this._items.length, - iterator = -1, - previous = 0, - current = 0, - coordinates = []; - - while (++iterator < size) { - previous = coordinates[iterator - 1] || 0; - current = this._widths[this.relative(iterator)] + this.settings.margin; - coordinates.push(previous + current * rtl); - } - - this._coordinates = coordinates; - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function() { - var padding = this.settings.stagePadding, - coordinates = this._coordinates, - css = { - 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, - 'padding-left': padding || '', - 'padding-right': padding || '' - }; - - this.$stage.css(css); - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function(cache) { - var iterator = this._coordinates.length, - grid = !this.settings.autoWidth, - items = this.$stage.children(); - - if (grid && cache.items.merge) { - while (iterator--) { - cache.css.width = this._widths[this.relative(iterator)]; - items.eq(iterator).css(cache.css); - } - } else if (grid) { - cache.css.width = cache.items.width; - items.css(cache.css); - } - } - }, { - filter: [ 'items' ], - run: function() { - this._coordinates.length < 1 && this.$stage.removeAttr('style'); - } - }, { - filter: [ 'width', 'items', 'settings' ], - run: function(cache) { - cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; - cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); - this.reset(cache.current); - } - }, { - filter: [ 'position' ], - run: function() { - this.animate(this.coordinates(this._current)); - } - }, { - filter: [ 'width', 'position', 'items', 'settings' ], - run: function() { - var rtl = this.settings.rtl ? 1 : -1, - padding = this.settings.stagePadding * 2, - begin = this.coordinates(this.current()) + padding, - end = begin + this.width() * rtl, - inner, outer, matches = [], i, n; - - for (i = 0, n = this._coordinates.length; i < n; i++) { - inner = this._coordinates[i - 1] || 0; - outer = Math.abs(this._coordinates[i]) + padding * rtl; - - if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) - || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { - matches.push(i); - } - } - - this.$stage.children('.active').removeClass('active'); - this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); - - if (this.settings.center) { - this.$stage.children('.center').removeClass('center'); - this.$stage.children().eq(this.current()).addClass('center'); - } - } - } ]; - - /** - * Initializes the carousel. - * @protected - */ - Owl.prototype.initialize = function() { - this.enter('initializing'); - this.trigger('initialize'); - - this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); - - if (this.settings.autoWidth && !this.is('pre-loading')) { - var imgs, nestedSelector, width; - imgs = this.$element.find('img'); - nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; - width = this.$element.children(nestedSelector).width(); - - if (imgs.length && width <= 0) { - this.preloadAutoWidthImages(imgs); - } - } - - this.$element.addClass(this.options.loadingClass); - - // create stage - this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>') - .wrap('
'); - - // append stage - this.$element.append(this.$stage.parent()); - - // append content - this.replace(this.$element.children().not(this.$stage.parent())); - - // check visibility - if (this.$element.is(':visible')) { - // update view - this.refresh(); - } else { - // invalidate width - this.invalidate('width'); - } - - this.$element - .removeClass(this.options.loadingClass) - .addClass(this.options.loadedClass); - - // register event handlers - this.registerEventHandlers(); - - this.leave('initializing'); - this.trigger('initialized'); - }; - - /** - * Setups the current settings. - * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? - * @todo Support for media queries by using `matchMedia` would be nice. - * @public - */ - Owl.prototype.setup = function() { - var viewport = this.viewport(), - overwrites = this.options.responsive, - match = -1, - settings = null; - - if (!overwrites) { - settings = $.extend({}, this.options); - } else { - $.each(overwrites, function(breakpoint) { - if (breakpoint <= viewport && breakpoint > match) { - match = Number(breakpoint); - } - }); - - settings = $.extend({}, this.options, overwrites[match]); - if (typeof settings.stagePadding === 'function') { - settings.stagePadding = settings.stagePadding(); - } - delete settings.responsive; - - // responsive class - if (settings.responsiveClass) { - this.$element.attr('class', - this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) - ); - } - } - - this.trigger('change', { property: { name: 'settings', value: settings } }); - this._breakpoint = match; - this.settings = settings; - this.invalidate('settings'); - this.trigger('changed', { property: { name: 'settings', value: this.settings } }); - }; - - /** - * Updates option logic if necessery. - * @protected - */ - Owl.prototype.optionsLogic = function() { - if (this.settings.autoWidth) { - this.settings.stagePadding = false; - this.settings.merge = false; - } - }; - - /** - * Prepares an item before add. - * @todo Rename event parameter `content` to `item`. - * @protected - * @returns {jQuery|HTMLElement} - The item container. - */ - Owl.prototype.prepare = function(item) { - var event = this.trigger('prepare', { content: item }); - - if (!event.data) { - event.data = $('<' + this.settings.itemElement + '/>') - .addClass(this.options.itemClass).append(item) - } - - this.trigger('prepared', { content: event.data }); - - return event.data; - }; - - /** - * Updates the view. - * @public - */ - Owl.prototype.update = function() { - var i = 0, - n = this._pipe.length, - filter = $.proxy(function(p) { return this[p] }, this._invalidated), - cache = {}; - - while (i < n) { - if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { - this._pipe[i].run(cache); - } - i++; - } - - this._invalidated = {}; - - !this.is('valid') && this.enter('valid'); - }; - - /** - * Gets the width of the view. - * @public - * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. - * @returns {Number} - The width of the view in pixel. - */ - Owl.prototype.width = function(dimension) { - dimension = dimension || Owl.Width.Default; - switch (dimension) { - case Owl.Width.Inner: - case Owl.Width.Outer: - return this._width; - default: - return this._width - this.settings.stagePadding * 2 + this.settings.margin; - } - }; - - /** - * Refreshes the carousel primarily for adaptive purposes. - * @public - */ - Owl.prototype.refresh = function() { - this.enter('refreshing'); - this.trigger('refresh'); - - this.setup(); - - this.optionsLogic(); - - this.$element.addClass(this.options.refreshClass); - - this.update(); - - this.$element.removeClass(this.options.refreshClass); - - this.leave('refreshing'); - this.trigger('refreshed'); - }; - - /** - * Checks window `resize` event. - * @protected - */ - Owl.prototype.onThrottledResize = function() { - window.clearTimeout(this.resizeTimer); - this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); - }; - - /** - * Checks window `resize` event. - * @protected - */ - Owl.prototype.onResize = function() { - if (!this._items.length) { - return false; - } - - if (this._width === this.$element.width()) { - return false; - } - - if (!this.$element.is(':visible')) { - return false; - } - - this.enter('resizing'); - - if (this.trigger('resize').isDefaultPrevented()) { - this.leave('resizing'); - return false; - } - - this.invalidate('width'); - - this.refresh(); - - this.leave('resizing'); - this.trigger('resized'); - }; - - /** - * Registers event handlers. - * @todo Check `msPointerEnabled` - * @todo #261 - * @protected - */ - Owl.prototype.registerEventHandlers = function() { - if ($.support.transition) { - this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); - } - - if (this.settings.responsive !== false) { - this.on(window, 'resize', this._handlers.onThrottledResize); - } - - if (this.settings.mouseDrag) { - this.$element.addClass(this.options.dragClass); - this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); - this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); - } - - if (this.settings.touchDrag){ - this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); - this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); - } - }; - - /** - * Handles `touchstart` and `mousedown` events. - * @todo Horizontal swipe threshold as option - * @todo #261 - * @protected - * @param {Event} event - The event arguments. - */ - Owl.prototype.onDragStart = function(event) { - var stage = null; - - if (event.which === 3) { - return; - } - - if ($.support.transform) { - stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); - stage = { - x: stage[stage.length === 16 ? 12 : 4], - y: stage[stage.length === 16 ? 13 : 5] - }; - } else { - stage = this.$stage.position(); - stage = { - x: this.settings.rtl ? - stage.left + this.$stage.width() - this.width() + this.settings.margin : - stage.left, - y: stage.top - }; - } - - if (this.is('animating')) { - $.support.transform ? this.animate(stage.x) : this.$stage.stop() - this.invalidate('position'); - } - - this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); - - this.speed(0); - - this._drag.time = new Date().getTime(); - this._drag.target = $(event.target); - this._drag.stage.start = stage; - this._drag.stage.current = stage; - this._drag.pointer = this.pointer(event); - - $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); - - $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { - var delta = this.difference(this._drag.pointer, this.pointer(event)); - - $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); - - if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { - return; - } - - event.preventDefault(); - - this.enter('dragging'); - this.trigger('drag'); - }, this)); - }; - - /** - * Handles the `touchmove` and `mousemove` events. - * @todo #261 - * @protected - * @param {Event} event - The event arguments. - */ - Owl.prototype.onDragMove = function(event) { - var minimum = null, - maximum = null, - pull = null, - delta = this.difference(this._drag.pointer, this.pointer(event)), - stage = this.difference(this._drag.stage.start, delta); - - if (!this.is('dragging')) { - return; - } - - event.preventDefault(); - - if (this.settings.loop) { - minimum = this.coordinates(this.minimum()); - maximum = this.coordinates(this.maximum() + 1) - minimum; - stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; - } else { - minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); - maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); - pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; - stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); - } - - this._drag.stage.current = stage; - - this.animate(stage.x); - }; - - /** - * Handles the `touchend` and `mouseup` events. - * @todo #261 - * @todo Threshold for click event - * @protected - * @param {Event} event - The event arguments. - */ - Owl.prototype.onDragEnd = function(event) { - var delta = this.difference(this._drag.pointer, this.pointer(event)), - stage = this._drag.stage.current, - direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; - - $(document).off('.owl.core'); - - this.$element.removeClass(this.options.grabClass); - - if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { - this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); - this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); - this.invalidate('position'); - this.update(); - - this._drag.direction = direction; - - if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { - this._drag.target.one('click.owl.core', function() { return false; }); - } - } - - if (!this.is('dragging')) { - return; - } - - this.leave('dragging'); - this.trigger('dragged'); - }; - - /** - * Gets absolute position of the closest item for a coordinate. - * @todo Setting `freeDrag` makes `closest` not reusable. See #165. - * @protected - * @param {Number} coordinate - The coordinate in pixel. - * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. - * @return {Number} - The absolute position of the closest item. - */ - Owl.prototype.closest = function(coordinate, direction) { - var position = -1, - pull = 30, - width = this.width(), - coordinates = this.coordinates(); - - if (!this.settings.freeDrag) { - // check closest item - $.each(coordinates, $.proxy(function(index, value) { - // on a left pull, check on current index - if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { - position = index; - // on a right pull, check on previous index - // to do so, subtract width from value and set position = index + 1 - } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { - position = index + 1; - } else if (this.op(coordinate, '<', value) - && this.op(coordinate, '>', coordinates[index + 1] || value - width)) { - position = direction === 'left' ? index + 1 : index; - } - return position === -1; - }, this)); - } - - if (!this.settings.loop) { - // non loop boundries - if (this.op(coordinate, '>', coordinates[this.minimum()])) { - position = coordinate = this.minimum(); - } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { - position = coordinate = this.maximum(); - } - } - - return position; - }; - - /** - * Animates the stage. - * @todo #270 - * @public - * @param {Number} coordinate - The coordinate in pixels. - */ - Owl.prototype.animate = function(coordinate) { - var animate = this.speed() > 0; - - this.is('animating') && this.onTransitionEnd(); - - if (animate) { - this.enter('animating'); - this.trigger('translate'); - } - - if ($.support.transform3d && $.support.transition) { - this.$stage.css({ - transform: 'translate3d(' + coordinate + 'px,0px,0px)', - transition: (this.speed() / 1000) + 's' - }); - } else if (animate) { - this.$stage.animate({ - left: coordinate + 'px' - }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); - } else { - this.$stage.css({ - left: coordinate + 'px' - }); - } - }; - - /** - * Checks whether the carousel is in a specific state or not. - * @param {String} state - The state to check. - * @returns {Boolean} - The flag which indicates if the carousel is busy. - */ - Owl.prototype.is = function(state) { - return this._states.current[state] && this._states.current[state] > 0; - }; - - /** - * Sets the absolute position of the current item. - * @public - * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. - * @returns {Number} - The absolute position of the current item. - */ - Owl.prototype.current = function(position) { - if (position === undefined) { - return this._current; - } - - if (this._items.length === 0) { - return undefined; - } - - position = this.normalize(position); - - if (this._current !== position) { - var event = this.trigger('change', { property: { name: 'position', value: position } }); - - if (event.data !== undefined) { - position = this.normalize(event.data); - } - - this._current = position; - - this.invalidate('position'); - - this.trigger('changed', { property: { name: 'position', value: this._current } }); - } - - return this._current; - }; - - /** - * Invalidates the given part of the update routine. - * @param {String} [part] - The part to invalidate. - * @returns {Array.} - The invalidated parts. - */ - Owl.prototype.invalidate = function(part) { - if ($.type(part) === 'string') { - this._invalidated[part] = true; - this.is('valid') && this.leave('valid'); - } - return $.map(this._invalidated, function(v, i) { return i }); - }; - - /** - * Resets the absolute position of the current item. - * @public - * @param {Number} position - The absolute position of the new item. - */ - Owl.prototype.reset = function(position) { - position = this.normalize(position); - - if (position === undefined) { - return; - } - - this._speed = 0; - this._current = position; - - this.suppress([ 'translate', 'translated' ]); - - this.animate(this.coordinates(position)); - - this.release([ 'translate', 'translated' ]); - }; - - /** - * Normalizes an absolute or a relative position of an item. - * @public - * @param {Number} position - The absolute or relative position to normalize. - * @param {Boolean} [relative=false] - Whether the given position is relative or not. - * @returns {Number} - The normalized position. - */ - Owl.prototype.normalize = function(position, relative) { - var n = this._items.length, - m = relative ? 0 : this._clones.length; - - if (!this.isNumeric(position) || n < 1) { - position = undefined; - } else if (position < 0 || position >= n + m) { - position = ((position - m / 2) % n + n) % n + m / 2; - } - - return position; - }; - - /** - * Converts an absolute position of an item into a relative one. - * @public - * @param {Number} position - The absolute position to convert. - * @returns {Number} - The converted position. - */ - Owl.prototype.relative = function(position) { - position -= this._clones.length / 2; - return this.normalize(position, true); - }; - - /** - * Gets the maximum position for the current item. - * @public - * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. - * @returns {Number} - */ - Owl.prototype.maximum = function(relative) { - var settings = this.settings, - maximum = this._coordinates.length, - iterator, - reciprocalItemsWidth, - elementWidth; - - if (settings.loop) { - maximum = this._clones.length / 2 + this._items.length - 1; - } else if (settings.autoWidth || settings.merge) { - iterator = this._items.length; - reciprocalItemsWidth = this._items[--iterator].width(); - elementWidth = this.$element.width(); - while (iterator--) { - reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; - if (reciprocalItemsWidth > elementWidth) { - break; - } - } - maximum = iterator + 1; - } else if (settings.center) { - maximum = this._items.length - 1; - } else { - maximum = this._items.length - settings.items; - } - - if (relative) { - maximum -= this._clones.length / 2; - } - - return Math.max(maximum, 0); - }; - - /** - * Gets the minimum position for the current item. - * @public - * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. - * @returns {Number} - */ - Owl.prototype.minimum = function(relative) { - return relative ? 0 : this._clones.length / 2; - }; - - /** - * Gets an item at the specified relative position. - * @public - * @param {Number} [position] - The relative position of the item. - * @return {jQuery|Array.} - The item at the given position or all items if no position was given. - */ - Owl.prototype.items = function(position) { - if (position === undefined) { - return this._items.slice(); - } - - position = this.normalize(position, true); - return this._items[position]; - }; - - /** - * Gets an item at the specified relative position. - * @public - * @param {Number} [position] - The relative position of the item. - * @return {jQuery|Array.} - The item at the given position or all items if no position was given. - */ - Owl.prototype.mergers = function(position) { - if (position === undefined) { - return this._mergers.slice(); - } - - position = this.normalize(position, true); - return this._mergers[position]; - }; - - /** - * Gets the absolute positions of clones for an item. - * @public - * @param {Number} [position] - The relative position of the item. - * @returns {Array.} - The absolute positions of clones for the item or all if no position was given. - */ - Owl.prototype.clones = function(position) { - var odd = this._clones.length / 2, - even = odd + this._items.length, - map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; - - if (position === undefined) { - return $.map(this._clones, function(v, i) { return map(i) }); - } - - return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); - }; - - /** - * Sets the current animation speed. - * @public - * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. - * @returns {Number} - The current animation speed in milliseconds. - */ - Owl.prototype.speed = function(speed) { - if (speed !== undefined) { - this._speed = speed; - } - - return this._speed; - }; - - /** - * Gets the coordinate of an item. - * @todo The name of this method is missleanding. - * @public - * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. - * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates. - */ - Owl.prototype.coordinates = function(position) { - var multiplier = 1, - newPosition = position - 1, - coordinate; - - if (position === undefined) { - return $.map(this._coordinates, $.proxy(function(coordinate, index) { - return this.coordinates(index); - }, this)); - } - - if (this.settings.center) { - if (this.settings.rtl) { - multiplier = -1; - newPosition = position + 1; - } - - coordinate = this._coordinates[position]; - coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; - } else { - coordinate = this._coordinates[newPosition] || 0; - } - - coordinate = Math.ceil(coordinate); - - return coordinate; - }; - - /** - * Calculates the speed for a translation. - * @protected - * @param {Number} from - The absolute position of the start item. - * @param {Number} to - The absolute position of the target item. - * @param {Number} [factor=undefined] - The time factor in milliseconds. - * @returns {Number} - The time in milliseconds for the translation. - */ - Owl.prototype.duration = function(from, to, factor) { - if (factor === 0) { - return 0; - } - - return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); - }; - - /** - * Slides to the specified item. - * @public - * @param {Number} position - The position of the item. - * @param {Number} [speed] - The time in milliseconds for the transition. - */ - Owl.prototype.to = function(position, speed) { - var current = this.current(), - revert = null, - distance = position - this.relative(current), - direction = (distance > 0) - (distance < 0), - items = this._items.length, - minimum = this.minimum(), - maximum = this.maximum(); - - if (this.settings.loop) { - if (!this.settings.rewind && Math.abs(distance) > items / 2) { - distance += direction * -1 * items; - } - - position = current + distance; - revert = ((position - minimum) % items + items) % items + minimum; - - if (revert !== position && revert - distance <= maximum && revert - distance > 0) { - current = revert - distance; - position = revert; - this.reset(current); - } - } else if (this.settings.rewind) { - maximum += 1; - position = (position % maximum + maximum) % maximum; - } else { - position = Math.max(minimum, Math.min(maximum, position)); - } - - this.speed(this.duration(current, position, speed)); - this.current(position); - - if (this.$element.is(':visible')) { - this.update(); - } - }; - - /** - * Slides to the next item. - * @public - * @param {Number} [speed] - The time in milliseconds for the transition. - */ - Owl.prototype.next = function(speed) { - speed = speed || false; - this.to(this.relative(this.current()) + 1, speed); - }; - - /** - * Slides to the previous item. - * @public - * @param {Number} [speed] - The time in milliseconds for the transition. - */ - Owl.prototype.prev = function(speed) { - speed = speed || false; - this.to(this.relative(this.current()) - 1, speed); - }; - - /** - * Handles the end of an animation. - * @protected - * @param {Event} event - The event arguments. - */ - Owl.prototype.onTransitionEnd = function(event) { - - // if css2 animation then event object is undefined - if (event !== undefined) { - event.stopPropagation(); - - // Catch only owl-stage transitionEnd event - if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { - return false; - } - } - - this.leave('animating'); - this.trigger('translated'); - }; - - /** - * Gets viewport width. - * @protected - * @return {Number} - The width in pixel. - */ - Owl.prototype.viewport = function() { - var width; - if (this.options.responsiveBaseElement !== window) { - width = $(this.options.responsiveBaseElement).width(); - } else if (window.innerWidth) { - width = window.innerWidth; - } else if (document.documentElement && document.documentElement.clientWidth) { - width = document.documentElement.clientWidth; - } else { - throw 'Can not detect viewport width.'; - } - return width; - }; - - /** - * Replaces the current content. - * @public - * @param {HTMLElement|jQuery|String} content - The new content. - */ - Owl.prototype.replace = function(content) { - this.$stage.empty(); - this._items = []; - - if (content) { - content = (content instanceof jQuery) ? content : $(content); - } - - if (this.settings.nestedItemSelector) { - content = content.find('.' + this.settings.nestedItemSelector); - } - - content.filter(function() { - return this.nodeType === 1; - }).each($.proxy(function(index, item) { - item = this.prepare(item); - this.$stage.append(item); - this._items.push(item); - this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); - }, this)); - - this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); - - this.invalidate('items'); - }; - - /** - * Adds an item. - * @todo Use `item` instead of `content` for the event arguments. - * @public - * @param {HTMLElement|jQuery|String} content - The item content to add. - * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. - */ - Owl.prototype.add = function(content, position) { - var current = this.relative(this._current); - - position = position === undefined ? this._items.length : this.normalize(position, true); - content = content instanceof jQuery ? content : $(content); - - this.trigger('add', { content: content, position: position }); - - content = this.prepare(content); - - if (this._items.length === 0 || position === this._items.length) { - this._items.length === 0 && this.$stage.append(content); - this._items.length !== 0 && this._items[position - 1].after(content); - this._items.push(content); - this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); - } else { - this._items[position].before(content); - this._items.splice(position, 0, content); - this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); - } - - this._items[current] && this.reset(this._items[current].index()); - - this.invalidate('items'); - - this.trigger('added', { content: content, position: position }); - }; - - /** - * Removes an item by its position. - * @todo Use `item` instead of `content` for the event arguments. - * @public - * @param {Number} position - The relative position of the item to remove. - */ - Owl.prototype.remove = function(position) { - position = this.normalize(position, true); - - if (position === undefined) { - return; - } - - this.trigger('remove', { content: this._items[position], position: position }); - - this._items[position].remove(); - this._items.splice(position, 1); - this._mergers.splice(position, 1); - - this.invalidate('items'); - - this.trigger('removed', { content: null, position: position }); - }; - - /** - * Preloads images with auto width. - * @todo Replace by a more generic approach - * @protected - */ - Owl.prototype.preloadAutoWidthImages = function(images) { - images.each($.proxy(function(i, element) { - this.enter('pre-loading'); - element = $(element); - $(new Image()).one('load', $.proxy(function(e) { - element.attr('src', e.target.src); - element.css('opacity', 1); - this.leave('pre-loading'); - !this.is('pre-loading') && !this.is('initializing') && this.refresh(); - }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); - }, this)); - }; - - /** - * Destroys the carousel. - * @public - */ - Owl.prototype.destroy = function() { - - this.$element.off('.owl.core'); - this.$stage.off('.owl.core'); - $(document).off('.owl.core'); - - if (this.settings.responsive !== false) { - window.clearTimeout(this.resizeTimer); - this.off(window, 'resize', this._handlers.onThrottledResize); - } - - for (var i in this._plugins) { - this._plugins[i].destroy(); - } - - this.$stage.children('.cloned').remove(); - - this.$stage.unwrap(); - this.$stage.children().contents().unwrap(); - this.$stage.children().unwrap(); - - this.$element - .removeClass(this.options.refreshClass) - .removeClass(this.options.loadingClass) - .removeClass(this.options.loadedClass) - .removeClass(this.options.rtlClass) - .removeClass(this.options.dragClass) - .removeClass(this.options.grabClass) - .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) - .removeData('owl.carousel'); - }; - - /** - * Operators to calculate right-to-left and left-to-right. - * @protected - * @param {Number} [a] - The left side operand. - * @param {String} [o] - The operator. - * @param {Number} [b] - The right side operand. - */ - Owl.prototype.op = function(a, o, b) { - var rtl = this.settings.rtl; - switch (o) { - case '<': - return rtl ? a > b : a < b; - case '>': - return rtl ? a < b : a > b; - case '>=': - return rtl ? a <= b : a >= b; - case '<=': - return rtl ? a >= b : a <= b; - default: - break; - } - }; - - /** - * Attaches to an internal event. - * @protected - * @param {HTMLElement} element - The event source. - * @param {String} event - The event name. - * @param {Function} listener - The event handler to attach. - * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. - */ - Owl.prototype.on = function(element, event, listener, capture) { - if (element.addEventListener) { - element.addEventListener(event, listener, capture); - } else if (element.attachEvent) { - element.attachEvent('on' + event, listener); - } - }; - - /** - * Detaches from an internal event. - * @protected - * @param {HTMLElement} element - The event source. - * @param {String} event - The event name. - * @param {Function} listener - The attached event handler to detach. - * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. - */ - Owl.prototype.off = function(element, event, listener, capture) { - if (element.removeEventListener) { - element.removeEventListener(event, listener, capture); - } else if (element.detachEvent) { - element.detachEvent('on' + event, listener); - } - }; - - /** - * Triggers a public event. - * @todo Remove `status`, `relatedTarget` should be used instead. - * @protected - * @param {String} name - The event name. - * @param {*} [data=null] - The event data. - * @param {String} [namespace=carousel] - The event namespace. - * @param {String} [state] - The state which is associated with the event. - * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. - * @returns {Event} - The event arguments. - */ - Owl.prototype.trigger = function(name, data, namespace, state, enter) { - var status = { - item: { count: this._items.length, index: this.current() } - }, handler = $.camelCase( - $.grep([ 'on', name, namespace ], function(v) { return v }) - .join('-').toLowerCase() - ), event = $.Event( - [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), - $.extend({ relatedTarget: this }, status, data) - ); - - if (!this._supress[name]) { - $.each(this._plugins, function(name, plugin) { - if (plugin.onTrigger) { - plugin.onTrigger(event); - } - }); - - this.register({ type: Owl.Type.Event, name: name }); - this.$element.trigger(event); - - if (this.settings && typeof this.settings[handler] === 'function') { - this.settings[handler].call(this, event); - } - } - - return event; - }; - - /** - * Enters a state. - * @param name - The state name. - */ - Owl.prototype.enter = function(name) { - $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { - if (this._states.current[name] === undefined) { - this._states.current[name] = 0; - } - - this._states.current[name]++; - }, this)); - }; - - /** - * Leaves a state. - * @param name - The state name. - */ - Owl.prototype.leave = function(name) { - $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { - this._states.current[name]--; - }, this)); - }; - - /** - * Registers an event or state. - * @public - * @param {Object} object - The event or state to register. - */ - Owl.prototype.register = function(object) { - if (object.type === Owl.Type.Event) { - if (!$.event.special[object.name]) { - $.event.special[object.name] = {}; - } - - if (!$.event.special[object.name].owl) { - var _default = $.event.special[object.name]._default; - $.event.special[object.name]._default = function(e) { - if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { - return _default.apply(this, arguments); - } - return e.namespace && e.namespace.indexOf('owl') > -1; - }; - $.event.special[object.name].owl = true; - } - } else if (object.type === Owl.Type.State) { - if (!this._states.tags[object.name]) { - this._states.tags[object.name] = object.tags; - } else { - this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); - } - - this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { - return $.inArray(tag, this._states.tags[object.name]) === i; - }, this)); - } - }; - - /** - * Suppresses events. - * @protected - * @param {Array.} events - The events to suppress. - */ - Owl.prototype.suppress = function(events) { - $.each(events, $.proxy(function(index, event) { - this._supress[event] = true; - }, this)); - }; - - /** - * Releases suppressed events. - * @protected - * @param {Array.} events - The events to release. - */ - Owl.prototype.release = function(events) { - $.each(events, $.proxy(function(index, event) { - delete this._supress[event]; - }, this)); - }; - - /** - * Gets unified pointer coordinates from event. - * @todo #261 - * @protected - * @param {Event} - The `mousedown` or `touchstart` event. - * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. - */ - Owl.prototype.pointer = function(event) { - var result = { x: null, y: null }; - - event = event.originalEvent || event || window.event; - - event = event.touches && event.touches.length ? - event.touches[0] : event.changedTouches && event.changedTouches.length ? - event.changedTouches[0] : event; - - if (event.pageX) { - result.x = event.pageX; - result.y = event.pageY; - } else { - result.x = event.clientX; - result.y = event.clientY; - } - - return result; - }; - - /** - * Determines if the input is a Number or something that can be coerced to a Number - * @protected - * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested - * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number - */ - Owl.prototype.isNumeric = function(number) { - return !isNaN(parseFloat(number)); - }; - - /** - * Gets the difference of two vectors. - * @todo #261 - * @protected - * @param {Object} - The first vector. - * @param {Object} - The second vector. - * @returns {Object} - The difference. - */ - Owl.prototype.difference = function(first, second) { - return { - x: first.x - second.x, - y: first.y - second.y - }; - }; - - /** - * The jQuery Plugin for the Owl Carousel - * @todo Navigation plugin `next` and `prev` - * @public - */ - $.fn.owlCarousel = function(option) { - var args = Array.prototype.slice.call(arguments, 1); - - return this.each(function() { - var $this = $(this), - data = $this.data('owl.carousel'); - - if (!data) { - data = new Owl(this, typeof option == 'object' && option); - $this.data('owl.carousel', data); - - $.each([ - 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' - ], function(i, event) { - data.register({ type: Owl.Type.Event, name: event }); - data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { - if (e.namespace && e.relatedTarget !== this) { - this.suppress([ event ]); - data[event].apply(this, [].slice.call(arguments, 1)); - this.release([ event ]); - } - }, data)); - }); - } - - if (typeof option == 'string' && option.charAt(0) !== '_') { - data[option].apply(data, args); - } - }); - }; - - /** - * The constructor for the jQuery Plugin - * @public - */ - $.fn.owlCarousel.Constructor = Owl; - -})(window.Zepto || window.jQuery, window, document); - -/** - * AutoRefresh Plugin - * @version 2.1.0 - * @author Artus Kolanowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the auto refresh plugin. - * @class The Auto Refresh Plugin - * @param {Owl} carousel - The Owl Carousel - */ - var AutoRefresh = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * Refresh interval. - * @protected - * @type {number} - */ - this._interval = null; - - /** - * Whether the element is currently visible or not. - * @protected - * @type {Boolean} - */ - this._visible = null; - - /** - * All event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'initialized.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.autoRefresh) { - this.watch(); - } - }, this) - }; - - // set default options - this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); - - // register event handlers - this._core.$element.on(this._handlers); - }; - - /** - * Default options. - * @public - */ - AutoRefresh.Defaults = { - autoRefresh: true, - autoRefreshInterval: 500 - }; - - /** - * Watches the element. - */ - AutoRefresh.prototype.watch = function() { - if (this._interval) { - return; - } - - this._visible = this._core.$element.is(':visible'); - this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); - }; - - /** - * Refreshes the element. - */ - AutoRefresh.prototype.refresh = function() { - if (this._core.$element.is(':visible') === this._visible) { - return; - } - - this._visible = !this._visible; - - this._core.$element.toggleClass('owl-hidden', !this._visible); - - this._visible && (this._core.invalidate('width') && this._core.refresh()); - }; - - /** - * Destroys the plugin. - */ - AutoRefresh.prototype.destroy = function() { - var handler, property; - - window.clearInterval(this._interval); - - for (handler in this._handlers) { - this._core.$element.off(handler, this._handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Lazy Plugin - * @version 2.1.0 - * @author Bartosz Wojciechowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the lazy plugin. - * @class The Lazy Plugin - * @param {Owl} carousel - The Owl Carousel - */ - var Lazy = function(carousel) { - - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * Already loaded items. - * @protected - * @type {Array.} - */ - this._loaded = []; - - /** - * Event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { - if (!e.namespace) { - return; - } - - if (!this._core.settings || !this._core.settings.lazyLoad) { - return; - } - - if ((e.property && e.property.name == 'position') || e.type == 'initialized') { - var settings = this._core.settings, - n = (settings.center && Math.ceil(settings.items / 2) || settings.items), - i = ((settings.center && n * -1) || 0), - position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, - clones = this._core.clones().length, - load = $.proxy(function(i, v) { this.load(v) }, this); - - while (i++ < n) { - this.load(clones / 2 + this._core.relative(position)); - clones && $.each(this._core.clones(this._core.relative(position)), load); - position++; - } - } - }, this) - }; - - // set the default options - this._core.options = $.extend({}, Lazy.Defaults, this._core.options); - - // register event handler - this._core.$element.on(this._handlers); - }; - - /** - * Default options. - * @public - */ - Lazy.Defaults = { - lazyLoad: false - }; - - /** - * Loads all resources of an item at the specified position. - * @param {Number} position - The absolute position of the item. - * @protected - */ - Lazy.prototype.load = function(position) { - var $item = this._core.$stage.children().eq(position), - $elements = $item && $item.find('.owl-lazy'); - - if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { - return; - } - - $elements.each($.proxy(function(index, element) { - var $element = $(element), image, - url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src'); - - this._core.trigger('load', { element: $element, url: url }, 'lazy'); - - if ($element.is('img')) { - $element.one('load.owl.lazy', $.proxy(function() { - $element.css('opacity', 1); - this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); - }, this)).attr('src', url); - } else { - image = new Image(); - image.onload = $.proxy(function() { - $element.css({ - 'background-image': 'url(' + url + ')', - 'opacity': '1' - }); - this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); - }, this); - image.src = url; - } - }, this)); - - this._loaded.push($item.get(0)); - }; - - /** - * Destroys the plugin. - * @public - */ - Lazy.prototype.destroy = function() { - var handler, property; - - for (handler in this.handlers) { - this._core.$element.off(handler, this.handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; - -})(window.Zepto || window.jQuery, window, document); - -/** - * AutoHeight Plugin - * @version 2.1.0 - * @author Bartosz Wojciechowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the auto height plugin. - * @class The Auto Height Plugin - * @param {Owl} carousel - The Owl Carousel - */ - var AutoHeight = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * All event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.autoHeight) { - this.update(); - } - }, this), - 'changed.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){ - this.update(); - } - }, this), - 'loaded.owl.lazy': $.proxy(function(e) { - if (e.namespace && this._core.settings.autoHeight - && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { - this.update(); - } - }, this) - }; - - // set default options - this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); - - // register event handlers - this._core.$element.on(this._handlers); - }; - - /** - * Default options. - * @public - */ - AutoHeight.Defaults = { - autoHeight: false, - autoHeightClass: 'owl-height' - }; - - /** - * Updates the view. - */ - AutoHeight.prototype.update = function() { - var start = this._core._current, - end = start + this._core.settings.items, - visible = this._core.$stage.children().toArray().slice(start, end), - heights = [], - maxheight = 0; - - $.each(visible, function(index, item) { - heights.push($(item).height()); - }); - - maxheight = Math.max.apply(null, heights); - - this._core.$stage.parent() - .height(maxheight) - .addClass(this._core.settings.autoHeightClass); - }; - - AutoHeight.prototype.destroy = function() { - var handler, property; - - for (handler in this._handlers) { - this._core.$element.off(handler, this._handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Video Plugin - * @version 2.1.0 - * @author Bartosz Wojciechowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the video plugin. - * @class The Video Plugin - * @param {Owl} carousel - The Owl Carousel - */ - var Video = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * Cache all video URLs. - * @protected - * @type {Object} - */ - this._videos = {}; - - /** - * Current playing item. - * @protected - * @type {jQuery} - */ - this._playing = null; - - /** - * All event handlers. - * @todo The cloned content removale is too late - * @protected - * @type {Object} - */ - this._handlers = { - 'initialized.owl.carousel': $.proxy(function(e) { - if (e.namespace) { - this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); - } - }, this), - 'resize.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.video && this.isInFullScreen()) { - e.preventDefault(); - } - }, this), - 'refreshed.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.is('resizing')) { - this._core.$stage.find('.cloned .owl-video-frame').remove(); - } - }, this), - 'changed.owl.carousel': $.proxy(function(e) { - if (e.namespace && e.property.name === 'position' && this._playing) { - this.stop(); - } - }, this), - 'prepared.owl.carousel': $.proxy(function(e) { - if (!e.namespace) { - return; - } - - var $element = $(e.content).find('.owl-video'); - - if ($element.length) { - $element.css('display', 'none'); - this.fetch($element, $(e.content)); - } - }, this) - }; - - // set default options - this._core.options = $.extend({}, Video.Defaults, this._core.options); - - // register event handlers - this._core.$element.on(this._handlers); - - this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { - this.play(e); - }, this)); - }; - - /** - * Default options. - * @public - */ - Video.Defaults = { - video: false, - videoHeight: false, - videoWidth: false - }; - - /** - * Gets the video ID and the type (YouTube/Vimeo/vzaar only). - * @protected - * @param {jQuery} target - The target containing the video data. - * @param {jQuery} item - The item containing the video. - */ - Video.prototype.fetch = function(target, item) { - var type = (function() { - if (target.attr('data-vimeo-id')) { - return 'vimeo'; - } else if (target.attr('data-vzaar-id')) { - return 'vzaar' - } else { - return 'youtube'; - } - })(), - id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), - width = target.attr('data-width') || this._core.settings.videoWidth, - height = target.attr('data-height') || this._core.settings.videoHeight, - url = target.attr('href'); - - if (url) { - - /* - Parses the id's out of the following urls (and probably more): - https://www.youtube.com/watch?v=:id - https://youtu.be/:id - https://vimeo.com/:id - https://vimeo.com/channels/:channel/:id - https://vimeo.com/groups/:group/videos/:id - https://app.vzaar.com/videos/:id - - Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F - */ - - id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); - - if (id[3].indexOf('youtu') > -1) { - type = 'youtube'; - } else if (id[3].indexOf('vimeo') > -1) { - type = 'vimeo'; - } else if (id[3].indexOf('vzaar') > -1) { - type = 'vzaar'; - } else { - throw new Error('Video URL not supported.'); - } - id = id[6]; - } else { - throw new Error('Missing video URL.'); - } - - this._videos[url] = { - type: type, - id: id, - width: width, - height: height - }; - - item.attr('data-video', url); - - this.thumbnail(target, this._videos[url]); - }; - - /** - * Creates video thumbnail. - * @protected - * @param {jQuery} target - The target containing the video data. - * @param {Object} info - The video info object. - * @see `fetch` - */ - Video.prototype.thumbnail = function(target, video) { - var tnLink, - icon, - path, - dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '', - customTn = target.find('img'), - srcType = 'src', - lazyClass = '', - settings = this._core.settings, - create = function(path) { - icon = '
'; - - if (settings.lazyLoad) { - tnLink = '
'; - } else { - tnLink = '
'; - } - target.after(tnLink); - target.after(icon); - }; - - // wrap video content into owl-video-wrapper div - target.wrap('
'); - - if (this._core.settings.lazyLoad) { - srcType = 'data-src'; - lazyClass = 'owl-lazy'; - } - - // custom thumbnail - if (customTn.length) { - create(customTn.attr(srcType)); - customTn.remove(); - return false; - } - - if (video.type === 'youtube') { - path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; - create(path); - } else if (video.type === 'vimeo') { - $.ajax({ - type: 'GET', - url: '//vimeo.com/api/v2/video/' + video.id + '.json', - jsonp: 'callback', - dataType: 'jsonp', - success: function(data) { - path = data[0].thumbnail_large; - create(path); - } - }); - } else if (video.type === 'vzaar') { - $.ajax({ - type: 'GET', - url: '//vzaar.com/api/videos/' + video.id + '.json', - jsonp: 'callback', - dataType: 'jsonp', - success: function(data) { - path = data.framegrab_url; - create(path); - } - }); - } - }; - - /** - * Stops the current video. - * @public - */ - Video.prototype.stop = function() { - this._core.trigger('stop', null, 'video'); - this._playing.find('.owl-video-frame').remove(); - this._playing.removeClass('owl-video-playing'); - this._playing = null; - this._core.leave('playing'); - this._core.trigger('stopped', null, 'video'); - }; - - /** - * Starts the current video. - * @public - * @param {Event} event - The event arguments. - */ - Video.prototype.play = function(event) { - var target = $(event.target), - item = target.closest('.' + this._core.settings.itemClass), - video = this._videos[item.attr('data-video')], - width = video.width || '100%', - height = video.height || this._core.$stage.height(), - html; - - if (this._playing) { - return; - } - - this._core.enter('playing'); - this._core.trigger('play', null, 'video'); - - item = this._core.items(this._core.relative(item.index())); - - this._core.reset(item.index()); - - if (video.type === 'youtube') { - html = ''; - } else if (video.type === 'vimeo') { - html = ''; - } else if (video.type === 'vzaar') { - html = ''; - } - - $('
' + html + '
').insertAfter(item.find('.owl-video')); - - this._playing = item.addClass('owl-video-playing'); - }; - - /** - * Checks whether an video is currently in full screen mode or not. - * @todo Bad style because looks like a readonly method but changes members. - * @protected - * @returns {Boolean} - */ - Video.prototype.isInFullScreen = function() { - var element = document.fullscreenElement || document.mozFullScreenElement || - document.webkitFullscreenElement; - - return element && $(element).parent().hasClass('owl-video-frame'); - }; - - /** - * Destroys the plugin. - */ - Video.prototype.destroy = function() { - var handler, property; - - this._core.$element.off('click.owl.video'); - - for (handler in this._handlers) { - this._core.$element.off(handler, this._handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.Video = Video; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Animate Plugin - * @version 2.1.0 - * @author Bartosz Wojciechowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the animate plugin. - * @class The Navigation Plugin - * @param {Owl} scope - The Owl Carousel - */ - var Animate = function(scope) { - this.core = scope; - this.core.options = $.extend({}, Animate.Defaults, this.core.options); - this.swapping = true; - this.previous = undefined; - this.next = undefined; - - this.handlers = { - 'change.owl.carousel': $.proxy(function(e) { - if (e.namespace && e.property.name == 'position') { - this.previous = this.core.current(); - this.next = e.property.value; - } - }, this), - 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { - if (e.namespace) { - this.swapping = e.type == 'translated'; - } - }, this), - 'translate.owl.carousel': $.proxy(function(e) { - if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { - this.swap(); - } - }, this) - }; - - this.core.$element.on(this.handlers); - }; - - /** - * Default options. - * @public - */ - Animate.Defaults = { - animateOut: false, - animateIn: false - }; - - /** - * Toggles the animation classes whenever an translations starts. - * @protected - * @returns {Boolean|undefined} - */ - Animate.prototype.swap = function() { - - if (this.core.settings.items !== 1) { - return; - } - - if (!$.support.animation || !$.support.transition) { - return; - } - - this.core.speed(0); - - var left, - clear = $.proxy(this.clear, this), - previous = this.core.$stage.children().eq(this.previous), - next = this.core.$stage.children().eq(this.next), - incoming = this.core.settings.animateIn, - outgoing = this.core.settings.animateOut; - - if (this.core.current() === this.previous) { - return; - } - - if (outgoing) { - left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); - previous.one($.support.animation.end, clear) - .css( { 'left': left + 'px' } ) - .addClass('animated owl-animated-out') - .addClass(outgoing); - } - - if (incoming) { - next.one($.support.animation.end, clear) - .addClass('animated owl-animated-in') - .addClass(incoming); - } - }; - - Animate.prototype.clear = function(e) { - $(e.target).css( { 'left': '' } ) - .removeClass('animated owl-animated-out owl-animated-in') - .removeClass(this.core.settings.animateIn) - .removeClass(this.core.settings.animateOut); - this.core.onTransitionEnd(); - }; - - /** - * Destroys the plugin. - * @public - */ - Animate.prototype.destroy = function() { - var handler, property; - - for (handler in this.handlers) { - this.core.$element.off(handler, this.handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Autoplay Plugin - * @version 2.1.0 - * @author Bartosz Wojciechowski - * @author Artus Kolanowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - /** - * Creates the autoplay plugin. - * @class The Autoplay Plugin - * @param {Owl} scope - The Owl Carousel - */ - var Autoplay = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * The autoplay timeout. - * @type {Timeout} - */ - this._timeout = null; - - /** - * Indicates whenever the autoplay is paused. - * @type {Boolean} - */ - this._paused = false; - - /** - * All event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'changed.owl.carousel': $.proxy(function(e) { - if (e.namespace && e.property.name === 'settings') { - if (this._core.settings.autoplay) { - this.play(); - } else { - this.stop(); - } - } else if (e.namespace && e.property.name === 'position') { - //console.log('play?', e); - if (this._core.settings.autoplay) { - this._setAutoPlayInterval(); - } - } - }, this), - 'initialized.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.autoplay) { - this.play(); - } - }, this), - 'play.owl.autoplay': $.proxy(function(e, t, s) { - if (e.namespace) { - this.play(t, s); - } - }, this), - 'stop.owl.autoplay': $.proxy(function(e) { - if (e.namespace) { - this.stop(); - } - }, this), - 'mouseover.owl.autoplay': $.proxy(function() { - if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { - this.pause(); - } - }, this), - 'mouseleave.owl.autoplay': $.proxy(function() { - if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { - this.play(); - } - }, this), - 'touchstart.owl.core': $.proxy(function() { - if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { - this.pause(); - } - }, this), - 'touchend.owl.core': $.proxy(function() { - if (this._core.settings.autoplayHoverPause) { - this.play(); - } - }, this) - }; - - // register event handlers - this._core.$element.on(this._handlers); - - // set default options - this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); - }; - - /** - * Default options. - * @public - */ - Autoplay.Defaults = { - autoplay: false, - autoplayTimeout: 5000, - autoplayHoverPause: false, - autoplaySpeed: false - }; - - /** - * Starts the autoplay. - * @public - * @param {Number} [timeout] - The interval before the next animation starts. - * @param {Number} [speed] - The animation speed for the animations. - */ - Autoplay.prototype.play = function(timeout, speed) { - this._paused = false; - - if (this._core.is('rotating')) { - return; - } - - this._core.enter('rotating'); - - this._setAutoPlayInterval(); - }; - - /** - * Gets a new timeout - * @private - * @param {Number} [timeout] - The interval before the next animation starts. - * @param {Number} [speed] - The animation speed for the animations. - * @return {Timeout} - */ - Autoplay.prototype._getNextTimeout = function(timeout, speed) { - if ( this._timeout ) { - window.clearTimeout(this._timeout); - } - return window.setTimeout($.proxy(function() { - if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) { - return; - } - this._core.next(speed || this._core.settings.autoplaySpeed); - }, this), timeout || this._core.settings.autoplayTimeout); - }; - - /** - * Sets autoplay in motion. - * @private - */ - Autoplay.prototype._setAutoPlayInterval = function() { - this._timeout = this._getNextTimeout(); - }; - - /** - * Stops the autoplay. - * @public - */ - Autoplay.prototype.stop = function() { - if (!this._core.is('rotating')) { - return; - } - - window.clearTimeout(this._timeout); - this._core.leave('rotating'); - }; - - /** - * Stops the autoplay. - * @public - */ - Autoplay.prototype.pause = function() { - if (!this._core.is('rotating')) { - return; - } - - this._paused = true; - }; - - /** - * Destroys the plugin. - */ - Autoplay.prototype.destroy = function() { - var handler, property; - - this.stop(); - - for (handler in this._handlers) { - this._core.$element.off(handler, this._handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Navigation Plugin - * @version 2.1.0 - * @author Artus Kolanowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - 'use strict'; - - /** - * Creates the navigation plugin. - * @class The Navigation Plugin - * @param {Owl} carousel - The Owl Carousel. - */ - var Navigation = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * Indicates whether the plugin is initialized or not. - * @protected - * @type {Boolean} - */ - this._initialized = false; - - /** - * The current paging indexes. - * @protected - * @type {Array} - */ - this._pages = []; - - /** - * All DOM elements of the user interface. - * @protected - * @type {Object} - */ - this._controls = {}; - - /** - * Markup for an indicator. - * @protected - * @type {Array.} - */ - this._templates = []; - - /** - * The carousel element. - * @type {jQuery} - */ - this.$element = this._core.$element; - - /** - * Overridden methods of the carousel. - * @protected - * @type {Object} - */ - this._overrides = { - next: this._core.next, - prev: this._core.prev, - to: this._core.to - }; - - /** - * All event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'prepared.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.dotsData) { - this._templates.push('
' + - $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
'); - } - }, this), - 'added.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.dotsData) { - this._templates.splice(e.position, 0, this._templates.pop()); - } - }, this), - 'remove.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.dotsData) { - this._templates.splice(e.position, 1); - } - }, this), - 'changed.owl.carousel': $.proxy(function(e) { - if (e.namespace && e.property.name == 'position') { - this.draw(); - } - }, this), - 'initialized.owl.carousel': $.proxy(function(e) { - if (e.namespace && !this._initialized) { - this._core.trigger('initialize', null, 'navigation'); - this.initialize(); - this.update(); - this.draw(); - this._initialized = true; - this._core.trigger('initialized', null, 'navigation'); - } - }, this), - 'refreshed.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._initialized) { - this._core.trigger('refresh', null, 'navigation'); - this.update(); - this.draw(); - this._core.trigger('refreshed', null, 'navigation'); - } - }, this) - }; - - // set default options - this._core.options = $.extend({}, Navigation.Defaults, this._core.options); - - // register event handlers - this.$element.on(this._handlers); - }; - - /** - * Default options. - * @public - * @todo Rename `slideBy` to `navBy` - */ - Navigation.Defaults = { - nav: false, - navText: [ 'prev', 'next' ], - navSpeed: false, - navElement: 'div', - navContainer: false, - navContainerClass: 'owl-nav', - navClass: [ 'owl-prev', 'owl-next' ], - slideBy: 1, - dotClass: 'owl-dot', - dotsClass: 'owl-dots', - dots: true, - dotsEach: false, - dotsData: false, - dotsSpeed: false, - dotsContainer: false - }; - - /** - * Initializes the layout of the plugin and extends the carousel. - * @protected - */ - Navigation.prototype.initialize = function() { - var override, - settings = this._core.settings; - - // create DOM structure for relative navigation - this._controls.$relative = (settings.navContainer ? $(settings.navContainer) - : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); - - this._controls.$previous = $('<' + settings.navElement + '>') - .addClass(settings.navClass[0]) - .html(settings.navText[0]) - .prependTo(this._controls.$relative) - .on('click', $.proxy(function(e) { - this.prev(settings.navSpeed); - }, this)); - this._controls.$next = $('<' + settings.navElement + '>') - .addClass(settings.navClass[1]) - .html(settings.navText[1]) - .appendTo(this._controls.$relative) - .on('click', $.proxy(function(e) { - this.next(settings.navSpeed); - }, this)); - - // create DOM structure for absolute navigation - if (!settings.dotsData) { - this._templates = [ $('
') - .addClass(settings.dotClass) - .append($('')) - .prop('outerHTML') ]; - } - - this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) - : $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); - - this._controls.$absolute.on('click', 'div', $.proxy(function(e) { - var index = $(e.target).parent().is(this._controls.$absolute) - ? $(e.target).index() : $(e.target).parent().index(); - - e.preventDefault(); - - this.to(index, settings.dotsSpeed); - }, this)); - - // override public methods of the carousel - for (override in this._overrides) { - this._core[override] = $.proxy(this[override], this); - } - }; - - /** - * Destroys the plugin. - * @protected - */ - Navigation.prototype.destroy = function() { - var handler, control, property, override; - - for (handler in this._handlers) { - this.$element.off(handler, this._handlers[handler]); - } - for (control in this._controls) { - this._controls[control].remove(); - } - for (override in this.overides) { - this._core[override] = this._overrides[override]; - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - /** - * Updates the internal state. - * @protected - */ - Navigation.prototype.update = function() { - var i, j, k, - lower = this._core.clones().length / 2, - upper = lower + this._core.items().length, - maximum = this._core.maximum(true), - settings = this._core.settings, - size = settings.center || settings.autoWidth || settings.dotsData - ? 1 : settings.dotsEach || settings.items; - - if (settings.slideBy !== 'page') { - settings.slideBy = Math.min(settings.slideBy, settings.items); - } - - if (settings.dots || settings.slideBy == 'page') { - this._pages = []; - - for (i = lower, j = 0, k = 0; i < upper; i++) { - if (j >= size || j === 0) { - this._pages.push({ - start: Math.min(maximum, i - lower), - end: i - lower + size - 1 - }); - if (Math.min(maximum, i - lower) === maximum) { - break; - } - j = 0, ++k; - } - j += this._core.mergers(this._core.relative(i)); - } - } - }; - - /** - * Draws the user interface. - * @todo The option `dotsData` wont work. - * @protected - */ - Navigation.prototype.draw = function() { - var difference, - settings = this._core.settings, - disabled = this._core.items().length <= settings.items, - index = this._core.relative(this._core.current()), - loop = settings.loop || settings.rewind; - - this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); - - if (settings.nav) { - this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); - this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); - } - - this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); - - if (settings.dots) { - difference = this._pages.length - this._controls.$absolute.children().length; - - if (settings.dotsData && difference !== 0) { - this._controls.$absolute.html(this._templates.join('')); - } else if (difference > 0) { - this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); - } else if (difference < 0) { - this._controls.$absolute.children().slice(difference).remove(); - } - - this._controls.$absolute.find('.active').removeClass('active'); - this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); - } - }; - - /** - * Extends event data. - * @protected - * @param {Event} event - The event object which gets thrown. - */ - Navigation.prototype.onTrigger = function(event) { - var settings = this._core.settings; - - event.page = { - index: $.inArray(this.current(), this._pages), - count: this._pages.length, - size: settings && (settings.center || settings.autoWidth || settings.dotsData - ? 1 : settings.dotsEach || settings.items) - }; - }; - - /** - * Gets the current page position of the carousel. - * @protected - * @returns {Number} - */ - Navigation.prototype.current = function() { - var current = this._core.relative(this._core.current()); - return $.grep(this._pages, $.proxy(function(page, index) { - return page.start <= current && page.end >= current; - }, this)).pop(); - }; - - /** - * Gets the current succesor/predecessor position. - * @protected - * @returns {Number} - */ - Navigation.prototype.getPosition = function(successor) { - var position, length, - settings = this._core.settings; - - if (settings.slideBy == 'page') { - position = $.inArray(this.current(), this._pages); - length = this._pages.length; - successor ? ++position : --position; - position = this._pages[((position % length) + length) % length].start; - } else { - position = this._core.relative(this._core.current()); - length = this._core.items().length; - successor ? position += settings.slideBy : position -= settings.slideBy; - } - - return position; - }; - - /** - * Slides to the next item or page. - * @public - * @param {Number} [speed=false] - The time in milliseconds for the transition. - */ - Navigation.prototype.next = function(speed) { - $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); - }; - - /** - * Slides to the previous item or page. - * @public - * @param {Number} [speed=false] - The time in milliseconds for the transition. - */ - Navigation.prototype.prev = function(speed) { - $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); - }; - - /** - * Slides to the specified item or page. - * @public - * @param {Number} position - The position of the item or page. - * @param {Number} [speed] - The time in milliseconds for the transition. - * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. - */ - Navigation.prototype.to = function(position, speed, standard) { - var length; - - if (!standard && this._pages.length) { - length = this._pages.length; - $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); - } else { - $.proxy(this._overrides.to, this._core)(position, speed); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Hash Plugin - * @version 2.1.0 - * @author Artus Kolanowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - 'use strict'; - - /** - * Creates the hash plugin. - * @class The Hash Plugin - * @param {Owl} carousel - The Owl Carousel - */ - var Hash = function(carousel) { - /** - * Reference to the core. - * @protected - * @type {Owl} - */ - this._core = carousel; - - /** - * Hash index for the items. - * @protected - * @type {Object} - */ - this._hashes = {}; - - /** - * The carousel element. - * @type {jQuery} - */ - this.$element = this._core.$element; - - /** - * All event handlers. - * @protected - * @type {Object} - */ - this._handlers = { - 'initialized.owl.carousel': $.proxy(function(e) { - if (e.namespace && this._core.settings.startPosition === 'URLHash') { - $(window).trigger('hashchange.owl.navigation'); - } - }, this), - 'prepared.owl.carousel': $.proxy(function(e) { - if (e.namespace) { - var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); - - if (!hash) { - return; - } - - this._hashes[hash] = e.content; - } - }, this), - 'changed.owl.carousel': $.proxy(function(e) { - if (e.namespace && e.property.name === 'position') { - var current = this._core.items(this._core.relative(this._core.current())), - hash = $.map(this._hashes, function(item, hash) { - return item === current ? hash : null; - }).join(); - - if (!hash || window.location.hash.slice(1) === hash) { - return; - } - - window.location.hash = hash; - } - }, this) - }; - - // set default options - this._core.options = $.extend({}, Hash.Defaults, this._core.options); - - // register the event handlers - this.$element.on(this._handlers); - - // register event listener for hash navigation - $(window).on('hashchange.owl.navigation', $.proxy(function(e) { - var hash = window.location.hash.substring(1), - items = this._core.$stage.children(), - position = this._hashes[hash] && items.index(this._hashes[hash]); - - if (position === undefined || position === this._core.current()) { - return; - } - - this._core.to(this._core.relative(position), false, true); - }, this)); - }; - - /** - * Default options. - * @public - */ - Hash.Defaults = { - URLhashListener: false - }; - - /** - * Destroys the plugin. - * @public - */ - Hash.prototype.destroy = function() { - var handler, property; - - $(window).off('hashchange.owl.navigation'); - - for (handler in this._handlers) { - this._core.$element.off(handler, this._handlers[handler]); - } - for (property in Object.getOwnPropertyNames(this)) { - typeof this[property] != 'function' && (this[property] = null); - } - }; - - $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; - -})(window.Zepto || window.jQuery, window, document); - -/** - * Support Plugin - * - * @version 2.1.0 - * @author Vivid Planet Software GmbH - * @author Artus Kolanowski - * @author David Deutsch - * @license The MIT License (MIT) - */ -;(function($, window, document, undefined) { - - var style = $('').get(0).style, - prefixes = 'Webkit Moz O ms'.split(' '), - events = { - transition: { - end: { - WebkitTransition: 'webkitTransitionEnd', - MozTransition: 'transitionend', - OTransition: 'oTransitionEnd', - transition: 'transitionend' - } - }, - animation: { - end: { - WebkitAnimation: 'webkitAnimationEnd', - MozAnimation: 'animationend', - OAnimation: 'oAnimationEnd', - animation: 'animationend' - } - } - }, - tests = { - csstransforms: function() { - return !!test('transform'); - }, - csstransforms3d: function() { - return !!test('perspective'); - }, - csstransitions: function() { - return !!test('transition'); - }, - cssanimations: function() { - return !!test('animation'); - } - }; - - function test(property, prefixed) { - var result = false, - upper = property.charAt(0).toUpperCase() + property.slice(1); - - $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { - if (style[property] !== undefined) { - result = prefixed ? property : true; - return false; - } - }); - - return result; - } - - function prefixed(property) { - return test(property, true); - } - - if (tests.csstransitions()) { - /* jshint -W053 */ - $.support.transition = new String(prefixed('transition')) - $.support.transition.end = events.transition.end[ $.support.transition ]; - } - - if (tests.cssanimations()) { - /* jshint -W053 */ - $.support.animation = new String(prefixed('animation')) - $.support.animation.end = events.animation.end[ $.support.animation ]; - } - - if (tests.csstransforms()) { - /* jshint -W053 */ - $.support.transform = new String(prefixed('transform')); - $.support.transform3d = tests.csstransforms3d(); - } - -})(window.Zepto || window.jQuery, window, document); diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.min.js b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.min.js deleted file mode 100644 index aa57d31..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/owlcarousel/owl.carousel.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Owl Carousel v2.2.0 - * Copyright 2013-2016 David Deutsch - * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) - */ -!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g--;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++cc;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.settings.center&&(this.$stage.children(".center").removeClass("center"),this.$stage.children().eq(this.current()).addClass("center"))}}],e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var b,c,e;b=this.$element.find("img"),c=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,e=this.$element.children(c).width(),b.length&&0>=e&&this.preloadAutoWidthImages(b)}this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+' class="'+this.settings.stageClass+'"/>').wrap('
'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this.$element.is(":visible")?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){b>=a&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};c>b;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.$element.is(":visible")?(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized"))):!1:!1},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),this.settings.responsive!==!1&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousemove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var d=-1,e=30,f=this.width(),g=this.coordinates();return this.settings.freeDrag||a.each(g,a.proxy(function(a,h){return"left"===c&&b>h-e&&h+e>b?d=a:"right"===c&&b>h-f-e&&h-f+e>b?d=a+1:this.op(b,"<",h)&&this.op(b,">",g[a+1]||h-f)&&(d="left"===c?a+1:a),-1===d},this)),this.settings.loop||(this.op(b,">",g[this.minimum()])?d=b=this.minimum():this.op(b,"<",g[this.maximum()])&&(d=b=this.maximum())),d},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){a=this.normalize(a),a!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||1>c?a=d:(0>a||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){for(b=this._items.length,c=this._items[--b].width(),d=this.$element.width();b--&&(c+=this._items[b].width()+this.settings.margin,!(c>d)););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2===0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(0>e),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,d=((a-h)%g+g)%g+h,d!==a&&i>=d-e&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.$element.is(":visible")&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){return a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0))?!1:(this.leave("animating"),void this.trigger("translated"))},e.prototype.viewport=function(){var d;if(this.options.responsiveBaseElement!==b)d=a(this.options.responsiveBaseElement).width();else if(b.innerWidth)d=b.innerWidth;else{if(!c.documentElement||!c.documentElement.clientWidth)throw"Can not detect viewport width.";d=c.documentElement.clientWidth}return d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){a=this.normalize(a,!0),a!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),this.settings.responsive!==!1&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:c>a;case">":return d?c>a:a>c;case">=":return d?c>=a:a>=c;case"<=":return d?a>=c:c>=a}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.$element.is(":visible"),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.$element.is(":visible")!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type))for(var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);f++-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":"url("+g+")",opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"==a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.$stage.children().toArray().slice(b,c),e=[],f=0;a.each(d,function(b,c){e.push(a(c).height())}),f=Math.max.apply(null,e),this._core.$stage.parent().height(f).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?'style="width:'+c.width+"px;height:"+c.height+'px;"':"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(a){e='
',d=k.lazyLoad?'
':'
',b.after(d),b.after(e)};return b.wrap('
"),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length?(l(h.attr(i)),h.remove(),!1):void("youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}}))},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),"youtube"===f.type?c='':"vimeo"===f.type?c='':"vzaar"===f.type&&(c=''),a('
'+c+"
").insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null); -},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._timeout=null,this._paused=!1,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._core.settings.autoplay&&this._setAutoPlayInterval()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype.play=function(a,b){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._setAutoPlayInterval())},e.prototype._getNextTimeout=function(d,e){return this._timeout&&b.clearTimeout(this._timeout),b.setTimeout(a.proxy(function(){this._paused||this._core.is("busy")||this._core.is("interacting")||c.hidden||this._core.next(e||this._core.settings.autoplaySpeed)},this),d||this._core.settings.autoplayTimeout)},e.prototype._setAutoPlayInterval=function(){this._timeout=this._getNextTimeout()},e.prototype.stop=function(){this._core.is("rotating")&&(b.clearTimeout(this._timeout),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('
'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("
").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a("
").addClass(c.dotClass).append(a("")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("
").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;e>a;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):0>b&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){return g[b]!==d?(e=c?b:!0,!1):void 0}),e}function f(a){return e(a,!0)}var g=a("").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document); \ No newline at end of file diff --git a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/styles_scss.inc b/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/styles_scss.inc deleted file mode 100644 index 45025a3..0000000 --- a/lib/module_mform_mblock/0820_mblock_mform_owl_carousel/styles_scss.inc +++ /dev/null @@ -1,108 +0,0 @@ -// CSS zur Positionierung des Textes auf dem Slider - -.carousel-caption { - top: 5%; - left: 5%; - right: 5%; - bottom: 5%; - padding-bottom: 0; - text-shadow: none; - - .left-top { - width: 33.3%; - position: absolute; - left: 0; - top: 0; - } - - .center-top { - width: 33.3%; - position: absolute; - left: 33.3%; - top: 0; - } - - .right-top { - width: 33.3%; - position: absolute; - left: 66.6%; - top: 0; - } - - .left-middle { - width: 33.3%; - position: absolute; - left: 0; - top: 33.3%; - } - - .center-middle { - width: 33.3%; - position: absolute; - left: 33.3%; - top: 33.3%; - } - - .right-middle { - width: 33.3%; - position: absolute; - left: 66.6%; - top: 33.3%; - } - - .left-bottom { - width: 33.3%; - position: absolute; - left: 0; - top: 66.6; - } - - .center-bottom { - width: 33.3%; - position: absolute; - left: 33.3%; - top: 66.6%; - } - - .right-bottom { - width: 33.3%; - position: absolute; - left: 66.6%; - top: 66.6%; - } -} - - -// CSS für die Positionierung der Dot-Navigation - -.owl-dots { - text-align: center; - -webkit-tap-highlight-color: transparent; - position: absolute; - width: 100%; - margin-top: -50px; - - .owl-dot { - display: inline-block; - zoom: 1; - - span { - width: 12px; - height: 12px; - margin: 5px; - background: #000; - display: block; - -webkit-backface-visibility: visible; - transition: opacity 200ms ease; - border-radius: 30px; - } - - &.active, - &:hover { - span { - border: 2px solid #000; - background: #CCC; - } - } - } -} \ No newline at end of file diff --git a/package.yml b/package.yml index 0cc2ada..02058e9 100644 --- a/package.yml +++ b/package.yml @@ -1,7 +1,7 @@ # Alle hier gesetzten Werte können über $addon->getProperty($key) abgefragt werden package: modulsammlung -version: '4.16.1' +version: '4.17.0' author: 'Friends Of REDAXO' supportpage: https://github.com/FriendsOfREDAXO/REX5-Modulsammlung/issues info: 'Idee und Realisierung der ersten Version: Oliver Kreischer / concedra.de' @@ -14,7 +14,6 @@ page: pjax: false subpages: module: {title: 'translate:module'} - module_mform_mblock: {title: 'translate:module_mform_mblock'} more_examples: {title: 'translate:more_examples'} templates: {title: 'translate:templates'} info: diff --git a/pages/module_mform_mblock.php b/pages/module_mform_mblock.php deleted file mode 100644 index 8ce14b4..0000000 --- a/pages/module_mform_mblock.php +++ /dev/null @@ -1,233 +0,0 @@ -'; - foreach ($errors as $error) { - echo '
  • '.$error.'
  • '; - } - echo ''; -} - -foreach ($modulesdirs as $dir) { - // echo $dir.'
    '; - // echo basename($dir).'
    '; - - $module_key = basename($dir); - - if (file_exists($dir.'/config.inc')) { - $moduls[$module_key]['config'] = parse_ini_file($dir.'/config.inc',TRUE); - } else { - $moduls_errors[] = $this->i18n('config_fehler').' '.$dir; - } - - if (file_exists($dir.'/info.inc')) { - $moduls[$module_key]['info'] = file_get_contents($dir.'/info.inc'); - } else { - $moduls_errors[] = $this->i18n('info_fehler').' '.$dir; - } - - if (file_exists($dir.'/styles_scss.inc')) { - $moduls[$module_key]['styles_scss'] = file_get_contents($dir.'/styles_scss.inc'); - } else { - $moduls[$module_key]['styles_scss'] = ''; - } - if (file_exists($dir.'/styles_css.inc')) { - $moduls[$module_key]['styles_css'] = file_get_contents($dir.'/styles_css.inc'); - } else { - $moduls[$module_key]['styles_css'] = ''; - } - - if (file_exists($dir.'/input.inc')) { - $moduls[$module_key]['input'] = file_get_contents($dir.'/input.inc'); - } else { - $moduls_errors[] = $this->i18n('input_fehler').' '.$dir; - } - - if (file_exists($dir.'/output.inc')) { - $moduls[$module_key]['output'] = file_get_contents($dir.'/output.inc'); - } else { - $moduls_errors[] = $this->i18n('output_fehler').' '.$dir; - } - - if (file_exists($dir.'/metainfos.inc')) { - $moduls[$module_key]['metainfos'] = $dir.'/metainfos.inc'; - } else { - $moduls[$module_key]['metainfos'] = ''; - } - - if (file_exists($dir.'/mediamanager.inc')) { - $moduls[$module_key]['mediamanager'] = $dir.'/mediamanager.inc'; - } else { - $moduls[$module_key]['mediamanager'] = ''; - } - - if (file_exists($dir.'/template.inc')) { - $moduls[$module_key]['template'] = $dir.'/template.inc'; - } else { - $moduls[$module_key]['template'] = ''; - } -} - -if (count($moduls_errors) > 0) { - show_errors($moduls_errors); -} else { - - foreach ($moduls as $module_key => $modul) { - /* - $modulausgabe[] = ' - - - '.var_dump($modul['config']).' - - - '; - */ - - $statusfarbe = ''; - $statusinfo = ''; - $folder = ''; - // Status: Fertig - if ($modul['config']['status'] == 1) { - $statusfarbe = ' color: #36404F; '; - $statusinfo = $this->i18n('fertig'); - } - // Status: in Bearbeitung - if ($modul['config']['status'] == 2) { - $statusfarbe = ' color: #6999D7; '; - $statusinfo = $this->i18n('in_bearbeitung'); - } - // Status: geplant - if ($modul['config']['status'] == 0) { - $statusfarbe = ' color: #BF5E52; '; - $statusinfo = $this->i18n('entwicklung_geplant'); - } - - $modulausgabe[] = ' - -
    - - - - - - -
    -

    Info

    -
    - '.$modul['info'].' -
    -
    -
    -

    '.$this->i18n('input').'

    - '.rex_string::highlight($modul['input']).' -

    '.$this->i18n('output').'

    - '.rex_string::highlight($modul['output']).' -
    -
    -
    '; - - if($modul['styles_scss']) { - $modulausgabe[] = ' -

    '.$this->i18n('scss').'

    - '.rex_string::highlight($modul['styles_scss']); - } - if($modul['styles_css']) { - $modulausgabe[] = ' -

    '.$this->i18n('css').'

    - '.rex_string::highlight($modul['styles_css']); - } - $modulausgabe[] = ' -
    -
    - - - '.$this->i18n('info').' - - - '; - if ($moduls[$module_key]['styles_scss'] OR $moduls[$module_key]['styles_css']) { - $modulausgabe[] = ''.$this->i18n('styles').'' ; - } - $modulausgabe[] = ' - '; - if ($modul['config']['status'] != 0) { - $modulausgabe[] = ''; - } - $modulausgabe[] = ' - -
    - '; - - if (rex_request('install') == $module_key) { - //$modul_name = $modul['config']['modulname']; - - $modul_name = rex_post("modul_name", 'string'); - if ($modul_name == '') { - echo rex_view::warning($this->i18n('modulname_fehler')); - } else { - if($moduls[$module_key]['metainfos'] != '') { - include($moduls[$module_key]['metainfos']); - } - if($moduls[$module_key]['mediamanager'] != '') { - include($moduls[$module_key]['mediamanager']); - } - if($moduls[$module_key]['template'] != '') { - include($moduls[$module_key]['template']); - } - // Ordner in Assets kopieren - if (array_key_exists('assets_folder',$modul['config']) && $modul['config']['assets_folder'] != '') { - $srcdir = '../redaxo/src/addons/modulsammlung/lib/module_mform_mblock/'.$module_key.'/'.$modul['config']['assets_folder']; - // echo $srcdir; - rex_dir::copy($srcdir ,'.././assets/'.$modul['config']['assets_folder']); - echo rex_view::success($this->i18n('kopierter_ordner').' '.$modul['config']['assets_folder']); - } - - $input = $moduls[$module_key]['input']; - $output = $moduls[$module_key]['output']; - - $mi = rex_sql::factory(); -// $mi->setDebug(); - $mi->setTable('rex_module'); - $mi->setValue('input', $input); - $mi->setValue('output', $output); - $mi->setValue('name', $modul_name); - $mi->insert(); - $modul_id = (int) $mi->getLastId(); - echo rex_view::success($this->i18n('modul_angelegt').' '.$modul_name); - } - } - } - } -$content = ' -
    -
    - - - - - - - - - - - -'; - -$content .= implode($modulausgabe); - -$content .= ' - -
    '.$this->i18n('modulsammlung_module_mform_mblock').'
    -
    -
    '; - -$fragment = new rex_fragment(); -$fragment->setVar('body', $content, false); -echo $fragment->parse('core/page/section.php');