├── update.php ├── pages ├── info.info.infotest.php ├── changelog.php ├── info.changelog.php ├── info.info.php ├── info.roadmap.php ├── license.php ├── info.license.php ├── snippets.php ├── index.php ├── info.templateuebersicht.php ├── settings.php ├── info.moduluebersicht.php ├── templates.php └── module.php ├── lib ├── module │ └── 0100_standard_modul │ │ ├── mediamanager.inc │ │ ├── styles_scss.inc │ │ ├── config.inc │ │ ├── info.inc │ │ ├── input.inc │ │ └── output.inc ├── templates │ └── 0010_starter_template │ │ ├── config.inc │ │ ├── info.inc │ │ └── template.inc └── bootstrap_helper_class.php ├── plugins └── documentation │ ├── docs │ └── de_de │ │ ├── main_intro.md │ │ ├── module_0100_standard-modul.md │ │ ├── templates_0010_test_template.md │ │ ├── main_navi.md │ │ ├── links.md │ │ └── _vorlage.md │ ├── README.md │ ├── package.yml │ ├── boot.php │ ├── assets │ ├── documentation.js │ └── documentation.css │ ├── lang │ ├── en_gb.lang │ ├── pt_br.lang │ └── de_de.lang │ └── pages │ └── index.php ├── uninstall.php ├── README.md ├── package.yml ├── LICENSE.md ├── CHANGELOG.md ├── roadmap.md ├── boot.php ├── lang └── de_de.lang ├── assets └── css │ └── styles.css └── SCSS └── master.scss /update.php: -------------------------------------------------------------------------------- 1 | 0010 - Test Template 2 |

Dieses Template ist eigentlich nur zum Testen der Modulausgaben geeignet.

3 | 4 | 5 | -------------------------------------------------------------------------------- /plugins/documentation/README.md: -------------------------------------------------------------------------------- 1 | # Plugin "Dokumentation" für REDAXO5-AddOn "Bootstrap Helper" 2 | 3 | --- 4 | 5 | Inhaltsverzeichnis: [docs/de_de/main_navi.md](docs/de_de/main_navi.md) 6 | 7 | Vorlage zur Formatierung: [docs/de_de/_vorlage.md](docs/de_de/_vorlage.md) 8 | -------------------------------------------------------------------------------- /plugins/documentation/docs/de_de/main_navi.md: -------------------------------------------------------------------------------- 1 | **Module** 2 | 3 | - [0100 - Standard-Modul](module_0100_standard-modul.md) 4 | 5 | 6 | **Templates** 7 | - [0010 - Test Template](templates_0010_test_template.md) 8 | 9 | 10 | **Sonstiges** 11 | - [Links](links.md) 12 | -------------------------------------------------------------------------------- /uninstall.php: -------------------------------------------------------------------------------- 1 | setProperty('installmsg', 'Something is wrong'); 10 | $this->setProperty('install', true); 11 | } 12 | -------------------------------------------------------------------------------- /plugins/documentation/package.yml: -------------------------------------------------------------------------------- 1 | package: bootstrap_helper/documentation 2 | version: '0.1' 3 | author: 'Friends Of REDAXO' 4 | supportpage: github.com/FriendsOfREDAXO/dummy_documentation 5 | 6 | documentationlang: 'de_de' 7 | defaultnavi: 'main_navi.md' 8 | defaultintro: 'main_intro.md' 9 | 10 | page: 11 | title: 'translate:documentation_menu_entry' 12 | perm: admin[] 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /plugins/documentation/boot.php: -------------------------------------------------------------------------------- 1 | getAssetsUrl('documentation.css')); 7 | rex_view::addJsFile($this->getAssetsUrl('documentation.js')); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /plugins/documentation/assets/documentation.js: -------------------------------------------------------------------------------- 1 | $(document).on('rex:ready', function (event, container) { 2 | 3 | // Externe Links in neuem Fenster 4 | $('div.bsh_addon_documentation-content').find('a[href^="http"]').each(function(){ 5 | if ($(this).html() != '') { 6 | $html = $(this).html() + ' '; 7 | $(this).html($html).attr('target','_blank'); 8 | } 9 | }); 10 | }); // end rex:ready 11 | -------------------------------------------------------------------------------- /pages/changelog.php: -------------------------------------------------------------------------------- 1 | text($file); 6 | 7 | 8 | $fragment = new rex_fragment(); 9 | $fragment->setVar('class', 'info', false); 10 | $fragment->setVar('title', $this->i18n('changelog'), false); 11 | $fragment->setVar('body', $content, false); 12 | echo '
'.$fragment->parse('core/page/section.php').'
'; 13 | -------------------------------------------------------------------------------- /pages/info.changelog.php: -------------------------------------------------------------------------------- 1 | text($file); 6 | 7 | 8 | $fragment = new rex_fragment(); 9 | $fragment->setVar('class', 'info', false); 10 | $fragment->setVar('title', $this->i18n('changelog'), false); 11 | $fragment->setVar('body', $content, false); 12 | echo '
'.$fragment->parse('core/page/section.php').'
'; 13 | -------------------------------------------------------------------------------- /pages/info.info.php: -------------------------------------------------------------------------------- 1 | text($file); 5 | 6 | 7 | $fragment = new rex_fragment(); 8 | $fragment->setVar('class', 'info', false); 9 | $fragment->setVar('title', $this->i18n('bootstrap_helper_info'), false); 10 | $fragment->setVar('body', $content, false); 11 | echo '
'.$fragment->parse('core/page/section.php').'
'; 12 | -------------------------------------------------------------------------------- /pages/info.roadmap.php: -------------------------------------------------------------------------------- 1 | 2 | text($file); 7 | 8 | 9 | $fragment = new rex_fragment(); 10 | $fragment->setVar('class', 'info', false); 11 | $fragment->setVar('title', $this->i18n('info'), false); 12 | $fragment->setVar('body', $content, false); 13 | echo '
'.$fragment->parse('core/page/section.php').'
'; 14 | -------------------------------------------------------------------------------- /pages/license.php: -------------------------------------------------------------------------------- 1 | text($file); 6 | 7 | 8 | $fragment = new rex_fragment(); 9 | $fragment->setVar('class', 'info', false); 10 | $fragment->setVar('title', $this->i18n('headsupgrid_license'), false); 11 | $fragment->setVar('body', $content, false); 12 | echo '
'.$fragment->parse('core/page/section.php').'
'; 13 | -------------------------------------------------------------------------------- /pages/info.license.php: -------------------------------------------------------------------------------- 1 | text($file); 6 | 7 | 8 | $fragment = new rex_fragment(); 9 | $fragment->setVar('class', 'info', false); 10 | $fragment->setVar('title', $this->i18n('bootstrap_helper_license'), false); 11 | $fragment->setVar('body', $content, false); 12 | echo '
'.$fragment->parse('core/page/section.php').'
'; 13 | -------------------------------------------------------------------------------- /pages/snippets.php: -------------------------------------------------------------------------------- 1 | text($file); 6 | 7 | 8 | $fragment = new rex_fragment(); 9 | $fragment->setVar('class', 'info', false); 10 | $fragment->setVar('title', $this->i18n('bootstrap_helper_snippets'), false); 11 | $fragment->setVar('body', $content, false); 12 | echo '
'.$fragment->parse('core/page/section.php').'
'; 13 | -------------------------------------------------------------------------------- /plugins/documentation/lang/en_gb.lang: -------------------------------------------------------------------------------- 1 | documentation_menu_entry = Documentation 2 | 3 | documentation_navigation_title = Navigation 4 | documentation_content_title = Contents 5 | 6 | documentation_noparser = No Markdown parser available! Please first install a parser (AddOn MarkItUp or textile) 7 | 8 | documentation_navinotfound = Navigation file {0} not found!
This file is required! 9 | documentation_filenotfound = File {0} not found. Contents do not exist (yet).

We're happy if you want to help: {1} 10 | -------------------------------------------------------------------------------- /plugins/documentation/lang/pt_br.lang: -------------------------------------------------------------------------------- 1 | documentation_menu_entry = Documentação 2 | 3 | documentation_navigation_title = Navegação 4 | documentation_content_title = Conteúdo 5 | 6 | documentation_noparser = Nenhum analisador Markdown disponível! Instale primeiro um analisador (AddOn markitup or textile) 7 | 8 | documentation_navinotfound = Arquivo de navegação {0} não localizado!
Este arquivo é necessário! 9 | documentation_filenotfound = Arquivo {0} não localizado. Conteúdos não existem (ainda)

Ficaríamos felizes se você quisesse ajudar: {1} 10 | -------------------------------------------------------------------------------- /plugins/documentation/lang/de_de.lang: -------------------------------------------------------------------------------- 1 | documentation_menu_entry = Dokumentation 2 | 3 | documentation_navigation_title = Navigation 4 | documentation_content_title = Inhalt 5 | 6 | documentation_noparser = Kein Markdown-Parser vorhanden! Bitte zuerst einen Parser installieren (Addon markitup oder textile) 7 | 8 | documentation_navinotfound = Navigations-Datei {0} wurde nicht gefunden!
Diese Datei ist zwingend erforderlich! 9 | documentation_filenotfound = Datei {0} wurde nicht gefunden. Inhalt existiert (noch) nicht.

Wir freuen uns über Mithilfe: {1} 10 | -------------------------------------------------------------------------------- /lib/module/0100_standard_modul/info.inc: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Standard-Modul

5 |

Das Standard Modul ermöglicht es unterschiedliche Inhaltskomponenten in einem wählbaren Raster zu verwalten.

6 |
7 |
8 |

Verfügbare Komponenten

9 |
    10 |
  • Überschrift
  • 11 |
  • Text (Editor: MarkItUp / Redactor 2)
  • 12 |
  • Downloads
  • 13 |
  • Film (extern)
  • 14 |
  • Link (intern / extern)
  • 15 |
16 |
17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | *ACHTUNG*: Dieses AddOn wird nicht mehr weiterentwicklet. 2 | 3 | 4 | ## Bootstrap Helper (Alpha) 5 | 6 | --- 7 | 8 | Dieses AddOn stellt Bootstrap 4 kompatible Module und Templates bereit. (Wunsch)Ziel ist es mit nur wenigen Klicks eine Standard Bootstrap Seite erstellen zu können. **Vorraussetzung** (für die Moduleingaben) sind die AddOns **mForm** und **mBlock**. 9 | 10 | Weitere Informationen finden sich in der Dokumentation (Plugin installieren). 11 | 12 | 13 | --- 14 | 15 | ### Autor: Friends Of REDAXO ### 16 | 17 | * http://www.redaxo.org 18 | * https://github.com/FriendsOfREDAXO 19 | 20 | **Projekt-Lead** 21 | 22 | * [Oliver Kreischer / concedra.de](https://concedra.de) 23 | 24 | **Credits** 25 | 26 | 27 | * [REDAXO](https://redaxo.org), [Friends Of REDAXO](https://friendsofredaxo.github.io), [Bootstrap](https://getbootstrap.com) 28 | -------------------------------------------------------------------------------- /pages/index.php: -------------------------------------------------------------------------------- 1 | i18n('title')); // $this->i18n('title') ist eine Kurzform für rex_i18n::msg('dummy_title') 9 | 10 | // Die Subpages werden nicht mehr über den "subpage"-Parameter gesteuert, sondern mit über "page" (getrennt mit einem Slash, z. B. page=dummy/config) 11 | // Die einzelnen Teile des page-Pfades können mit der folgenden Funktion ausgelesen werden. 12 | $subpage = rex_be_controller::getCurrentPagePart(2); 13 | 14 | // Subpages können über diese Methode eingebunden werden. So ist sichergestellt, dass auch Subpages funktionieren, 15 | // die von anderen Addons/Plugins hinzugefügt wurden 16 | include rex_be_controller::getCurrentPageObject()->getSubPath(); 17 | -------------------------------------------------------------------------------- /package.yml: -------------------------------------------------------------------------------- 1 | package: bootstrap_helper 2 | version: '0.1.5.6' 3 | author: 'Friends Of REDAXO' 4 | supportpage: https://github.com/FriendsOfREDAXO/bootstrap_helper/issues 5 | info: 'Idee und Realisierung der ersten Version: Oliver Kreischer / concedra.de' 6 | compile: 0 7 | 8 | page: 9 | title: 'translate:title' 10 | perm: bootstrap_helper[] 11 | icon: rex-icon fa-bold 12 | subpages: 13 | info: 14 | title: 'translate:general' 15 | subpages: 16 | info: 17 | title: 'translate:info' 18 | roadmap: 19 | title: 'translate:roadmap' 20 | changelog: 21 | title: 'translate:changelog' 22 | license: 23 | title: 'translate:license' 24 | module: 25 | title: 'translate:module' 26 | templates: 27 | title: 'translate:templates' 28 | # snippets: 29 | # title: 'translate:snippets' 30 | 31 | requires: 32 | packages: 33 | mform: '^5.1.0' 34 | mblock: '^2.1.0' 35 | redaxo: '^5.3.0' 36 | 37 | -------------------------------------------------------------------------------- /lib/templates/0010_starter_template/template.inc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | REX_ARTICLE[] 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Friends Of REDAXO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /plugins/documentation/docs/de_de/links.md: -------------------------------------------------------------------------------- 1 | # Links 2 | 3 | Hier finden sich (hoffentliche) interessante / hilfreiche Links zum Thema Bootstrap. 4 | 5 | - [Bootstrap - "offizielles"](#offizielles) 6 | - [Cheat Sheets](#cheatsheets) 7 | - [Tutorials](#tutorial) 8 | - [Downloads](#downloads) 9 | 10 | 11 | ## Bootstrap - "offizielles" 12 | 13 | - [Download Bootstrap 4](https://getbootstrap.com) 14 | - [Get started with Bootstrap 4](https://getbootstrap.com/docs/4.0/getting-started/introduction/) 15 | - [Bootstrap 4 DOCS (dev)](http://devdocs.io/bootstrap~4/) 16 | 17 | 18 | ## Cheat Sheets 19 | 20 | - [hackerthemes](https://hackerthemes.com/bootstrap-cheatsheet/) 21 | - [bootstrapbay](https://bootstrapbay.com/bootstrap4/) 22 | 23 | 24 | ## Tutorials 25 | 26 | - [Quackit](https://www.quackit.com/bootstrap/bootstrap_4/tutorial/) 27 | 28 | 29 | ## Downloads 30 | 31 | - Grid 32 | - [Bootstrap 4 Grid PSD](https://hackerthemes.com/bootstrap-4-grid-psd/) 33 | - [Bootstrap 4 Grid for Affinity Designer](https://hackerthemes.com/bootstrap-4-affinity-designer-grid/) 34 | 35 | - Editoren 36 | - [Bootstrap 4 - Sublime Plugin](https://github.com/degouville/sublime-bootstrap4) 37 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Changelog ### 2 | 3 | --- 4 | 5 | ### Version 0.1.5.6 // 16.02.2018 6 | 7 | - Starter Template angepasst 8 | 9 | 10 | ### Version 0.1.5.5 // 15.02.2018 11 | 12 | - Standard Modul erweitert 13 | 14 | ### Version 0.1.5.4 // 25.01.2018 15 | 16 | - redactor Abfrage korrigiert 17 | - rex_bootstrap_helper Class erstellt 18 | - Abhängigkeit mForm / mBlock berücksichtigt 19 | 20 | --- 21 | 22 | ### Version 0.1.5.3 // 25.01.2018 23 | 24 | - Standard Modul gefixt 25 | - Pfade korrigiert 26 | 27 | --- 28 | 29 | ### Version 0.1.5.2 // 24.01.2018 30 | 31 | - SCSS Fehler beseitigt 32 | 33 | --- 34 | 35 | ### Version 0.1.5.1 // 23.1.2018 36 | 37 | - Name geändert 38 | 39 | --- 40 | 41 | ### Version 0.1.5 // 23.1.2018 42 | 43 | - Standard-Modul 44 | 45 | 46 | --- 47 | 48 | ### Version 0.1.4 // 27.1.2018 49 | 50 | - So einige Änderungen :-) 51 | 52 | --- 53 | 54 | ### Version 0.1.3 // 04.09.2017 55 | 56 | - Idee mit den Fragmenten verworfen -> Funktionen :-) 57 | 58 | ### Version 0.1.2 // 31.08.2017 59 | 60 | - (S)CSS Anpassungen 61 | - Fragmente angepasst 62 | - Modulwrapper entwicklet 63 | 64 | --- 65 | 66 | ### Version 0.1.1 // 28.08.2017 67 | 68 | - inkompatible Module und Template gelöscht 69 | - Modul _Text + Accordion_ bearbeitet 70 | - Roadmap hinzugefügt 71 | 72 | --- 73 | 74 | ### Version 0.1.0 // 25.08.2017 75 | 76 | - erste Version 77 | 78 | -------------------------------------------------------------------------------- /roadmap.md: -------------------------------------------------------------------------------- 1 | ### Roadmap ### 2 | 3 | --- 4 | 5 | **Version 1.1** 6 | 7 | - [ ] _schönes_ Beispiel Theme 8 | - [ ] Doku erweitern 9 | 10 | --- 11 | 12 | **Version 1** 13 | 14 | - Templates 15 | - [ ] Kitchen Sink 16 | - Module 17 | - [ ] Bootstrap Standard Beispiele 18 | - [ ] Routenplaner (Google Maps) 19 | - [ ] SEO Sitemap 20 | - [ ] Abstand mit / ohne Trennlinie (+ Bild) 21 | - [ ] Bild 22 | - [ ] Trennline 23 | - [ ] Sitemap 24 | - [ ] Google Map 25 | 26 | - Sonstiges 27 | - [ ] Source aufräumen 28 | - [ ] Doku erweitern 29 | 30 | --- 31 | 32 | **Version 0.5 // public alpha** 33 | 34 | - [ ] Backend (S)CSS (Module) 35 | - "Modulcontainer" entwicklen 36 | - [x] Grid Auswahl in allen Modulen 37 | - [x] Angabe von ID / Klassen 38 | - [x] Drag and Drop der Tabs in den Modulen 39 | - [x] Reihenfolge Counter: Problem fixen 40 | - Template 41 | - [x] Starter Template 42 | - Module 43 | - [ ] Standard-Modul 44 | - [x] Überschrift mit Auswahl (H1-H6) 45 | - [x] Text 46 | - [ ] Text / Accordion 47 | - [ ] Bild 48 | - [x] freie Angabe von MediaManager Typen 49 | - Funktionen 50 | - [x] ID / Klassen 51 | - [x] Überschrift 52 | - [x] Text 53 | - [ ] Accordion 54 | - [ ] Bild 55 | - [ ] Link 56 | - [x] Funktionen auslagern -> Klasse erstellt 57 | - [ ] Doku erweitern 58 | - [x] Addon (S)CSS :-) 59 | - [ ] Abhängigkeiten prüfen und berücksichtigen 60 | 61 | -------------------------------------------------------------------------------- /boot.php: -------------------------------------------------------------------------------- 1 | setProperty( 'author', 'Friends Of REDAXO' ); 3 | 4 | if ( rex::isBackend() && rex::getUser() ) { 5 | rex_perm::register( 'bootstrap_helper[]' ); 6 | 7 | //////////////////////////////////// 8 | // 9 | // Compile SCSS 10 | // 11 | //////////////////////////////////// 12 | rex_extension::register( 'PACKAGES_INCLUDED', function () { 13 | $scss_compile = 0; 14 | if ( rex::getUser() && $scss_compile == 1 ) { 15 | 16 | $compiler = new rex_scss_compiler(); 17 | 18 | $scss_files = rex_extension::registerPoint( new rex_extension_point( 'BE_STYLE_SCSS_FILES', [ $this->getPath( 'scss/master.scss' ) ] ) ); 19 | $compiler->setScssFile( $scss_files ); 20 | $compiler->setCssFile( $this->getPath( 'assets/css/styles.css' ) ); 21 | $compiler->compile(); 22 | rex_file::copy( $this->getPath( 'assets/css/styles.css' ), $this->getAssetsPath( 'css/styles.css' ) ); 23 | } 24 | } ); 25 | rex_view::addCssFile( $this->getAssetsUrl( 'css/styles.css' ) ); 26 | } 27 | 28 | 29 | //////////////////////////////////// 30 | // Link / Button 31 | //////////////////////////////////// 32 | function bsh_element_link_button_input( $id, $mform ) { 33 | $mform->addFieldset( 'Link / Button ', array( 34 | 'class' => 'linkbutton', 35 | 'style' => 'display:none;' 36 | ) ); 37 | $mform->addHtml( '
38 |

Folgt

39 |
' ); 40 | $mform->addTextField( "$id.0.link_designation", array( 'label' => 'Bezeichnung' ) ); 41 | $mform->addCustomLinkField( "$id.0.link", array( 42 | 'label' => 'Link', 43 | 'data-tel' => 'disable', 44 | 'data-mailto' => 'disable', 45 | 'data-media' => 'disable' 46 | ) ); 47 | 48 | } 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /pages/info.templateuebersicht.php: -------------------------------------------------------------------------------- 1 | setQuery("SELECT rex_template.id as id,rex_template.name, COUNT(s.template_id) as occurence 7 | FROM rex_template 8 | LEFT JOIN rex_article as s 9 | ON (s.template_id=rex_template.id) 10 | GROUP BY rex_template.id ORDER by occurence DESC"); 11 | 12 | foreach ($sql->getArray() as $row) { 13 | if ($row['occurence'] == 0) { 14 | $green = "class='grey'"; 15 | } else { 16 | $green = "class='green'"; 17 | } 18 | 19 | $templateinfos .= ' 20 | 21 | '.$row['id'].' 22 | '.$row['name'].' 23 | '.$row['occurence'].' 24 | 25 | '; 26 | } 27 | 28 | $content = ' 29 | 30 | 31 | 32 | 33 | 34 | 35 | '.$templateinfos.' 36 |
'.$this->i18n('template_id').''.$this->i18n('template_bezeichnung').''.$this->i18n('template_verwendung').'
'; 37 | 38 | $fragment = new rex_fragment(); 39 | $fragment->setVar('class', 'info', false); 40 | $fragment->setVar('title', $this->i18n('template_benutzung'), false); 41 | $fragment->setVar('body', $content, false); 42 | echo '
'.$fragment->parse('core/page/section.php').'
'; 43 | ?> 44 | 52 | 53 | -------------------------------------------------------------------------------- /lang/de_de.lang: -------------------------------------------------------------------------------- 1 | bootstrap_helper_title = Bootstrap Helper 2 | perm_general_bootstrap[] = Rechte für Bootstrap Helper Addon 3 | 4 | 5 | bootstrap_helper_module = Module 6 | 7 | bootstrap_helper_modul = Modul 8 | bootstrap_helper_moduluebersicht = Modulübersicht 9 | bootstrap_helper_config_fehler = config.inc nicht vorhanden in: 10 | bootstrap_helper_info_fehler = info.inc nicht vorhanden in: 11 | bootstrap_helper_input_fehler = input.inc nicht vorhanden in: 12 | bootstrap_helper_output_fehler = output.inc nicht vorhanden in: 13 | bootstrap_helper_template_fehler = template.inc nicht vorhanden in: 14 | 15 | bootstrap_helper_fertig = Fertig 16 | bootstrap_helper_in_bearbeitung = In Bearbeitung 17 | bootstrap_helper_entwicklung_geplant = Entwicklung geplant 18 | bootstrap_helper_input = Input 19 | bootstrap_helper_output = Output 20 | bootstrap_helper_acc_template = Template 21 | 22 | bootstrap_helper_css = CSS 23 | bootstrap_helper_scss = SCSS 24 | 25 | bootstrap_helper_general = Bootstrap Helper 26 | bootstrap_helper_snippets = Snippets 27 | bootstrap_helper_roadmap = Roadmap 28 | 29 | 30 | bootstrap_helper_info = Info 31 | bootstrap_helper_styles = Styles 32 | bootstrap_helper_modul_installieren = Modul installieren 33 | bootstrap_helper_template_installieren = Template installieren 34 | 35 | bootstrap_helper_modul_angelegt = Folgendes Modul wurde angelegt: 36 | bootstrap_helper_modulname_fehler = Bitte einen Modulnamen angeben! 37 | 38 | bootstrap_helper_template_angelegt = Folgendes Template wurde angelegt: 39 | bootstrap_helper_templatename_fehler = Bitte einen Templatenamen angeben! 40 | 41 | bootstrap_helper_kopierter_ordner = Folgender Ordner wurde in den Assets Ordner kopiert: 42 | 43 | bootstrap_helper_templates = Templates 44 | bootstrap_helper_template = Template 45 | bootstrap_helper_templateuebersicht = Templateübersicht 46 | bootstrap_helper_template_id = Template ID 47 | bootstrap_helper_template_bezeichnung = Template Bezeichnung 48 | bootstrap_helper_template_verwendung = Verwendung 49 | bootstrap_helper_template_benutzung = Aktuelle Templatebenutzung 50 | 51 | bootstrap_helper_changelog = Changelog 52 | bootstrap_helper_license = Lizenz 53 | 54 | bootstrap_helper_modul_id = Modul ID 55 | bootstrap_helper_modul_bezeichnung = Modul Bezeichnung 56 | bootstrap_helper_modul_verwendung = Verwendung 57 | bootstrap_helper_modul_benutzung = Aktuelle Modulbenutzung 58 | bootstrap_helper_module_loeschen = Unbenutze Module löschen 59 | bootstrap_helper_modul_geloescht = Modul gelöscht: ID 60 | -------------------------------------------------------------------------------- /pages/settings.php: -------------------------------------------------------------------------------- 1 | setConfig(rex_post('config', [ 8 | ['headsupgrid_config', 'string'], 9 | ['headsupgrid_aktiv', 'string'], 10 | ])); 11 | 12 | $content .= rex_view::info('Änderung gespeichert'); 13 | } 14 | 15 | $content .= ' 16 |
17 |
18 |
19 | getConfig('headsupgrid_aktiv')=="1") $content .= 'checked="checked"'; 22 | $content .= ' /> 23 | 24 |

25 |
26 |
27 | 28 |

29 |
30 |
31 |

Infos zu den Einstellungen finden sich auf der Webseite: http://bohemianalps.com/tools/grid/

32 | 33 | 34 |
35 |
36 |
37 | '; 38 | 39 | $fragment = new rex_fragment(); 40 | $fragment->setVar('class', 'edit'); 41 | $fragment->setVar('title', $this->i18n('headsupgrid_settings')); 42 | $fragment->setVar('body', $content, false); 43 | echo '
'.$fragment->parse('core/page/section.php').'
'; 44 | 45 | 46 | ?> 47 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /pages/info.moduluebersicht.php: -------------------------------------------------------------------------------- 1 | setQuery("SELECT rex_module.id as id,rex_module.name, COUNT(s.module_id) as occurence 8 | FROM rex_module 9 | LEFT JOIN rex_article_slice as s 10 | ON (s.module_id=rex_module.id) 11 | GROUP BY rex_module.id ORDER by occurence DESC"); 12 | 13 | foreach ($sql->getArray() as $row) { 14 | if ($row['occurence'] == 0) { 15 | 16 | $sql_del = rex_sql::factory(); 17 | $sql_del->setTable('rex_module'); 18 | $sql_del->setWhere('id = '.$row['id']); 19 | 20 | if ($sql_del->delete()) { 21 | echo '
'.$this->i18n('modul_geloescht').$row['id'].'
'; 22 | } 23 | 24 | } 25 | } 26 | } 27 | 28 | $modulinfos = ''; 29 | 30 | $sql = rex_sql::factory(); 31 | $sql->setQuery("SELECT rex_module.id as id,rex_module.name, COUNT(s.module_id) as occurence 32 | FROM rex_module 33 | LEFT JOIN rex_article_slice as s 34 | ON (s.module_id=rex_module.id) 35 | GROUP BY rex_module.id ORDER by occurence DESC"); 36 | 37 | foreach ($sql->getArray() as $row) { 38 | if ($row['occurence'] == 0) { 39 | $green = "class='grey'"; 40 | } else { 41 | $green = "class='green'"; 42 | } 43 | 44 | $modulinfos .= ' 45 | 46 | '.$row['id'].' 47 | '.$row['name'].' 48 | '.$row['occurence'].' 49 | 50 | '; 51 | } 52 | 53 | $content = ' 54 | 55 | 56 | 57 | 58 | 59 | 60 | '.$modulinfos.' 61 |
'.$this->i18n('modul_id').''.$this->i18n('modul_bezeichnung').''.$this->i18n('modul_verwendung').'
'; 62 | 63 | $content .= ''; 64 | 65 | $fragment = new rex_fragment(); 66 | $fragment->setVar('class', 'info', false); 67 | $fragment->setVar('title', $this->i18n('modul_benutzung'), false); 68 | $fragment->setVar('body', $content, false); 69 | echo '
'.$fragment->parse('core/page/section.php').'
'; 70 | ?> 71 | 80 | 85 | -------------------------------------------------------------------------------- /plugins/documentation/assets/documentation.css: -------------------------------------------------------------------------------- 1 | .bsh_addon_documentation h1 { 2 | font-size: 22px; 3 | margin-top: 5px; 4 | margin-bottom: 20px; 5 | } 6 | .bsh_addon_documentation h2 { 7 | font-size: 16px; 8 | margin-top: 40px; 9 | text-transform: uppercase; 10 | margin-bottom: 20px; 11 | letter-spacing: 0.02em; 12 | border-bottom: 1px solid #ccc; 13 | padding: 13px 15px 10px; 14 | background: #dfe3e9 !important; 15 | } 16 | .bsh_addon_documentation h3 { 17 | margin-top: 40px; 18 | margin-bottom: 5px; 19 | } 20 | 21 | .bsh_addon_documentation blockquote { 22 | margin: 20px 0; 23 | background: #f3f6fb; 24 | } 25 | .bsh_addon_documentation blockquote h2 { 26 | margin: -10px -20px 20px; 27 | background: transparent; 28 | border-top: 1px #ccc; 29 | } 30 | 31 | .bsh_addon_documentation ol { 32 | padding-left: 18px; 33 | } 34 | 35 | .bsh_addon_documentation ul { 36 | margin-bottom: 10px; 37 | padding-bottom: 5px;; 38 | padding-left: 16px; 39 | } 40 | .bsh_addon_documentation ul li { 41 | list-style-type: square; 42 | list-style-position: outside; 43 | } 44 | .bsh_addon_documentation ul ul { 45 | padding-top: 5px; 46 | } 47 | .bsh_addon_documentation ul ul li { 48 | list-style-type: circle; 49 | list-style-position: outside; 50 | padding-bottom: 0; 51 | } 52 | 53 | .bsh_addon_documentation p, 54 | .bsh_addon_documentation li { 55 | font-size: 14px; 56 | line-height: 1.6; 57 | } 58 | 59 | .bsh_addon_documentation hr { 60 | margin-top: 40px; 61 | border-top: 1px solid #ddd; 62 | } 63 | 64 | .bsh_addon_documentation table { 65 | width: 100%; 66 | max-width: 100%; 67 | border: 1px solid #ddd; 68 | margin: 20px 0 30px; 69 | } 70 | .bsh_addon_documentation th { 71 | background: #f7f7f7; 72 | border-bottom: 2px solid #ddd; 73 | border-collapse: separate; 74 | } 75 | .bsh_addon_documentation th, 76 | .bsh_addon_documentation td { 77 | border: 1px solid #ddd; 78 | padding: 8px; 79 | line-height: 1.42857143; 80 | vertical-align: top; 81 | font-size: 13px; 82 | } 83 | .bsh_addon_documentation table tr:hover { 84 | background: #fafafa; 85 | } 86 | 87 | .bsh_addon_documentation-navi a.current { 88 | font-weight: bold; 89 | } 90 | 91 | .bsh_addon_documentation a[href^="http://"], 92 | .bsh_addon_documentation a[href^="https://"] { 93 | margin-right:5px; 94 | } 95 | .bsh_addon_documentation a[href^="http://"] sup, 96 | .bsh_addon_documentation a[href^="https://"] sup { 97 | font-size:0.8em; 98 | } 99 | 100 | .bsh_addon_documentation-navi p strong { 101 | display: inline-block; 102 | border-bottom: 2px solid #eee; 103 | width: 100%; 104 | } 105 | 106 | .bsh_addon_documentation-navi ul { 107 | margin-bottom: 32px; 108 | padding-left: 0; 109 | margin-left: -15px; 110 | margin-right: -15px; 111 | } 112 | .bsh_addon_documentation-navi ul li { 113 | list-style-type: none; 114 | margin: 0 0 0 20px; 115 | line-height: 2; 116 | } 117 | .bsh_addon_documentation-navi ul li :before { 118 | font-family: FontAwesome; 119 | content: '\f061'; 120 | color: #bbb; 121 | margin-right: 8px; 122 | } 123 | .bsh_addon_documentation-navi ul li a:hover { 124 | text-decoration: none; 125 | } 126 | .bsh_addon_documentation-navi ul li a:hover:before { 127 | font-family: FontAwesome; 128 | content: '\f061'; 129 | color: #563d7c; 130 | margin-right: 8px; 131 | } 132 | -------------------------------------------------------------------------------- /plugins/documentation/docs/de_de/_vorlage.md: -------------------------------------------------------------------------------- 1 | # Markdown-Vorlage - Seitenüberschrift 2 | 3 | - [Kopfbereich](#kopfbereich) 4 | - [Überschriften](#ueberschriften) 5 | - [Links](#links) 6 | - [Listen](#listen) 7 | - [Tabellen](#tabellen) 8 | - [Code](#code) 9 | - [Hinweise](#hinweise) 10 | - [Anker 3](#anker-3) 11 | - [Anker 3a](#anker-3a) 12 | - [Anker 3b](#anker-3b) 13 | - [Anker 3c](#anker-3c) 14 | - [Anker 4](#anker-4) 15 | 16 | --- 17 | 18 | 19 | ## Kopfbereich 20 | 21 | 1. Seitenüberschrift als h1 auszeichnen 22 | 2. TOC Liste mit Anker erstellen, Die erste Ebene wird im Text mit `h2`, die zweite Ebene mit `h3` ausgezeichnet. 23 | 24 | **Beispiel Kopfbereich** 25 | 26 | # Seitenüberschrift 27 | 28 | - [Überschrift](#anker-zur-ueberschrift) 29 | - [Anker 2](#anker-2) 30 | - [Anker 2a](#anker2a) 31 | - [Anker 3](#anker-3) 32 | - [Anker 3a](#anker-3a) 33 | - [Anker 3b](#anker-3b) 34 | - [Anker 3c](#anker-3c) 35 | - [Anker 4](#anker-4) 36 | 37 | 38 | 39 | ## Überschriften mit Anker setzen 40 | 41 | Die Sprunganker müssen an der betreffenden Stelle gesetzt werden. 42 | 43 | **Beispiel Sprunganker** 44 | 45 | 46 | ## Überschrift 47 | 48 | --- 49 | 50 | 51 | ## Links 52 | 53 | Der verlinkte Text wird in eckige Klammern gesetzt, der Link dahinter in runden Klammern. 54 | 55 | **Beispiel Link** 56 | 57 | [Linktitel](markdown-datei.md) 58 | 59 | **Ausgabe Link** 60 | 61 | [Linktitel](markdown-datei.md) 62 | 63 | --- 64 | 65 | 66 | ## Listen 67 | 68 | **Beispiel Liste** 69 | 70 | - Listenpunkt 1 71 | - Listenpunkt 2 72 | - Listenpunkt 3 73 | - Listenpunkt 4 74 | 75 | **Ausgabe Liste** 76 | 77 | - Listenpunkt 1 78 | - Listenpunkt 2 79 | - Listenpunkt 3 80 | - Listenpunkt 4 81 | 82 | **Beispiel numerierte Liste** (wichtig ist die Zahl mit Punkt, es kann aber auch ordentlich durchnumeriert werden) 83 | 84 | 1. Listenpunkt 1 85 | 1. Listenpunkt 2 86 | 1. Listenpunkt 3 87 | 1. Listenpunkt 4 88 | 89 | oder 90 | 91 | 1. Listenpunkt 1 92 | 2. Listenpunkt 2 93 | 3. Listenpunkt 3 94 | 4. Listenpunkt 4 95 | 96 | **Ausgabe Liste** 97 | 98 | 1. Listenpunkt 1 99 | 2. Listenpunkt 2 100 | 3. Listenpunkt 3 101 | 4. Listenpunkt 4 102 | 103 | --- 104 | 105 | 106 | ## Tabellen 107 | 108 | **Beispiel Tabelle** 109 | 110 | ``` 111 | Alt | Neu 112 | ------ | ------ 113 | `$REX['SERVERNAME']` | `rex::getServername()` 114 | ``` 115 | 116 | **Ausgabe Tabelle** 117 | 118 | | Alt | Neu | 119 | | -------------------- | ---------------------- | 120 | | `$REX['SERVERNAME']` | `rex::getServername()` | 121 | 122 | --- 123 | 124 | 125 | ## Code 126 | 127 | **Beispiel Code Block** 128 | 129 | ```php 130 | 148 | ## Hinweise 149 | 150 | Für Hinweise könnten wir die Blockquote-Formatierung verwenden. 151 | 152 | **Beispiel Hinweis** 153 | 154 | > **Hinweis:** Aliquam arcu lectus, imperdiet sollicitudin vehicula ultricies, pellentesque at nunc. Pellentesque ut consectetur nisl. In finibus efficitur turpis, posuere facilisis dui tristique ac. 155 | 156 | **Ausgabe Hinweis** 157 | 158 | > **Hinweis:** Aliquam arcu lectus, imperdiet sollicitudin vehicula ultricies, pellentesque at nunc. Pellentesque ut consectetur nisl. In finibus efficitur turpis, posuere facilisis dui tristique ac. 159 | 160 | --- 161 | 162 | ## Kennzeichnung von offenen Punkten bzw. in Arbeit 163 | 164 | **Beispiel** 165 | 166 | - Hilfe / FAQ 167 | - [Wo finde ich Hilfe?](help_where.md) (in Arbeit) 168 | - [FAQ-Liste](help_faq.md) (offen) 169 | 170 | **Ausgabe ** 171 | 172 | - Hilfe / FAQ 173 | - [Wo finde ich Hilfe?](help_where.md) (in Arbeit) 174 | - [FAQ-Liste](help_faq.md) (offen) 175 | 176 | --- 177 | 178 | ## Markdown-Referenz 179 | 180 | [daringfireball.net/projects/markdown/syntax](https://daringfireball.net/projects/markdown/syntax) 181 | [markdown.de/](http://markdown.de/) -------------------------------------------------------------------------------- /plugins/documentation/pages/index.php: -------------------------------------------------------------------------------- 1 | getProperty('defaultnavi'); 14 | if (!$default_navi) { 15 | $default_navi = 'main_navi.md'; 16 | } 17 | 18 | // Default Intro aus package.yml 19 | $default_intro = $plugin->getProperty('defaultintro'); 20 | if (!$default_intro) { 21 | $default_intro = 'main_intro.md'; 22 | } 23 | 24 | // User-Backend-Sprache 25 | $lang = rex::getUser()->getLanguage(); 26 | // Feste Sprache der Dokumentation aus package.yml 27 | if ($plugin->getProperty('documentationlang')) { 28 | $lang = $plugin->getProperty('documentationlang'); 29 | $_SESSION['bsh_addon_documentation']['doclang'] = $lang; 30 | } else { 31 | // Bei mehreren verfügbaren Sprachen Sprachwähler aufbauen 32 | $docs = []; 33 | $path = rex_path::plugin($addon, $docplugin , 'docs/'); 34 | foreach (scandir($path) as $i_file) { 35 | if ($i_file != '.' && $i_file != '..') { 36 | if (is_dir($path . $i_file) && file_exists($path . $i_file . '/' . $default_navi)) { 37 | $docs[$i_file] = $i_file; 38 | } 39 | } 40 | } 41 | if (count($docs) > 1) { 42 | if (isset($_SESSION['bsh_addon_documentation']['doclang'])) { 43 | $lang = $_SESSION['bsh_addon_documentation']['doclang']; 44 | } 45 | if ($doclang) { 46 | $lang = $doclang; 47 | } 48 | $sel_lang = new rex_select(); 49 | $sel_lang->setStyle('class="form-control"'); 50 | $sel_lang->setName('doclang'); 51 | $sel_lang->setId('doclang'); 52 | $sel_lang->setSize(1); 53 | $sel_lang->setSelected($lang); 54 | foreach ($docs as $l) { 55 | $sel_lang->addOption($l, $l); 56 | } 57 | //$langselect = $sel_lang->get(); 58 | $langselect = ' 59 |
60 | 61 | ' . $sel_lang->get() . ' 62 |
63 | '; 64 | if ($formsubmit) { 65 | $_SESSION['bsh_addon_documentation']['doclang'] = $lang; 66 | } 67 | } 68 | } 69 | 70 | // Pfad zusammenbauen aus Addon + Plugin + Sprache 71 | $path = rex_path::plugin($addon, $docplugin , 'docs/' . $lang . '/'); 72 | 73 | // vorhandene Dateien ermitteln 74 | $files = []; 75 | if (file_exists($path) && is_dir($path)) { 76 | foreach (scandir($path) as $i_file) { 77 | if ($i_file != '.' && $i_file != '..') { 78 | $files[$i_file] = $i_file; 79 | } 80 | } 81 | } 82 | 83 | // Bild ausgeben wenn Parameter document_image gesetzt ist und die Datei existiert 84 | if (rex_request('document_image', 'string', '') != '' && isset($files[rex_request('document_image', 'string')])) { 85 | while (ob_get_length()) { 86 | ob_end_clean(); 87 | } 88 | $content = rex_file::get($path . basename(rex_request('document_image', 'string'))); 89 | echo $content; 90 | exit; 91 | } 92 | 93 | // Navigation aus $default_navi 94 | $navi = trim(rex_file::get($path . $default_navi)); 95 | if ($navi == '') { 96 | $navi = rex_view::error(rex_i18n::rawMsg('documentation_navinotfound', $lang . '/' . $default_navi)); 97 | } 98 | 99 | // Content aus Parameter document_file, sonst aus $default_intro 100 | $file = rex_request('document_file', 'string', $default_intro); 101 | $content = trim(rex_file::get($path . basename($file))); 102 | if ($content == '') { 103 | $content = rex_view::warning(rex_i18n::rawMsg('documentation_filenotfound', $lang . '/' . $file, $this->getProperty('supportpage'))); 104 | } 105 | 106 | // Images im Inhalt ersetzen 107 | // ![Alt-Text](bildname.png) 108 | // ![Ein Screenshot](screenshot.png) 109 | foreach ($files as $i_file) { 110 | $search = '#\!\[(.*)\]\((' . $i_file . ')\)#'; 111 | $replace = '$1'; 112 | $content = preg_replace($search, $replace, $content); 113 | } 114 | 115 | // Parse Navigation & Content 116 | if (class_exists('rex_markdown')) { 117 | $parser = rex_markdown::factory(); 118 | $navi = $parser->parse($navi); 119 | $content = $parser->parse($content); 120 | } else if (class_exists('Parsedown')) { 121 | $parser = new Parsedown(); 122 | $navi = $parser->text($navi); 123 | $content = $parser->text($content); 124 | } else { 125 | $navi = ''; 126 | $content = rex_view::error(rex_i18n::rawMsg('documentation_noparser')); 127 | } 128 | 129 | // Links in Navigation ersetzen 130 | $search = '#
  • setVar('title', rex_i18n::rawMsg('documentation_navigation_title'), false); 145 | $fragment->setVar('body', $navi, false); 146 | $navi = $fragment->parse('core/page/section.php'); 147 | 148 | // Inhalt 149 | $fragment = new rex_fragment(); 150 | $fragment->setVar('title', rex_i18n::rawMsg('documentation_content_title'), false); 151 | $fragment->setVar('body', $content, false); 152 | $content = $fragment->parse('core/page/section.php'); 153 | 154 | // Navigation und Inhalt ausgeben 155 | echo ' 156 |
    157 |
    158 |
    ' . $navi . $langselect . ' 159 |
    160 |
    ' . $content . ' 161 |
    162 |
    163 |
    164 | 165 | '; 166 | -------------------------------------------------------------------------------- /pages/templates.php: -------------------------------------------------------------------------------- 1 | '; 13 | foreach ($errors as $error) { 14 | echo '
  • '.$error.'
  • '; 15 | } 16 | echo ''; 17 | } 18 | 19 | foreach ($modulesdirs as $dir) { 20 | 21 | // echo $dir.'
    '; 22 | // echo basename($dir).'
    '; 23 | 24 | $module_key = basename($dir); 25 | 26 | 27 | if (file_exists($dir.'/config.inc')) { 28 | $templates[$module_key]['config'] = parse_ini_file($dir.'/config.inc',TRUE); 29 | } else { 30 | $templates_errors[] = $this->i18n('config_fehler').' '.$dir; 31 | } 32 | 33 | if (file_exists($dir.'/info.inc')) { 34 | $templates[$module_key]['info'] = file_get_contents($dir.'/info.inc'); 35 | } else { 36 | $templates_errors[] = $this->i18n('info_fehler').' '.$dir; 37 | } 38 | 39 | if (file_exists($dir.'/styles_scss.inc')) { 40 | $templates[$module_key]['styles_scss'] = file_get_contents($dir.'/styles_scss.inc'); 41 | } else { 42 | $templates[$module_key]['styles_scss'] = ''; 43 | } 44 | if (file_exists($dir.'/styles_css.inc')) { 45 | $templates[$module_key]['styles_css'] = file_get_contents($dir.'/styles_css.inc'); 46 | } else { 47 | $templates[$module_key]['styles_css'] = ''; 48 | } 49 | 50 | if (file_exists($dir.'/metainfos.inc')) { 51 | $templates[$module_key]['metainfos'] = $dir.'/metainfos.inc'; 52 | } else { 53 | $templates[$module_key]['metainfos'] = ''; 54 | } 55 | 56 | if (file_exists($dir.'/mediamanager.inc')) { 57 | $templates[$module_key]['mediamanager'] = $dir.'/mediamanager.inc'; 58 | } else { 59 | $templates[$module_key]['mediamanager'] = ''; 60 | } 61 | 62 | if (file_exists($dir.'/template.inc')) { 63 | $templates[$module_key]['template'] = file_get_contents($dir.'/template.inc'); 64 | } else { 65 | $templates_errors[] = $this->i18n('template_fehler').' '.$dir; 66 | } 67 | 68 | } 69 | 70 | if (count($templates_errors) > 0) { 71 | show_errors($templates_errors); 72 | } else { 73 | 74 | foreach ($templates as $module_key => $modul) { 75 | /* 76 | $templateausgabe[] = ' 77 | 78 | 79 | '.var_dump($modul['config']).' 80 | 81 | 82 | '; 83 | */ 84 | 85 | $statusfarbe = ''; 86 | $statusinfo = ''; 87 | $folder = ''; 88 | // Status: Fertig 89 | if ($modul['config']['status'] == 1) { 90 | $statusfarbe = ' color: #563D7C; '; 91 | $statusinfo = $this->i18n('fertig'); 92 | } 93 | // Status: in Bearbeitung 94 | if ($modul['config']['status'] == 2) { 95 | $statusfarbe = ' color: #CDC1E2; '; 96 | $statusinfo = $this->i18n('in_bearbeitung'); 97 | } 98 | // Status: geplant 99 | if ($modul['config']['status'] == 0) { 100 | $statusfarbe = ' color: #E5E1EA; '; 101 | $statusinfo = $this->i18n('entwicklung_geplant'); 102 | } 103 | 104 | $templateausgabe[] = ' 105 | 106 |
    107 | 108 | 109 | 110 | 111 | 112 | 113 |
    114 | 115 |

    Info

    116 |
    117 | '.$modul['info'].' 118 |
    119 |
    120 | 121 |
    122 |

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

    123 | '.rex_string::highlight($modul['template']).' 124 |
    125 | 126 | 127 |
    128 |
    129 | '; 130 | 131 | if($modul['styles_scss']) { 132 | $templateausgabe[] = ' 133 |

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

    134 | '.rex_string::highlight($modul['styles_scss']); 135 | } 136 | if($modul['styles_css']) { 137 | $templateausgabe[] = ' 138 |

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

    139 | '.rex_string::highlight($modul['styles_css']); 140 | } 141 | $templateausgabe[] = ' 142 |
    143 |
    144 | 145 | 146 | 147 | '.$this->i18n('info').' 148 | 149 | 150 | '; 151 | if ($templates[$module_key]['styles_scss'] OR $templates[$module_key]['styles_css']) { 152 | $templateausgabe[] = ''.$this->i18n('styles').'' ; 153 | } 154 | 155 | 156 | $templateausgabe[] = ' 157 | '; 158 | if ($modul['config']['status'] != 0) { 159 | $templateausgabe[] = ''; 160 | } 161 | $templateausgabe[] = ' 162 | 163 |
    164 | '; 165 | 166 | 167 | if (rex_request('install') == $module_key) { 168 | //$modul_name = $modul['config']['templatename']; 169 | 170 | $modul_name = rex_post("modul_name", 'string'); 171 | if ($modul_name == '') { 172 | echo rex_view::warning($this->i18n('templatename_fehler')); 173 | } else { 174 | 175 | if($templates[$module_key]['metainfos'] != '') { 176 | include($templates[$module_key]['metainfos']); 177 | } 178 | 179 | if($templates[$module_key]['mediamanager'] != '') { 180 | include($templates[$module_key]['mediamanager']); 181 | } 182 | 183 | // Ordner in Assets kopieren 184 | if (array_key_exists('assets_folder',$modul['config']) && $modul['config']['assets_folder'] != '') { 185 | $srcdir = '../redaxo/src/addons/modulsammlung/lib/module/'.$module_key.'/'.$modul['config']['assets_folder']; 186 | // echo $srcdir; 187 | rex_dir::copy($srcdir ,'.././assets/'.$modul['config']['assets_folder']); 188 | echo rex_view::success($this->i18n('kopierter_ordner').' '.$modul['config']['assets_folder']); 189 | } 190 | 191 | 192 | $template = $templates[$module_key]['template']; 193 | 194 | $mi = rex_sql::factory(); 195 | $mi->debugsql = 0; 196 | $mi->setTable('rex_template'); 197 | $mi->setValue('content', $template); 198 | $mi->setValue('name', $modul_name); 199 | $mi->insert(); 200 | $modul_id = (int) $mi->getLastId(); 201 | echo rex_view::success($this->i18n('template_angelegt').' '.$modul_name); 202 | } 203 | } 204 | 205 | 206 | } 207 | } 208 | $content = ' 209 |
    210 |
    211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | '; 223 | 224 | $content .= implode($templateausgabe); 225 | 226 | $content .= ' 227 | 228 |
    '.$this->i18n('templates').'
    229 |
    230 |
    '; 231 | 232 | 233 | $fragment = new rex_fragment(); 234 | $fragment->setVar('class', 'info', false); 235 | $fragment->setVar('title', $this->i18n('bootstrap_helper_templates'), false); 236 | $fragment->setVar('body', $content, false); 237 | echo '
    '.$fragment->parse('core/page/section.php').'
    '; 238 | -------------------------------------------------------------------------------- /pages/module.php: -------------------------------------------------------------------------------- 1 | '; 12 | foreach ($errors as $error) { 13 | echo '
  • '.$error.'
  • '; 14 | } 15 | echo ''; 16 | } 17 | 18 | foreach ($modulesdirs as $dir) { 19 | // echo $dir.'
    '; 20 | // echo basename($dir).'
    '; 21 | 22 | $module_key = basename($dir); 23 | 24 | if (file_exists($dir.'/config.inc')) { 25 | $moduls[$module_key]['config'] = parse_ini_file($dir.'/config.inc',TRUE); 26 | } else { 27 | $moduls_errors[] = $this->i18n('config_fehler').' '.$dir; 28 | } 29 | 30 | if (file_exists($dir.'/info.inc')) { 31 | $moduls[$module_key]['info'] = file_get_contents($dir.'/info.inc'); 32 | } else { 33 | $moduls_errors[] = $this->i18n('info_fehler').' '.$dir; 34 | } 35 | 36 | if (file_exists($dir.'/styles_scss.inc')) { 37 | $moduls[$module_key]['styles_scss'] = file_get_contents($dir.'/styles_scss.inc'); 38 | } else { 39 | $moduls[$module_key]['styles_scss'] = ''; 40 | } 41 | if (file_exists($dir.'/styles_css.inc')) { 42 | $moduls[$module_key]['styles_css'] = file_get_contents($dir.'/styles_css.inc'); 43 | } else { 44 | $moduls[$module_key]['styles_css'] = ''; 45 | } 46 | 47 | if (file_exists($dir.'/input.inc')) { 48 | $moduls[$module_key]['input'] = file_get_contents($dir.'/input.inc'); 49 | } else { 50 | $moduls_errors[] = $this->i18n('input_fehler').' '.$dir; 51 | } 52 | 53 | if (file_exists($dir.'/output.inc')) { 54 | $moduls[$module_key]['output'] = file_get_contents($dir.'/output.inc'); 55 | } else { 56 | $moduls_errors[] = $this->i18n('output_fehler').' '.$dir; 57 | } 58 | 59 | if (file_exists($dir.'/metainfos.inc')) { 60 | $moduls[$module_key]['metainfos'] = $dir.'/metainfos.inc'; 61 | } else { 62 | $moduls[$module_key]['metainfos'] = ''; 63 | } 64 | 65 | if (file_exists($dir.'/mediamanager.inc')) { 66 | $moduls[$module_key]['mediamanager'] = $dir.'/mediamanager.inc'; 67 | } else { 68 | $moduls[$module_key]['mediamanager'] = ''; 69 | } 70 | 71 | if (file_exists($dir.'/template.inc')) { 72 | $moduls[$module_key]['template'] = $dir.'/template.inc'; 73 | } else { 74 | $moduls[$module_key]['template'] = ''; 75 | } 76 | } 77 | 78 | if (count($moduls_errors) > 0) { 79 | show_errors($moduls_errors); 80 | } else { 81 | 82 | foreach ($moduls as $module_key => $modul) { 83 | /* 84 | $modulausgabe[] = ' 85 | 86 | 87 | '.var_dump($modul['config']).' 88 | 89 | 90 | '; 91 | */ 92 | 93 | $statusfarbe = ''; 94 | $statusinfo = ''; 95 | $folder = ''; 96 | // Status: Fertig 97 | if ($modul['config']['status'] == 1) { 98 | $statusfarbe = ' color: #563D7C; '; 99 | $statusinfo = $this->i18n('fertig'); 100 | } 101 | // Status: in Bearbeitung 102 | if ($modul['config']['status'] == 2) { 103 | $statusfarbe = ' color: #CDC1E2; '; 104 | $statusinfo = $this->i18n('in_bearbeitung'); 105 | } 106 | // Status: geplant 107 | if ($modul['config']['status'] == 0) { 108 | $statusfarbe = ' color: #E5E1EA; '; 109 | $statusinfo = $this->i18n('entwicklung_geplant'); 110 | } 111 | 112 | $modulausgabe[] = ' 113 | 114 |
    115 | 116 | 117 | 118 | 119 | 120 | 121 |
    122 |

    Info

    123 |
    124 | '.$modul['info'].' 125 |
    126 |
    127 |
    128 |

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

    129 | '.rex_string::highlight($modul['input']).' 130 |

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

    131 | '.rex_string::highlight($modul['output']).' 132 |
    133 |
    134 |
    '; 135 | 136 | if($modul['styles_scss']) { 137 | $modulausgabe[] = ' 138 |

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

    139 | '.rex_string::highlight($modul['styles_scss']); 140 | } 141 | if($modul['styles_css']) { 142 | $modulausgabe[] = ' 143 |

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

    144 | '.rex_string::highlight($modul['styles_css']); 145 | } 146 | $modulausgabe[] = ' 147 |
    148 |
    149 | 150 | 151 | '.$this->i18n('info').' 152 | 153 | 154 | '; 155 | if ($moduls[$module_key]['styles_scss'] OR $moduls[$module_key]['styles_css']) { 156 | $modulausgabe[] = ''.$this->i18n('styles').'' ; 157 | } 158 | $modulausgabe[] = ' 159 | '; 160 | if ($modul['config']['status'] != 0) { 161 | $modulausgabe[] = ''; 162 | } 163 | $modulausgabe[] = ' 164 | 165 |
    166 | '; 167 | 168 | if (rex_request('install') == $module_key) { 169 | //$modul_name = $modul['config']['modulname']; 170 | 171 | $modul_name = rex_post("modul_name", 'string'); 172 | if ($modul_name == '') { 173 | echo rex_view::warning($this->i18n('modulname_fehler')); 174 | } else { 175 | if($moduls[$module_key]['metainfos'] != '') { 176 | include($moduls[$module_key]['metainfos']); 177 | } 178 | if($moduls[$module_key]['mediamanager'] != '') { 179 | include($moduls[$module_key]['mediamanager']); 180 | } 181 | if($moduls[$module_key]['template'] != '') { 182 | include($moduls[$module_key]['template']); 183 | } 184 | // Ordner in Assets kopieren 185 | if (array_key_exists('assets_folder',$modul['config']) && $modul['config']['assets_folder'] != '') { 186 | $srcdir = '../redaxo/src/addons/modulsammlung/lib/module/'.$module_key.'/'.$modul['config']['assets_folder']; 187 | // echo $srcdir; 188 | rex_dir::copy($srcdir ,'.././assets/'.$modul['config']['assets_folder']); 189 | echo rex_view::success($this->i18n('kopierter_ordner').' '.$modul['config']['assets_folder']); 190 | } 191 | 192 | $input = $moduls[$module_key]['input']; 193 | $output = $moduls[$module_key]['output']; 194 | 195 | $mi = rex_sql::factory(); 196 | $mi->debugsql = 0; 197 | $mi->setTable('rex_module'); 198 | $mi->setValue('input', $input); 199 | $mi->setValue('output', $output); 200 | $mi->setValue('name', $modul_name); 201 | $mi->insert(); 202 | $modul_id = (int) $mi->getLastId(); 203 | echo rex_view::success($this->i18n('modul_angelegt').' '.$modul_name); 204 | } 205 | } 206 | } 207 | } 208 | $content = ' 209 |
    210 |
    211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | '; 223 | 224 | $content .= implode($modulausgabe); 225 | 226 | $content .= ' 227 | 228 |
    229 |
    230 |
    '; 231 | 232 | $fragment = new rex_fragment(); 233 | $fragment->setVar('class', 'info', false); 234 | $fragment->setVar('title', $this->i18n('bootstrap_helper_module'), false); 235 | $fragment->setVar('body', $content, false); 236 | echo '
    '.$fragment->parse('core/page/section.php').'
    '; 237 | -------------------------------------------------------------------------------- /lib/module/0100_standard_modul/input.inc: -------------------------------------------------------------------------------- 1 | 23 | 24 |
    25 | 38 |
    '; 39 | echo '
    '; 40 | for ( $i = 1; $i <= count( $values ); $i ++ ) { 41 | echo '
    '; 42 | $id = $i; 43 | $mform = new MForm(); 44 | $mform->addFieldset( 'Element', array( 'class' => 'elemente' ) ); 45 | $mform->addSelectField( "$id.0.element", array( 'empty' => 'Element auswählen', 46 | 'headline' => 'Überschrift', 47 | 'textarea' => 'Textfeld', 48 | 'downloads' => 'Downloads', 49 | 'video' => 'Film (extern)', 50 | 'link' => 'Link (intern / extern)' 51 | 52 | ), array( 'label' => '', 'class' => 'elementSelect' ) ); 53 | $bsh_input->headline_input( $id, $mform ); 54 | $bsh_input->textarea_input( $id, $mform ); 55 | $bsh_input->downloads_input( $id, $mform ); 56 | $bsh_input->video_input( $id, $mform ); 57 | $bsh_input->link_input( $id, $mform ); 58 | 59 | echo MBlock::show( $id, $mform->show() ); 60 | echo '
    Weitere Einstellungen
    61 |
    '; 62 | 63 | $bsh_input->id_class_input( $id ); 64 | $bsh_input->media_manager_typ_input( $id ); 65 | 66 | echo '
    67 |
    '; 68 | } 69 | $options = array( 70 | '12' => '
    ', 71 | '6_6' => '
    ', 72 | '4_4_4' => '
    ', 73 | '3_3_3_3' => '
    ', 74 | '6_3_3' => '
    ', 75 | '3_6_3' => '
    ', 76 | '3_3_6' => '
    ', 77 | '8_4' => '
    ', 78 | '4_8' => '
    ' 79 | ); 80 | $grid = ''; 81 | foreach ( $options as $value => $label ) { 82 | $checked = 'REX_VALUE[20]' == $value ? ' checked="checked"' : ''; 83 | $grid .= ''; 84 | } 85 | echo ' 86 |
    87 |
    88 |
    89 | Grid Auswahl 90 |
    91 |

    Sofern Sie das Raster nachträglich ändern möchten ist es notwendig den Block vor der Änderung einmal zu speichern (ein Klick auf "Block übernehmen" reicht). Dies ist nur wichtig sofern Sie die Anordnung der Tabs vorher geändert haben.

    92 |
    93 |
    94 |

    Wie soll der Inhalt dargestellt werden?

    95 |

    Die Auwahl des Rasters kann jederzeit einfach geändert werden. Bitte beachten Sie hierzu den Hinweis!

    96 |
    97 |
    98 | ' . $grid . ' 99 |
    100 |
    101 |
    '; 102 | $bsh_input->container_input( 5 ); 103 | $bsh_input->id_class_input( 5 ); 104 | $bsh_input->media_manager_typ_input( 5 ); 105 | echo ' 106 |
    107 |
    '; 108 | ?> 109 | 196 | -------------------------------------------------------------------------------- /lib/module/0100_standard_modul/output.inc: -------------------------------------------------------------------------------- 1 | '; 49 | print_r( rex_var::toArray( "REX_VALUE[1]" ) ); 50 | print_r( rex_var::toArray( "REX_VALUE[20]" ) ); 51 | echo ''; 52 | } else { 53 | echo '
    ';
     54 | 			dump( rex_var::toArray( "REX_VALUE[1]" ) );
     55 | 			dump( rex_var::toArray( "REX_VALUE[2]" ) );
     56 | 			dump( rex_var::toArray( "REX_VALUE[3]" ) );
     57 | 			dump( rex_var::toArray( "REX_VALUE[4]" ) );
     58 | 			dump( rex_var::toArray( "REX_VALUE[20]" ) );
     59 | 			echo '
    '; 60 | } 61 | } 62 | } 63 | 64 | if ( $grid == '12' ) { 65 | unset( $values[2] ); 66 | unset( $values[3] ); 67 | unset( $values[4] ); 68 | } 69 | 70 | if ( $grid == '6_6' || $grid == '8_4' || $grid == '4_8' ) { 71 | unset( $values[3] ); 72 | unset( $values[4] ); 73 | } 74 | 75 | if ( $grid == '4_4_4' || $grid == '6_3_3' || $grid == '3_6_3' || $grid == '3_3_6' ) { 76 | unset( $values[4] ); 77 | } 78 | 79 | if ( $grid == '3_3_3_3' ) { 80 | } 81 | 82 | if ( 'REX_VALUE[19]' ) { 83 | $reihenfolge = explode( ',', 'REX_VALUE[19]' ); 84 | } else { 85 | $reihenfolge = array( '1', '2', '3', '4' ); 86 | } 87 | 88 | foreach ( $reihenfolge as $nummer ) { 89 | if ( isset( $values[ $nummer ]) ) { 90 | $value = $values[ $nummer ]; 91 | 92 | if ( $debug ) { 93 | dump($value); 94 | } 95 | 96 | $outback[] = ' 97 |
    98 | Bereich ' . $zaehler . ' 99 |
    '; 100 | foreach ( $value as $val ) { 101 | switch ( $val['element'] ) { 102 | case 'headline': 103 | $html_block[$zaehler] .= $bsh_output->headline_output( $val['headline_text'], $val['headline_size'] ); 104 | $outback[] = $bsh_output->headline_output( $val['headline_text'], $val['headline_size'] ); 105 | break; 106 | case 'textarea': 107 | $html_block[$zaehler] .= $bsh_output->textarea_output( $val['textarea_content'] ); 108 | $outback[] = $bsh_output->textarea_output( $val['textarea_content'] ); 109 | break; 110 | case 'downloads': 111 | $html_block[$zaehler] .= $bsh_output->downloads_output( $val['downloads_headline'],$val['REX_MEDIALIST_1'] ); 112 | $outback[] = $bsh_output->downloads_output( $val['downloads_headline'],$val['REX_MEDIALIST_1'] ); 113 | break; 114 | case 'link': 115 | $html_block[$zaehler] .= $bsh_output->link_output( $val['link_name'],$val['link_extern'],$val['REX_LINK_1'],$val['link_type'],$val['link_class'] ); 116 | $outback[] = $bsh_output->link_output( $val['link_name'],$val['link_extern'],$val['REX_LINK_1'],$val['link_type'],$val['link_class'] ); 117 | break; 118 | case 'video': 119 | $html_block[$zaehler] .= $bsh_output->video_output( $val['video_id'],$val['video_service'] ); 120 | $outback[] = $bsh_output->video_output( $val['video_id'],$val['video_service'] ); 121 | break; 122 | } 123 | } 124 | foreach ( $value as $val ) { 125 | if ( isset($val['class'])) { 126 | $individuelle_css_klasse[$zaehler] = ' '.$val['class']; 127 | } else { 128 | $individuelle_css_klasse[$zaehler] = ''; 129 | } 130 | if ( isset($val['id_value'])) { 131 | $individuelle_css_id[$zaehler] = ' id="'.$val['id_value'].'"'; 132 | } else { 133 | $individuelle_css_id[$zaehler] = ''; 134 | } 135 | if ( isset($val['mmtyp'])) { 136 | $individueller_mmtyp[$zaehler] = $val['mmtyp']; 137 | } else { 138 | $individueller_mmtyp[$zaehler] = ''; 139 | } 140 | 141 | if ( isset( $val['id_value'], $val['class'], $val['mmtyp'] ) ) { 142 | if ( $val['id_value'] != '' OR $val['class'] != '' OR $val['mmtyp'] != '' ) { 143 | $outback[] = 'Individuelle Einstellungen'; 144 | } 145 | if ( $val['id_value'] != '' ) { 146 | $outback[] = ' 147 |
    148 | 149 |
    150 | ' . $val['id_value'] . ' 151 |
    152 |
    153 | '; 154 | } 155 | if ( $val['class'] != '' ) { 156 | $outback[] = ' 157 |
    158 | 159 |
    160 | ' . $val['class'] . ' 161 |
    162 |
    163 | '; 164 | } 165 | if ( $val['mmtyp'] != '' ) { 166 | $outback[] = ' 167 |
    168 | 169 |
    170 | ' . $val['mmtyp'] . ' 171 |
    172 |
    173 | '; 174 | } 175 | } 176 | } 177 | $outback[] = ' 178 |
    179 |
    '; 180 | $zaehler ++; 181 | } 182 | } 183 | 184 | $outback[] = ' 185 |
    186 | Weitere Modul Einstellungen 187 |
    '; 188 | foreach ( $values[5] as $val ) { 189 | if ( $val['container'] != 'container' ) { 190 | $outback[] = ' 191 |
    192 | 193 |
    194 | Volle Browserbreite 195 |
    196 |
    197 | '; 198 | } 199 | if ( $val['id_value'] != '' ) { 200 | $wrapper_id = 'id="'.$val['id_value'].'"'; 201 | $outback[] = ' 202 |
    203 | 204 |
    205 | ' . $val['id_value'] . ' 206 |
    207 |
    208 | '; 209 | } 210 | if ( $val['class'] != '' ) { 211 | $wrapper_class = ' '.$val['class']; 212 | $outback[] = ' 213 |
    214 | 215 |
    216 | ' . $val['class'] . ' 217 |
    218 |
    219 | '; 220 | } 221 | if ( $val['mmtyp'] != '' ) { 222 | $outback[] = ' 223 |
    224 | 225 |
    226 | ' . $val['mmtyp'] . ' 227 |
    228 |
    229 | '; 230 | } 231 | } 232 | 233 | $outback[] = ' 234 |
    235 | 236 |
    237 |
    238 |
    239 |
    240 |
    241 |
    242 | '; 243 | 244 | switch ($grid) { 245 | case '12': 246 | $out .= ' 247 |
    248 | '.$html_block[1].' 249 |
    '.PHP_EOL; 250 | break; 251 | case '6_6': 252 | $out .= ' 253 |
    254 | '.$html_block[1].' 255 |
    256 |
    257 | '.$html_block[2].' 258 |
    '.PHP_EOL; 259 | break; 260 | case '4_4_4': 261 | $out .= ' 262 |
    263 | '.$html_block[1].' 264 |
    265 |
    266 | '.$html_block[2].' 267 |
    268 |
    269 | '.$html_block[3].' 270 |
    '.PHP_EOL; 271 | break; 272 | case '3_3_3_3': 273 | $out .= ' 274 |
    275 | '.$html_block[1].' 276 |
    277 |
    278 | '.$html_block[2].' 279 |
    280 |
    281 | '.$html_block[3].' 282 |
    283 |
    284 | '.$html_block[4].' 285 |
    '.PHP_EOL; 286 | break; 287 | 288 | case '6_3_3': 289 | $out .= ' 290 |
    291 | '.$html_block[1].' 292 |
    293 |
    294 | '.$html_block[2].' 295 |
    296 |
    297 | '.$html_block[3].' 298 |
    '.PHP_EOL; 299 | break; 300 | 301 | 302 | case '3_6_3': 303 | $out .= ' 304 |
    305 | '.$html_block[1].' 306 |
    307 |
    308 | '.$html_block[2].' 309 |
    310 |
    311 | '.$html_block[3].' 312 |
    '.PHP_EOL; 313 | break; 314 | 315 | case '3_3_6': 316 | $out .= ' 317 |
    318 | '.$html_block[1].' 319 |
    320 |
    321 | '.$html_block[2].' 322 |
    323 |
    324 | '.$html_block[3].' 325 |
    '.PHP_EOL; 326 | break; 327 | case '8_4': 328 | $out .= ' 329 |
    330 | '.$html_block[1].' 331 |
    332 |
    333 | '.$html_block[2].' 334 |
    '.PHP_EOL; 335 | break; 336 | case '4_8': 337 | $out .= ' 338 |
    339 | '.$html_block[1].' 340 |
    341 |
    342 | '.$html_block[2].' 343 |
    '.PHP_EOL; 344 | break; 345 | } 346 | if ( rex::isBackend() ) { 347 | echo implode( $outback ); 348 | } else { 349 | echo '
    '.$out.'
    '; 350 | } 351 | 352 | -------------------------------------------------------------------------------- /assets/css/styles.css: -------------------------------------------------------------------------------- 1 | body[id^="rex-page-bootstrap-helper"] .page-header h1{color:#563d7c}body[id^="rex-page-bootstrap-helper"] .rex-page-nav li a{color:#563d7c !important}body[id^="rex-page-bootstrap-helper"] .rex-page-nav li a i{margin-right:3px}body[id^="rex-page-bootstrap-helper"] .rex-page-nav li a:hover{color:#000 !important;border-top-color:#563d7c !important}body[id^="rex-page-bootstrap-helper"] .rex-page-nav li.active a{color:#fff !important;background:#563d7c !important;border-color:#563d7c !important}body[id^="rex-page-bootstrap-helper"] .rex-page-nav .navbar li a{color:#acb0b5 !important}body[id^="rex-page-bootstrap-helper"] .rex-page-nav .navbar li a i{margin-right:3px}body[id^="rex-page-bootstrap-helper"] .rex-page-nav .navbar li a:hover{color:#000 !important}body[id^="rex-page-bootstrap-helper"] .rex-page-nav .navbar li.active a{background:#fff !important;color:#563d7c !important}#bootstrap-helper-addon-wrapper table{margin:0}#bootstrap-helper-addon-wrapper table tbody{border:none !important}#bootstrap-helper-addon-wrapper table .td_title{width:100%}#bootstrap-helper-addon-wrapper table tr:hover{background:#f9f9f9}#bootstrap-helper-addon-wrapper .panel{border:1px solid #563d7c}#bootstrap-helper-addon-wrapper .panel-heading{background:#563d7c;border-bottom:none !important}#bootstrap-helper-addon-wrapper .panel-title{color:#fff}#bootstrap-helper-addon-wrapper h2{color:#563d7c}#bootstrap-helper-addon-wrapper a{color:#563d7c}#bootstrap-helper-addon-wrapper .btn-success{background:#e5e1ea;border-color:#cdc1e2;color:#563d7c}#bootstrap-helper-addon-wrapper .btn-success:hover{border-color:#563d7c}#bootstrap-helper-addon-wrapper .btn-primary{background:#563d7c;margin-right:8px !important}#bootstrap-helper-addon-wrapper .btn-primary:hover{color:#563d7c;background:#e5e1ea}#bootstrap-helper-addon-wrapper .rex-nav-pagination{font-size:10px;padding:10px}#bootstrap-helper-addon-wrapper .rex-nav-pagination ul{font-size:10px}#bootstrap-helper-addon-wrapper .rex-nav-pagination ul li a{padding:6px 8px 6px 8px}#bootstrap-helper-addon-wrapper .accordiontitle{font-weight:bold;margin:10px 0 0 0;font-size:11px;padding:3px 0 3px 15px;width:100%;color:#fff;background:#563d7c !important}#bootstrap_helper_modul_wrapper #tabs i{display:none}#bootstrap_helper_modul_wrapper #tabs span{display:inline-block}@media (max-width:767px){#bootstrap_helper_modul_wrapper #tabs i{display:inline-block;font-style:normal;padding:0 5px 0 5px;font-size:16px}#bootstrap_helper_modul_wrapper #tabs span{display:none}#bootstrap_helper_modul_wrapper .control-label{margin-left:10px}#bootstrap_helper_modul_wrapper #anleitung p{padding-left:20px}#bootstrap_helper_modul_wrapper #anleitung .control-label{padding-left:25px}}#bootstrap_helper_modul_wrapper #anleitung .control-label{margin-top:-6px}#bootstrap_helper_modul_wrapper #anleitung{margin-top:20px}#bootstrap_helper_modul_wrapper #anleitung .panel-heading{font-size:14px !important;padding:10px;background:#dfe3e9;width:100%;text-align:left;margin-bottom:20px;border:none}#bootstrap_helper_modul_wrapper #anleitung .panel-heading span{margin-right:5px}#bootstrap_helper_modul_wrapper #anleitung .panel-heading:hover{color:#000}#bootstrap_helper_modul_wrapper .nav-tabs > li > a{color:#31404f;background-color:#dfe3e9;font-size:12px;border-top:1px solid #9da6b2;border-left:1px solid #9da6b2;border-right:1px solid #9da6b2;padding:8px;margin-bottom:1px;height:38px;top:1px;padding-top:10px}#bootstrap_helper_modul_wrapper .nav-tabs > li.active > a,#bootstrap_helper_modul_wrapper .nav-tabs > li.active > a:hover,#bootstrap_helper_modul_wrapper .nav-tabs > li.active > a:focus{color:#31404f;background-color:#f5f5f5;height:39px}#bootstrap_helper_modul_wrapper .nav-tabs > li > a:hover{background-color:#fafafa;border-bottom:none}#bootstrap_helper_modul_wrapper .markitup{min-height:200px}#bootstrap_helper_modul_wrapper .tab-content{background:#f5f5f5;margin-top:-20px;padding:10px 10px 0 10px;border-right:1px solid #9da6b2;border-left:1px solid #9da6b2;border-bottom:1px solid #9da6b2}#bootstrap_helper_modul_wrapper .tab-content h3{font-size:14px !important;padding:10px;background:#dfe3e9;width:100%;margin-bottom:20px}#bootstrap_helper_modul_wrapper .tab-content .control-label{font-weight:normal;font-size:12px !important}#bootstrap_helper_modul_wrapper input.form-control,#bootstrap_helper_modul_wrapper textarea.form-control{background:#fff}#bootstrap_helper_modul_wrapper .grid{text-align:right}#bootstrap_helper_modul_wrapper .grid input{display:none}.grid label div,#bootstrap_helper_modul_wrapper .gridimage,#bootstrap_helper_modul_grid .gridimage{float:left;width:340px;height:60px;border:1px solid #ccc}#bootstrap_helper_modul_wrapper .grid label:hover div{cursor:pointer;border:1px solid #659cce}#bootstrap_helper_modul_wrapper .grid :checked + div{border:1px solid #737373 !important}#bootstrap_helper_modul_wrapper .img12,#bootstrap_helper_modul_grid .img12{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ9JREFUeNrs3TEKgzAYgNFagpuDBxC8/3HcBVcRXAQRQVJPYIcWapr3BpdAhh8+IoikiDE+gPw8jQDED4gfED8gfkD8gPgB8QPiB+4tXC8vy2JGkKiqqpz8gPgB8YP4AfED4gfED4gfED8gfkD8gPgB8QN/Gv84jsMwGCjkFf9xHH3fix8SEj7fYl3Xs/x9300TMoq/67p5ns0Rsou/ruuyLM/X/mmaTBMyir9pmvO5bZv4IS0+9YH4AfED4gfED/yR8J1dQmjb1jQhIUWM8WLZjT2QLjf2AOIHxA/iB8QPiB8QPyB+QPyA+AHxA+IHxA/czpu/+gAnPyB+QPyA+AHxA+IHxA+IHxA/8BMvAQYAX1c3Eu5IAT8AAAAASUVORK5CYII=)}#bootstrap_helper_modul_wrapper .img6_6,#bootstrap_helper_modul_grid .img6_6{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgxJREFUeNrs3c1LInEYwPFNByl8icyLLMogXjr1L/T/gxcPZaJS3VJ8QaEXLd3f7sCyl929LLjM7/M5xGjQ4Zn5No+UeHI4HL4A8SkYAYgfED8gfkD8gPgB8QPiB8QP/N+SP397s9mYUZ5Uq1Wn2+l25wdrPyB+QPyA+AHxA+IHxA+IHxA/IH5A/ID4gaNJ/tUPen5+fn19TdPUTPPt/f19Pp9vt9tKpVKv1wsF94+44//8/ByPx+GCEH++zWazu7u7/X6fPTw7O7u+vj49PTWZSNf+l5eX29vbUL5p5ttutxsMBqH8TqcTmq/VamHXGw6HJhPpnb/f7y8WC3OMQdj2w4oXVv12u/390kmSXq+3XC5NJtL4Ly4uSqVSuCbCQmia+RbOctjzLy8vs4fZpzyGXwEmE2n8rVYrfH17exN/7n39ITv++PgYjUbhoNFomEyk8ROh1Wp1f38fXvCXy+Xw+t9AxE8UHh4eHh8fw87fbDa73W6xWDQT8ZN/k8nk6ekpBH91dWXhFz8Rbfuh/HCQpmmpVFqv19nztVrNcMRPnk2n0+xgPB7/+vzNzY3hxBt/kiT+ty/3zs/Pww3fHHLjJPtr7e/4CJec8Yk9TvdP3pUBkRI/iB8QPyB+QPyA+AHxA+IHxA+IHxA/IH7guP7yrj7AnR8QPyB+QPyA+AHxA+IHxA+IHziKbwIMAO4pnqqPCpuHAAAAAElFTkSuQmCC)}#bootstrap_helper_modul_wrapper .img4_4_4,#bootstrap_helper_modul_grid .img4_4_4{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvdJREFUeNrs3VtLomsYBuDRpJTMNtqOqYgKKhD6C/1/6CQiozRWUtDWon3ZZp7pgw4Wi1mjGTnMdR2En0EHd+/9vc9rG1Ovr6/fgL9PWgSg/IDyA8oPKD+g/IDyA8oPKD/Q3TK//vTV1ZWMftPAwIAkJfkHJWnnB2M/oPyA8gPKDyg/oPyA8gPKDyg/oPyA8gPKD3yBTKe+0NHR0d3d3ezsrEzb9vDwcHZ29vj4mM/nR0ZG0mm35jbd3t6en5+/vLwMDw9HmAL5xPI/Pz/XarVYtcrftpOTk0qlEus1uczlcisrK9lsVjKt2t/fj9X4/m40ExMTS0tLYvmUsT/uspubm9F8abat2WxubW1F8+fm5qLzhUIhxqjt7W3JtOr+/j6aH0PT8vJyuVzu6+s7PDw8PT2VTOd3/vX19UajIccPimk/pqcY9WdmZn5+VzKZtbW1GFwl06pYjbHnx24/Pj4el5eXl/V6/ebmplQqCafD5Y8zVW9vbyzcmFql+ZFzU8z5xWIxuUxG1rgFSKZVY2NjcQ9Noot5KrmBxjOS6Xz5p6enk1lL+T/i+5vk8dPTU7VajQc2q3YW9Jt48M+b5Mz/6/9m5cxPV7i4uIiBP4bV/v7+OP8LpG1DQ0OxM8VYGmf+5C5Ah3d+OijW6N7eXsz8k5OTCwsLPT09MmlVHO+vr6/z+fzQm8HBwY2NjYODAz+HsvN3r93d3Sh/Op0ul8uLi4ua3/boVKlU6vV6cplKpeLj+w9QsfN345JN1mtsUDGpxtifPF8oFITTkmKxWK1Wj4+PI7pcLler1eLJ0dFRySh/l4rFmjxIFuu71dVV4bQkm83Oz89HjDs7O8kzcQTw6sknlj+TyThTfUQcTWPDl0NHTE1NlUqlRqPRbDZj/4+TfzL88y+p99+C/E/eHeX3eZ8ZSf5ZSXrBD/5Syg/KDyg/oPyA8gPKDyg/oPyA8gPKDyg/oPzA1/qfv+oD7PyA8gPKDyg/oPyA8gPKDyg/oPzAl/ghwAAFHxBk8znuiwAAAABJRU5ErkJggg==)}#bootstrap_helper_modul_wrapper .img3_3_3_3,#bootstrap_helper_modul_grid .img3_3_3_3{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FJREFUeNrs3dtLKlEYxuEUcbLMrKzpokIsIkHoJui2P737LgoL6STZCTpoiZnmdLCXWTJ0sWtDBO291u+5kJwg+Fzzzvq+nDLW7/eHALgnzksAEH4AhB8A4QdA+AEQfgCEHwDhB0D4AfzbEl9/++HhwcqyPc9LJpOffTcIgl6vZ2XhY2NjLDfLzc4P0PYDIPwACD8Awg+A8AMg/AAIPwDCD4DwAyD8AAg/AMIP4NckfuoHXV9fd7vdfD7vzmvXaDTa7XYikZiYmBgZGXGk6k6nc39///b2pqrT6bRTaVHV5+fn/X7fjvP8Z8L/+vparVaDIHAk/Kp3d3e32WxGR/Ih6wu/uLjQQkcf9DI7O7uysuJO+E9OThR+s9y0/YOtoFKpKPnunASnp6dKvva91dXVpaWlWCxWq9VarZbdVT89PSn58Xi8WCyWSiXP866urur1uiOLrn7HJJ+2f6BcLt/d3bk2LN3c3OhxeXk5k8mo+9VpoRFAj3pqcdVaaO352u1939dTXezOzs4eHx9zuZz1K/7y8nJwcDA6Oqp6Cf+ATv1kMqk2+Pb21p3wa6tPpVJR1E0brOHf7qpnZmYmJydNmc/Pz7rY6QsdcWHFDw8Pe73e2tra1tYW4R+Yn583DaFT4V9fX//YBWhL1OVgamrK7qoTIX1RC5mZ/+t/FGVNoyeFQkE7v0118Vbf96nfOT4+rlQqSr4m/+HhYUcKz2azuuir49PMb64CFtOGf3R0ND4+bvY5Zn4Mdbvdvb09TYDKvIZ/F7pfFdtut9PpdDakPOgVuLy8tPttjmazqRnHvL8THSyXy3Nzc//7ohP+79CYs7Ozoz1BrX6xWLR+2o9ioD3Q932VbH7xMRS+9e1C7brqfXyqQc/81pPwO2d/f1/J1wS4sLDQ6XTMQS9kcdW60mnM0fSbyWRSqVS1WtXB6elpu9faD0VPNzc39bixsUHb76IgCMztPWqDt7e3o+PW3+ejAWdxcVGZ1/5vjmgEKBQKnBJOh199rzs39n52d6fGYOtr16Cby+XU9GoM1v6vkk3z7w6bzvNYdKvmH/ERLpbhE3tY7ghv9QGOIvwA4QdA+AEQfgCEHwDhB0D4ARB+AIQfAOEHQPgBEH4Av+svf9UHgJ0fAOEHQPgBEH4AhB8A4QdA+AEQfgCEH8CveBdgACF2bQzem2woAAAAAElFTkSuQmCC)}#bootstrap_helper_modul_wrapper .img6_3_3,#bootstrap_helper_modul_grid .img6_3_3{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvtJREFUeNrs3W1LIlEYgGE1HdNqQktCF0UlhEAwoh/QT/cH6AcVVERT+xCYmG9TvmtPnV1ZWHI3dsHlzH19GHSDhaNzzzw6xTg3m40DgP24eAkA4gdA/ACIHwDxAyB+AMQPgPgBED+A/5t794/H4zGvkU5OTk5s+HZ7vV7DMD776Xw+n81mNny7OfMDjP0AiB8A8QMgfgDED4D4ARA/AOIHQPwAiB8A8QMgfgB74P5X/1Gn05lMJvF4nNdUb7PZrNfrzefz4+PjYDDoctni/LFer5+fny3L8vv9Z2dnBwcHxP/darVqNBqyQxC/3rrdbqVSkRLUU5/Pl8lkDg8P9V617NiFQuHl5UU9NQwjnU6bpsnY73h9fS2Xy/IC0YbeFotFtVqV8pPJpDQve7/MerVaTfuFN5tNKT8UCl1fX0ciEdnV9Vj13575i8WijEOEYQcy7cuIJ6N+LBZ733Xc7nw+3+/37bBw2aZSKY/HI4e8x8fH7RRg6/gDgYBMQbJPyEBIHnqTd1nmfPnEq56quzzKIUD7hd/c3MhWypft09OTbOUISPyOaDQq2+l0Svza+/ZBPV4ul/V6XR6cn59rv/DtlxrZbFYdBRKJhAbr4lIfvmwwGMjAPxqNjo6O5PO/fRYej8dl8FksFqVSSYMvudzsyviSVqvVbrdl5g+Hw5eXl3pc9Nqt0+nI9uLiQl3MyuVylmXJqLudg4gf+ru/v394eJDgr66u7DDwK/IBR872pmn6fD556nQ6HR9X/hn7YaNpX8pX069hGKMftF+4OsxVq9V+v99sNsfjsfSvwbGPMz/+lPqiWzQajZ///e7uTu+FJxIJOcYNh8NCoaDO/PJ5R00BxP9+vYff7dPe6enpjltfaExWfXt7q369Vx4Hg0Gv16vBupzqau1nuGOPZrhjz6+4Yw8AeyF+gPgBED8A4gdA/ACIHwDxAyB+AMQPgPgBED8A4gewX7/5qz4AnPkBED8A4gdA/ACIHwDxAyB+AMQPgPgB7MWbAAMARkEV6b+++m4AAAAASUVORK5CYII=)}#bootstrap_helper_modul_wrapper .img3_6_3,#bootstrap_helper_modul_grid .img3_6_3{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvRJREFUeNrs3WtLIlEcgHFdbbykYl4IkmQEEQRBCaGv7wcQvCIRifpGMPF+Gccw97+eRXpRuxALW2ee34uhLVgY5zxzzmnc1X08Hl0AnOcHLwFA/ACIHwDxAyB+AMQPgPgBED8A4gfwtXn//OPVaqXlaft8PsMwPvrpfr+3bZvBweX+7sLhMDM/AOIHQPwA8QMgfgDED4D4ARA/AOIHQPwAiB8A8QMgfgBfi/df/UWj0ciyLNM0nfPaTSaT9Xrt9Xqvrq6CwSCDSWOvr6/T6VQut1zoeDzu8XiI/7fD4dDtdvf7vUPil/NttVrz+fz8HfOESLQkA7vRaGw2G/VHwzAKhUIkEmHZ79put51OR14g54yGwWAg5YdCoWKxmM1m3W53v99fLpd0oqVeryflJ5PJUql0c3MjQ/3x8ZGZ39VsNmU55LTR8Pz8LMdcLie3f1nzz2Yz2QLIUYPZAO/u79Tlvri4kEs8HA7PqwBHxy9DX1ZBsgwej8fOGQ0y1QcCgXPq6vMOZfNPJ1q6u7uTo5R/vu/HYjHid93e3spxt9s5Kv77+/u3qwBZ+8jtIB6P04mW/H6/+qJSqai7QCaT0eC8eNT3ebLeeXp66nQ6Ur7s/M9DBLoyTVNu8S8vL61WS4NfcrFS/STLstrttuz9pHnZDeqxDsS7RqORHK+vr9UDnWq1ul6vZambSqWI33Fkm1Ov123blnkgn8+z29ebrO9kto9EIoFAwHX6jY/r9OSfZb8TPTw8SPmXl5fpdHq73S5P+N++dZVIJNRFn81mvV5vtVpJ/+qbzPzOIps99fYeWfPXarW3G0Le56OlTCYjN/fFYtFoNNTMn81m1SqA+H895XLOuD8ej++ebDQapRMtGYZRLpfV23vl61gs5vP5NDgvt3pG/RE+sQdc7u+LT+wBQPwAiB8gfgDED4D4ARA/AOIHQPwAiB8A8QMgfgDED+DL+cu/6gPAzA+A+AEQPwDiB0D8AIgfAPEDIH4AxA/gv/gpwAAthiJ8l+WEIQAAAABJRU5ErkJggg==)}#bootstrap_helper_modul_wrapper .img3_3_6,#bootstrap_helper_modul_grid .img3_3_6{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwRJREFUeNrs3V9LInEUxvFVBifNzNTMCw2pCAPBG6H3/woUCw1KUCkoK5M0/4ykPTgge9G2Nwu1c76fC9ERgjMzz5zfoakJrVarXwDsCbMLAMIPgPADIPwACD8Awg+A8AMg/AAIP4Cfzfn669FoFMiyXdeNRCJ/+tbzvPl8HsjCd3Z2DB5us74+3HR+gGU/AMIPgPADIPwACD8Awg+A8AMg/AAIPwDCD4DwAyD8AL6B869+0MPDw3Q6LRaLdvbd8/PzeDx2HGdvby8WixmpejKZvLy8LJdLVR2Px4mQ9fC/v7+3223P84yEX/VeXFwMh8PNluJa4Au/vb3Vgd486CWXy5VKJVJkd9mvVtBsNpV8O3ut2+0q+ep7lUrl5OQkFAp1Op3X19dgVz2bzZT8cDh8dnZWLpdd172/v396eiJFRjt/o9EYDAbW9lq/39fr6elpIpHQ6lfLYI0AetXHAFetA62er25/cHCgj7rY9Xq9t7e3TCZDkCyGX6d+JBLRMvjx8dHOXlOrj0ajm6j7y2AN/8GuOpvNplIpv8zFYqGLnd5oCykyGv5CoeAvCE2F//z8/PdVgFqiLgfpdDrg58qa3nTW/Jn/638UhYDP/GZpvXNzc9NsNpV8Tf5bW1tGCk8mk7roa8Wnmd+/CsBi5zdrOp1eXl5q4lXmNfxbWP2q2PF4HI/Hk2u7u7vaA3d3d6Z+v0vnt05jTr1eVxi01K9Wq0bm3uFw2Gq1er2e/1HrHb0ul0vOBzq/IVdXV/P5fHt7+/DwcDKZ+BvdtQBXrSudxpx+v59IJKLRaLvd1sb9/X3OB8Jvhed5/u096vy1Wm2zPfD3+WjAOT4+Vuavr6/9LRoBjo6OOCVMh99xHDuD32q1+rRYjcGBrz2fz2cymcFgsFgs1P9Vsr/4x/8otLlV81M8sSdgeGKPKTyxBwDhB0D4AcIPgPADIPwACD8Awg+A8AMg/AAIPwDCD4DwA/hx/vJXfQDo/AAIPwDCD4DwAyD8AAg/AMIPgPADIPwAvsWHAAMARlAaCQUVROkAAAAASUVORK5CYII=)}#bootstrap_helper_modul_wrapper .img8_4,#bootstrap_helper_modul_grid .img8_4{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg1JREFUeNrs3c9LInEYwOFNB0k0I+siiyLipVP/Qv8/dPGgJY6oNxVLErS0cr+7c9nL/jiYI/k8BxkVOrzMp3mlZE622+034PhkjADED4gfED8gfkD8gPgB8QPiBw5b9Pe3F4uFGbFnZ2dnzsk9TNKVH6z9gPgB8QPiB8QPiB8QPyB+QPyA+AHxA+IHUhDt6geNx+PValWv182U1L2+vs5ms/V6XSwWy+VyJuMi92nxv7+/x3EcZi1+UjedTjudzsfHR/I0n8/f3Nycnp6azO7X/uVy2W63Q/mmSeo2m839/X0ov9FohOZLpVJYSLvdrsns/srfarUeHx/NkQMRtv2wh4ZVv1ar/Ty/o+ju7u7p6clkdh//xcVFLpcL4w67lmmSunAqhj3/8vIyeZrcijL8CjCZ3cdfrVbD48vLi/g5BN9/SY7f3t56vV44uLq6Mpndxw+HaT6fPzw8hA/8hUIhfP43EPFzFAaDwXA4DDt/pVJpNpvZbNZMxM/X1+/3R6NRCP76+trCL36OaNsP5YeDer2ey+Wen5+T10ulkuGIn69sMpkkB3Ec//767e2t4XxK/FEU+d8+DsH5+Xm44JvD/zhJ/hD6J+6Owv65Y89+JukLD3CkxA/iB8QPiB8QPyB+QPyA+AHxA+IHxA+IH0jXP77VB7jyA+IHxA+IHxA/IH5A/ID4AfEDqfghwAD6BZ6qshTg0AAAAABJRU5ErkJggg==)}#bootstrap_helper_modul_wrapper .img4_8,#bootstrap_helper_modul_grid .img4_8{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhBJREFUeNrs3U9LInEcwOFNBzEypfIiizKEl069Bd8/ePFgJY1YtxQ1Evrj3/3tzmUvuxsZ25TPc4jRoMO3+ThfKZm9zWbzDdg9OSMA8QPiB8QPiB8QPyB+QPyA+IFsi/7+7dlsZkavdHh4aJJ8onPSlR+s/YD4AfED4gfED4gfED8gfkD8gPgB8QPiBz5A9F4/6O7u7unpKY5jM32zl5eX8Xg8n89LpdLx8XEu56WZzMe/Wq2SJAlnrfjfbDQaXVxcrNfr9OH+/v75+XmxWDQZsrv2Pz4+drvdUL5pvtlisbi8vAzln56ehubL5XJYo3q9nsmQ3St/p9OZTCbmuKWw7YftKaz6jUbj528litrt9nQ6NRmyG//R0VGhUAgnbthaTXOb901hzz85OUkfpjdQDC8BJkN246/X6+Hr8/Oz+Lfx/Zf0eLlcXl9fh4NqtWoyZDd+3tf9/f3V1VV4w39wcBDe/xsI4t8Jg8Hg5uYm7Py1Wq3ZbObzeTNB/F9fv9+/vb0NwZ+dnVn4Ef8Obfuh/HAQx3GhUHh4eEifL5fLhoP4v7LhcJgeJEny+/OtVstwyHT8URT5375tVCqVcME3B/6nvfRPyn/iPjOv5449fK5z0kdHYEeJH8QPiB8QPyB+QPyA+AHxA+IHxA+IHxA/8LH+8ak+wJUfED8gfkD8gPgB8QPiB8QPiB/4ED8EGADiTZ6qytwGIAAAAABJRU5ErkJggg==)}.outback.mblock_wrapper{margin:15px 0 20px 0;background:#f5f5f5;border:1px solid #36404f}.outback.mblock_wrapper legend{font-size:14px;font-weight:bold;border:none;background:#36404f;color:#fff;padding:3px 3px 3px 10px}.outback.mblock_wrapper legend.small{font-size:12px;line-height:1;margin:0;padding:0 0 12px 0}.outback.mblock_wrapper fieldset{padding:10px}.outback.mblock_wrapper fieldset legend{font-size:12px;font-weight:bold !important;padding:5px 5px 5px 0px;width:100%;color:#36404f;background:none;border-bottom:1px solid #9ca6b2 !important;margin-bottom:20px;border:none}.outback.mblock_wrapper fieldset .label_left{padding-top:1px;font-weight:normal;font-size:12px;text-align:right;font-weight:normal}.outback.more_settings{margin:15px 0 20px 0;background:none;border:none}.outback.more_settings legend{font-size:12px;font-weight:bold;border:none;color:#36404f;background:none;padding:3px 3px 3px 10px;border-bottom:1px solid #9ca6b2 !important}.outback.more_settings legend.small{font-size:10px;line-height:1;margin:0;padding:0 0 12px 0}#bootstrap_helper_modul_wrapper .mform fieldset{margin-top:22px}#bootstrap_helper_modul_wrapper .mform fieldset legend{font-size:16px;font-weight:normal !important;padding:5px 5px 5px 10px;background:#dfe3e9 !important;width:100%;margin-bottom:20px;border:none}#bootstrap_helper_modul_wrapper .mform fieldset label{padding-top:4px;font-weight:normal}#bootstrap_helper_modul_wrapper .module_help_link{float:right;font-size:14px;line-height:1.5;margin-right:8px;margin-top:2px}#bootstrap_helper_modul_wrapper .module_help_link:hover{color:#563d7c;cursor:pointer}#bootstrap_helper_modul_wrapper .module_help_content{display:none;margin-top:-21px;padding:16px 16px 8px 14px;border-top:1px solid #fff;color:#000;background:#e0e3e9;font-size:14px;line-height:1.5;margin-bottom:16px}#bootstrap_helper_modul_wrapper .module_help_content em{color:#555}#bootstrap_helper_modul_wrapper .extra_settings{font-size:12px;line-height:1.5;padding:0 16px 12px 0;margin-bottom:-1px;font-weight:bold;text-align:right}#bootstrap_helper_modul_wrapper .extra_settings i{padding-left:6px}#bootstrap_helper_modul_wrapper .extra_settings:hover{cursor:pointer}#bootstrap_helper_modul_wrapper .extra_settings_content{display:none}#bootstrap_helper_modul_wrapper .panel-add .panel-body,#bootstrap_helper_modul_wrapper .panel-edit .panel-body{background-color:#fff}#bootstrap_helper_modul_wrapper .btn-save,#bootstrap_helper_modul_wrapper .btn-apply{background-color:#3c4d60;border-color:#3c4d60}.sortitem{position:relative;min-height:50px}#bootstrap_helper_modul_wrapper .mblock_wrapper{margin:auto;padding:0}#bootstrap_helper_modul_wrapper .mblock_wrapper > div{border:1px solid #ccc;background:#f0f0f0;margin:0 0 10px 0;padding:20px 16px 0 25px;position:relative}#bootstrap_helper_modul_wrapper .mblock_wrapper span.sorthandle{cursor:move;position:absolute;opacity:0.6;top:2px;bottom:2px;left:2px;width:16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAB3RJTUUH3wIDBycZ/Cj09AAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAAWSURBVHjaY2DABhoaGupBGMRmYiAEAKo2BAFbROu9AAAAAElFTkSuQmCC)}#bootstrap_helper_modul_wrapper .mblock_wrapper span.sorthandle:hover{opacity:0.95}#bootstrap_helper_modul_wrapper .mblock_wrapper .addme{padding:5px 8px 1px 8px !important}#bootstrap_helper_modul_wrapper .mblock_wrapper span.removeadded .btn[disabled]{cursor:default;color:#d2d8de;background:#fafafa;border-color:#d2d8de}#bootstrap_helper_modul_wrapper .mblock_wrapper span.removeadded .btn[disabled]:hover{color:#d2d8de}#bootstrap_helper_modul_wrapper .elemente{position:absolute;top:-13px;right:145px;max-height:45px;opacity:0.5;max-width:240px}#bootstrap_helper_modul_wrapper .elemente:hover{opacity:1}#bootstrap_helper_modul_wrapper .elemente legend{display:none}#bootstrap_helper_modul_wrapper .elemente .control-label{display:none}#bootstrap_helper_modul_wrapper select{border-radius:2px;display:inline-block;font:inherit;line-height:1.5em;padding:0.5em 3.5em 0.5em 1em;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;background-color:#fff;background-image:linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%);background-position:calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 0.5em) 0.5em;background-size:5px 5px, 5px 5px, 1px 1.5em;background-repeat:no-repeat}#bootstrap_helper_modul_wrapper select.elementSelect{width:250px;height:25px;font-size:13px;padding:2px 0 2px 6px;background-position:calc(100% - 15px) 0.8em, calc(100% - 10px) 0.8em}#bootstrap_helper_modul_wrapper select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000} 2 | -------------------------------------------------------------------------------- /SCSS/master.scss: -------------------------------------------------------------------------------- 1 | $bootstrap_brand_1: #563D7C; 2 | $bootstrap_brand_2: #CDC1E2; 3 | $bootstrap_brand_3: #E5E1EA; 4 | $bootstrap_brand_4: #F9F9F9; 5 | 6 | body[id^="rex-page-bootstrap-helper"] { 7 | .page-header { 8 | h1 { 9 | color: $bootstrap_brand_1; 10 | } 11 | } 12 | .rex-page-nav { 13 | li { 14 | a { 15 | color: $bootstrap_brand_1 !important; 16 | i { 17 | margin-right: 3px; 18 | } 19 | &:hover { 20 | color: #000 !important; 21 | border-top-color: $bootstrap_brand_1 !important; 22 | } 23 | } 24 | &.active { 25 | a { 26 | color: #fff !important; 27 | background: $bootstrap_brand_1 !important; 28 | border-color: $bootstrap_brand_1 !important; 29 | } 30 | } 31 | } 32 | .navbar { 33 | li { 34 | a { 35 | color: #ACB0B5 !important; 36 | i { 37 | margin-right: 3px; 38 | } 39 | &:hover { 40 | color: #000 !important; 41 | } 42 | } 43 | &.active { 44 | a { 45 | background: #fff !important; 46 | color: #563D7C !important; 47 | } 48 | } 49 | } 50 | } 51 | } 52 | } 53 | 54 | #bootstrap-helper-addon-wrapper { 55 | table { 56 | margin: 0; 57 | thead { 58 | } 59 | tbody { 60 | border: none !important; 61 | } 62 | .td_title { 63 | width: 100%; 64 | } 65 | tr:hover { 66 | background: $bootstrap_brand_4; 67 | } 68 | } 69 | 70 | .panel { 71 | border: 1px solid #563D7C; 72 | } 73 | 74 | .panel-heading { 75 | background: #563D7C; 76 | border-bottom: none !important; 77 | } 78 | 79 | .panel-title { 80 | color: #fff; 81 | } 82 | 83 | h2 { 84 | color: $bootstrap_brand_1; 85 | } 86 | 87 | a { 88 | color: #563D7C; 89 | } 90 | .btn-success { 91 | background: $bootstrap_brand_3; 92 | border-color: $bootstrap_brand_2; 93 | color: $bootstrap_brand_1; 94 | &:hover { 95 | border-color: $bootstrap_brand_1; 96 | } 97 | } 98 | .btn-primary { 99 | background: #563D7C; 100 | margin-right: 8px !important; 101 | &:hover { 102 | color: #563D7C; 103 | background: $bootstrap_brand_3; 104 | } 105 | } 106 | 107 | .rex-nav-pagination { 108 | font-size: 10px; 109 | padding: 10px; 110 | ul { 111 | font-size: 10px; 112 | li { 113 | a { 114 | padding: 6px 8px 6px 8px; 115 | } 116 | } 117 | } 118 | } 119 | 120 | .accordiontitle { 121 | font-weight: bold; 122 | margin: 10px 0 0 0; 123 | font-size: 11px; 124 | padding: 3px 0 3px 15px; 125 | width: 100%; 126 | color: #fff; 127 | background: $bootstrap_brand_1 !important; 128 | } 129 | } 130 | 131 | // Module 132 | #bootstrap_helper_modul_wrapper { 133 | border: 2px solid red !important; 134 | } 135 | #bootstrap_helper_modul_wrapper #tabs i { 136 | display: none; 137 | } 138 | 139 | #bootstrap_helper_modul_wrapper #tabs span { 140 | display: inline-block; 141 | 142 | } 143 | 144 | @media (max-width: 767px) { 145 | #bootstrap_helper_modul_wrapper #tabs i { 146 | display: inline-block; 147 | font-style: normal; 148 | padding: 0 5px 0 5px; 149 | font-size: 16px; 150 | } 151 | #bootstrap_helper_modul_wrapper #tabs span { 152 | display: none; 153 | } 154 | #bootstrap_helper_modul_wrapper .control-label { 155 | margin-left: 10px; 156 | } 157 | 158 | #bootstrap_helper_modul_wrapper #anleitung p { 159 | padding-left: 20px; 160 | } 161 | 162 | #bootstrap_helper_modul_wrapper #anleitung .control-label { 163 | padding-left: 25px; 164 | } 165 | 166 | } 167 | 168 | #bootstrap_helper_modul_wrapper #anleitung .control-label { 169 | margin-top: -6px; 170 | } 171 | 172 | #bootstrap_helper_modul_wrapper #anleitung { 173 | margin-top: 20px; 174 | } 175 | 176 | #bootstrap_helper_modul_wrapper #anleitung .panel-heading { 177 | font-size: 14px !important; 178 | padding: 10px; 179 | background: #DFE3E9; 180 | width: 100%; 181 | text-align: left; 182 | margin-bottom: 20px; 183 | border: none; 184 | } 185 | 186 | #bootstrap_helper_modul_wrapper #anleitung .panel-heading span { 187 | margin-right: 5px; 188 | } 189 | 190 | #bootstrap_helper_modul_wrapper #anleitung .panel-heading:hover { 191 | color: #000; 192 | } 193 | 194 | #bootstrap_helper_modul_wrapper .nav-tabs > li > a { 195 | color: #31404F; 196 | background-color: #DFE3E9; 197 | font-size: 12px; 198 | border-top: 1px solid #9da6b2; 199 | border-left: 1px solid #9da6b2; 200 | border-right: 1px solid #9da6b2; 201 | padding: 8px; 202 | margin-bottom: 1px; 203 | height: 38px; 204 | top: 1px; 205 | padding-top: 10px; 206 | } 207 | 208 | #bootstrap_helper_modul_wrapper .nav-tabs > li.active > a, #bootstrap_helper_modul_wrapper .nav-tabs > li.active > a:hover, #bootstrap_helper_modul_wrapper .nav-tabs > li.active > a:focus { 209 | color: #31404F; 210 | background-color: #f5f5f5; 211 | height: 39px; 212 | } 213 | 214 | #bootstrap_helper_modul_wrapper .ui-sortable-helper { 215 | } 216 | 217 | #bootstrap_helper_modul_wrapper .nav-tabs > li > a:hover { 218 | background-color: #fafafa; 219 | border-bottom: none; 220 | } 221 | 222 | #bootstrap_helper_modul_wrapper .markitup { 223 | min-height: 200px; 224 | } 225 | 226 | #bootstrap_helper_modul_wrapper .tab-content { 227 | background: #f5f5f5; 228 | margin-top: -20px; 229 | padding: 10px 10px 0 10px; 230 | border-right: 1px solid #9da6b2; 231 | border-left: 1px solid #9da6b2; 232 | border-bottom: 1px solid #9da6b2; 233 | } 234 | 235 | #bootstrap_helper_modul_wrapper .tab-content h3 { 236 | font-size: 14px !important; 237 | padding: 10px; 238 | background: #DFE3E9; 239 | width: 100%; 240 | margin-bottom: 20px; 241 | } 242 | 243 | #bootstrap_helper_modul_wrapper .tab-content .control-label { 244 | font-weight: normal; 245 | font-size: 12px !important; 246 | } 247 | 248 | #bootstrap_helper_modul_wrapper input.form-control, 249 | #bootstrap_helper_modul_wrapper textarea.form-control { 250 | background: #fff; 251 | } 252 | 253 | #bootstrap_helper_modul_wrapper .grid { 254 | text-align: right; 255 | } 256 | 257 | #bootstrap_helper_modul_wrapper .grid input { 258 | display: none; 259 | } 260 | 261 | #bootstrap_helper_modul_wrapper .grid label { 262 | } 263 | 264 | .grid label div, 265 | #bootstrap_helper_modul_wrapper .gridimage, 266 | #bootstrap_helper_modul_grid .gridimage { 267 | float: left; 268 | width: 340px; 269 | height: 60px; 270 | border: 1px solid #ccc; 271 | } 272 | 273 | #bootstrap_helper_modul_wrapper .grid label:hover div { 274 | cursor: pointer; 275 | border: 1px solid #659CCE; 276 | } 277 | 278 | #bootstrap_helper_modul_wrapper .grid :checked + div { 279 | border: 1px solid #737373 !important; 280 | } 281 | 282 | #bootstrap_helper_modul_wrapper, 283 | #bootstrap_helper_modul_grid { 284 | .img12 { 285 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ9JREFUeNrs3TEKgzAYgNFagpuDBxC8/3HcBVcRXAQRQVJPYIcWapr3BpdAhh8+IoikiDE+gPw8jQDED4gfED8gfkD8gPgB8QPiB+4tXC8vy2JGkKiqqpz8gPgB8YP4AfED4gfED4gfED8gfkD8gPgB8QN/Gv84jsMwGCjkFf9xHH3fix8SEj7fYl3Xs/x9300TMoq/67p5ns0Rsou/ruuyLM/X/mmaTBMyir9pmvO5bZv4IS0+9YH4AfED4gfED/yR8J1dQmjb1jQhIUWM8WLZjT2QLjf2AOIHxA/iB8QPiB8QPyB+QPyA+AHxA+IHxA/czpu/+gAnPyB+QPyA+AHxA+IHxA+IHxA/8BMvAQYAX1c3Eu5IAT8AAAAASUVORK5CYII=); 286 | } 287 | .img6_6 { 288 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgxJREFUeNrs3c1LInEYwPFNByl8icyLLMogXjr1L/T/gxcPZaJS3VJ8QaEXLd3f7sCyl929LLjM7/M5xGjQ4Zn5No+UeHI4HL4A8SkYAYgfED8gfkD8gPgB8QPiB8QP/N+SP397s9mYUZ5Uq1Wn2+l25wdrPyB+QPyA+AHxA+IHxA+IHxA/IH5A/ID4gaNJ/tUPen5+fn19TdPUTPPt/f19Pp9vt9tKpVKv1wsF94+44//8/ByPx+GCEH++zWazu7u7/X6fPTw7O7u+vj49PTWZSNf+l5eX29vbUL5p5ttutxsMBqH8TqcTmq/VamHXGw6HJhPpnb/f7y8WC3OMQdj2w4oXVv12u/390kmSXq+3XC5NJtL4Ly4uSqVSuCbCQmia+RbOctjzLy8vs4fZpzyGXwEmE2n8rVYrfH17exN/7n39ITv++PgYjUbhoNFomEyk8ROh1Wp1f38fXvCXy+Xw+t9AxE8UHh4eHh8fw87fbDa73W6xWDQT8ZN/k8nk6ekpBH91dWXhFz8Rbfuh/HCQpmmpVFqv19nztVrNcMRPnk2n0+xgPB7/+vzNzY3hxBt/kiT+ty/3zs/Pww3fHHLjJPtr7e/4CJec8Yk9TvdP3pUBkRI/iB8QPyB+QPyA+AHxA+IHxA+IHxA/IH7guP7yrj7AnR8QPyB+QPyA+AHxA+IHxA+IHziKbwIMAO4pnqqPCpuHAAAAAElFTkSuQmCC); 289 | } 290 | .img4_4_4 { 291 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvdJREFUeNrs3VtLomsYBuDRpJTMNtqOqYgKKhD6C/1/6CQiozRWUtDWon3ZZp7pgw4Wi1mjGTnMdR2En0EHd+/9vc9rG1Ovr6/fgL9PWgSg/IDyA8oPKD+g/IDyA8oPKD/Q3TK//vTV1ZWMftPAwIAkJfkHJWnnB2M/oPyA8gPKDyg/oPyA8gPKDyg/oPyA8gPKD3yBTKe+0NHR0d3d3ezsrEzb9vDwcHZ29vj4mM/nR0ZG0mm35jbd3t6en5+/vLwMDw9HmAL5xPI/Pz/XarVYtcrftpOTk0qlEus1uczlcisrK9lsVjKt2t/fj9X4/m40ExMTS0tLYvmUsT/uspubm9F8abat2WxubW1F8+fm5qLzhUIhxqjt7W3JtOr+/j6aH0PT8vJyuVzu6+s7PDw8PT2VTOd3/vX19UajIccPimk/pqcY9WdmZn5+VzKZtbW1GFwl06pYjbHnx24/Pj4el5eXl/V6/ebmplQqCafD5Y8zVW9vbyzcmFql+ZFzU8z5xWIxuUxG1rgFSKZVY2NjcQ9Noot5KrmBxjOS6Xz5p6enk1lL+T/i+5vk8dPTU7VajQc2q3YW9Jt48M+b5Mz/6/9m5cxPV7i4uIiBP4bV/v7+OP8LpG1DQ0OxM8VYGmf+5C5Ah3d+OijW6N7eXsz8k5OTCwsLPT09MmlVHO+vr6/z+fzQm8HBwY2NjYODAz+HsvN3r93d3Sh/Op0ul8uLi4ua3/boVKlU6vV6cplKpeLj+w9QsfN345JN1mtsUDGpxtifPF8oFITTkmKxWK1Wj4+PI7pcLler1eLJ0dFRySh/l4rFmjxIFuu71dVV4bQkm83Oz89HjDs7O8kzcQTw6sknlj+TyThTfUQcTWPDl0NHTE1NlUqlRqPRbDZj/4+TfzL88y+p99+C/E/eHeX3eZ8ZSf5ZSXrBD/5Syg/KDyg/oPyA8gPKDyg/oPyA8gPKDyg/oPzA1/qfv+oD7PyA8gPKDyg/oPyA8gPKDyg/oPzAl/ghwAAFHxBk8znuiwAAAABJRU5ErkJggg==); 292 | } 293 | .img3_3_3_3 { 294 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FJREFUeNrs3dtLKlEYxuEUcbLMrKzpokIsIkHoJui2P737LgoL6STZCTpoiZnmdLCXWTJ0sWtDBO291u+5kJwg+Fzzzvq+nDLW7/eHALgnzksAEH4AhB8A4QdA+AEQfgCEHwDhB0D4AfzbEl9/++HhwcqyPc9LJpOffTcIgl6vZ2XhY2NjLDfLzc4P0PYDIPwACD8Awg+A8AMg/AAIPwDCD4DwAyD8AAg/AMIP4NckfuoHXV9fd7vdfD7vzmvXaDTa7XYikZiYmBgZGXGk6k6nc39///b2pqrT6bRTaVHV5+fn/X7fjvP8Z8L/+vparVaDIHAk/Kp3d3e32WxGR/Ih6wu/uLjQQkcf9DI7O7uysuJO+E9OThR+s9y0/YOtoFKpKPnunASnp6dKvva91dXVpaWlWCxWq9VarZbdVT89PSn58Xi8WCyWSiXP866urur1uiOLrn7HJJ+2f6BcLt/d3bk2LN3c3OhxeXk5k8mo+9VpoRFAj3pqcdVaaO352u1939dTXezOzs4eHx9zuZz1K/7y8nJwcDA6Oqp6Cf+ATv1kMqk2+Pb21p3wa6tPpVJR1E0brOHf7qpnZmYmJydNmc/Pz7rY6QsdcWHFDw8Pe73e2tra1tYW4R+Yn583DaFT4V9fX//YBWhL1OVgamrK7qoTIX1RC5mZ/+t/FGVNoyeFQkE7v0118Vbf96nfOT4+rlQqSr4m/+HhYUcKz2azuuir49PMb64CFtOGf3R0ND4+bvY5Zn4Mdbvdvb09TYDKvIZ/F7pfFdtut9PpdDakPOgVuLy8tPttjmazqRnHvL8THSyXy3Nzc//7ohP+79CYs7Ozoz1BrX6xWLR+2o9ioD3Q932VbH7xMRS+9e1C7brqfXyqQc/81pPwO2d/f1/J1wS4sLDQ6XTMQS9kcdW60mnM0fSbyWRSqVS1WtXB6elpu9faD0VPNzc39bixsUHb76IgCMztPWqDt7e3o+PW3+ejAWdxcVGZ1/5vjmgEKBQKnBJOh199rzs39n52d6fGYOtr16Cby+XU9GoM1v6vkk3z7w6bzvNYdKvmH/ERLpbhE3tY7ghv9QGOIvwA4QdA+AEQfgCEHwDhB0D4ARB+AIQfAOEHQPgBEH4Av+svf9UHgJ0fAOEHQPgBEH4AhB8A4QdA+AEQfgCEH8CveBdgACF2bQzem2woAAAAAElFTkSuQmCC); 295 | } 296 | .img6_3_3 { 297 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvtJREFUeNrs3W1LIlEYgGE1HdNqQktCF0UlhEAwoh/QT/cH6AcVVERT+xCYmG9TvmtPnV1ZWHI3dsHlzH19GHSDhaNzzzw6xTg3m40DgP24eAkA4gdA/ACIHwDxAyB+AMQPgPgBED+A/5t794/H4zGvkU5OTk5s+HZ7vV7DMD776Xw+n81mNny7OfMDjP0AiB8A8QMgfgDED4D4ARA/AOIHQPwAiB8A8QMgfgB74P5X/1Gn05lMJvF4nNdUb7PZrNfrzefz4+PjYDDoctni/LFer5+fny3L8vv9Z2dnBwcHxP/darVqNBqyQxC/3rrdbqVSkRLUU5/Pl8lkDg8P9V617NiFQuHl5UU9NQwjnU6bpsnY73h9fS2Xy/IC0YbeFotFtVqV8pPJpDQve7/MerVaTfuFN5tNKT8UCl1fX0ciEdnV9Vj13575i8WijEOEYQcy7cuIJ6N+LBZ733Xc7nw+3+/37bBw2aZSKY/HI4e8x8fH7RRg6/gDgYBMQbJPyEBIHnqTd1nmfPnEq56quzzKIUD7hd/c3MhWypft09OTbOUISPyOaDQq2+l0Svza+/ZBPV4ul/V6XR6cn59rv/DtlxrZbFYdBRKJhAbr4lIfvmwwGMjAPxqNjo6O5PO/fRYej8dl8FksFqVSSYMvudzsyviSVqvVbrdl5g+Hw5eXl3pc9Nqt0+nI9uLiQl3MyuVylmXJqLudg4gf+ru/v394eJDgr66u7DDwK/IBR872pmn6fD556nQ6HR9X/hn7YaNpX8pX069hGKMftF+4OsxVq9V+v99sNsfjsfSvwbGPMz/+lPqiWzQajZ///e7uTu+FJxIJOcYNh8NCoaDO/PJ5R00BxP9+vYff7dPe6enpjltfaExWfXt7q369Vx4Hg0Gv16vBupzqau1nuGOPZrhjz6+4Yw8AeyF+gPgBED8A4gdA/ACIHwDxAyB+AMQPgPgBED8A4gewX7/5qz4AnPkBED8A4gdA/ACIHwDxAyB+AMQPgPgB7MWbAAMARkEV6b+++m4AAAAASUVORK5CYII=); 298 | } 299 | .img3_6_3 { 300 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvRJREFUeNrs3WtLIlEcgHFdbbykYl4IkmQEEQRBCaGv7wcQvCIRifpGMPF+Gccw97+eRXpRuxALW2ee34uhLVgY5zxzzmnc1X08Hl0AnOcHLwFA/ACIHwDxAyB+AMQPgPgBED8A4gfwtXn//OPVaqXlaft8PsMwPvrpfr+3bZvBweX+7sLhMDM/AOIHQPwA8QMgfgDED4D4ARA/AOIHQPwAiB8A8QMgfgBfi/df/UWj0ciyLNM0nfPaTSaT9Xrt9Xqvrq6CwSCDSWOvr6/T6VQut1zoeDzu8XiI/7fD4dDtdvf7vUPil/NttVrz+fz8HfOESLQkA7vRaGw2G/VHwzAKhUIkEmHZ79put51OR14g54yGwWAg5YdCoWKxmM1m3W53v99fLpd0oqVeryflJ5PJUql0c3MjQ/3x8ZGZ39VsNmU55LTR8Pz8LMdcLie3f1nzz2Yz2QLIUYPZAO/u79Tlvri4kEs8HA7PqwBHxy9DX1ZBsgwej8fOGQ0y1QcCgXPq6vMOZfNPJ1q6u7uTo5R/vu/HYjHid93e3spxt9s5Kv77+/u3qwBZ+8jtIB6P04mW/H6/+qJSqai7QCaT0eC8eNT3ebLeeXp66nQ6Ur7s/M9DBLoyTVNu8S8vL61WS4NfcrFS/STLstrttuz9pHnZDeqxDsS7RqORHK+vr9UDnWq1ul6vZambSqWI33Fkm1Ov123blnkgn8+z29ebrO9kto9EIoFAwHX6jY/r9OSfZb8TPTw8SPmXl5fpdHq73S5P+N++dZVIJNRFn81mvV5vtVpJ/+qbzPzOIps99fYeWfPXarW3G0Le56OlTCYjN/fFYtFoNNTMn81m1SqA+H895XLOuD8ej++ebDQapRMtGYZRLpfV23vl61gs5vP5NDgvt3pG/RE+sQdc7u+LT+wBQPwAiB8gfgDED4D4ARA/AOIHQPwAiB8A8QMgfgDED+DL+cu/6gPAzA+A+AEQPwDiB0D8AIgfAPEDIH4AxA/gv/gpwAAthiJ8l+WEIQAAAABJRU5ErkJggg==); 301 | } 302 | .img3_3_6 { 303 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwRJREFUeNrs3V9LInEUxvFVBifNzNTMCw2pCAPBG6H3/woUCw1KUCkoK5M0/4ykPTgge9G2Nwu1c76fC9ERgjMzz5zfoakJrVarXwDsCbMLAMIPgPADIPwACD8Awg+A8AMg/AAIP4Cfzfn669FoFMiyXdeNRCJ/+tbzvPl8HsjCd3Z2DB5us74+3HR+gGU/AMIPgPADIPwACD8Awg+A8AMg/AAIPwDCD4DwAyD8AL6B869+0MPDw3Q6LRaLdvbd8/PzeDx2HGdvby8WixmpejKZvLy8LJdLVR2Px4mQ9fC/v7+3223P84yEX/VeXFwMh8PNluJa4Au/vb3Vgd486CWXy5VKJVJkd9mvVtBsNpV8O3ut2+0q+ep7lUrl5OQkFAp1Op3X19dgVz2bzZT8cDh8dnZWLpdd172/v396eiJFRjt/o9EYDAbW9lq/39fr6elpIpHQ6lfLYI0AetXHAFetA62er25/cHCgj7rY9Xq9t7e3TCZDkCyGX6d+JBLRMvjx8dHOXlOrj0ajm6j7y2AN/8GuOpvNplIpv8zFYqGLnd5oCykyGv5CoeAvCE2F//z8/PdVgFqiLgfpdDrg58qa3nTW/Jn/638UhYDP/GZpvXNzc9NsNpV8Tf5bW1tGCk8mk7roa8Wnmd+/CsBi5zdrOp1eXl5q4lXmNfxbWP2q2PF4HI/Hk2u7u7vaA3d3d6Z+v0vnt05jTr1eVxi01K9Wq0bm3uFw2Gq1er2e/1HrHb0ul0vOBzq/IVdXV/P5fHt7+/DwcDKZ+BvdtQBXrSudxpx+v59IJKLRaLvd1sb9/X3OB8Jvhed5/u096vy1Wm2zPfD3+WjAOT4+Vuavr6/9LRoBjo6OOCVMh99xHDuD32q1+rRYjcGBrz2fz2cymcFgsFgs1P9Vsr/4x/8otLlV81M8sSdgeGKPKTyxBwDhB0D4AcIPgPADIPwACD8Awg+A8AMg/AAIPwDCD4DwA/hx/vJXfQDo/AAIPwDCD4DwAyD8AAg/AMIPgPADIPwAvsWHAAMARlAaCQUVROkAAAAASUVORK5CYII=); 304 | } 305 | .img8_4 { 306 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAg1JREFUeNrs3c9LInEYwOFNB0k0I+siiyLipVP/Qv8/dPGgJY6oNxVLErS0cr+7c9nL/jiYI/k8BxkVOrzMp3mlZE622+034PhkjADED4gfED8gfkD8gPgB8QPiBw5b9Pe3F4uFGbFnZ2dnzsk9TNKVH6z9gPgB8QPiB8QPiB8QPyB+QPyA+AHxA+IHUhDt6geNx+PValWv182U1L2+vs5ms/V6XSwWy+VyJuMi92nxv7+/x3EcZi1+UjedTjudzsfHR/I0n8/f3Nycnp6azO7X/uVy2W63Q/mmSeo2m839/X0ov9FohOZLpVJYSLvdrsns/srfarUeHx/NkQMRtv2wh4ZVv1ar/Ty/o+ju7u7p6clkdh//xcVFLpcL4w67lmmSunAqhj3/8vIyeZrcijL8CjCZ3cdfrVbD48vLi/g5BN9/SY7f3t56vV44uLq6Mpndxw+HaT6fPzw8hA/8hUIhfP43EPFzFAaDwXA4DDt/pVJpNpvZbNZMxM/X1+/3R6NRCP76+trCL36OaNsP5YeDer2ey+Wen5+T10ulkuGIn69sMpkkB3Ec//767e2t4XxK/FEU+d8+DsH5+Xm44JvD/zhJ/hD6J+6Owv65Y89+JukLD3CkxA/iB8QPiB8QPyB+QPyA+AHxA+IHxA+IH0jXP77VB7jyA+IHxA+IHxA/IH5A/ID4AfEDqfghwAD6BZ6qshTg0AAAAABJRU5ErkJggg==); 307 | } 308 | .img4_8 { 309 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAAA8CAIAAAC2INVhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhBJREFUeNrs3U9LInEcwOFNBzEypfIiizKEl069Bd8/ePFgJY1YtxQ1Evrj3/3tzmUvuxsZ25TPc4jRoMO3+ThfKZm9zWbzDdg9OSMA8QPiB8QPiB8QPyB+QPyA+IFsi/7+7dlsZkavdHh4aJJ8onPSlR+s/YD4AfED4gfED4gfED8gfkD8gPgB8QPiBz5A9F4/6O7u7unpKY5jM32zl5eX8Xg8n89LpdLx8XEu56WZzMe/Wq2SJAlnrfjfbDQaXVxcrNfr9OH+/v75+XmxWDQZsrv2Pz4+drvdUL5pvtlisbi8vAzln56ehubL5XJYo3q9nsmQ3St/p9OZTCbmuKWw7YftKaz6jUbj528litrt9nQ6NRmyG//R0VGhUAgnbthaTXOb901hzz85OUkfpjdQDC8BJkN246/X6+Hr8/Oz+Lfx/Zf0eLlcXl9fh4NqtWoyZDd+3tf9/f3V1VV4w39wcBDe/xsI4t8Jg8Hg5uYm7Py1Wq3ZbObzeTNB/F9fv9+/vb0NwZ+dnVn4Ef8Obfuh/HAQx3GhUHh4eEifL5fLhoP4v7LhcJgeJEny+/OtVstwyHT8URT5375tVCqVcME3B/6nvfRPyn/iPjOv5449fK5z0kdHYEeJH8QPiB8QPyB+QPyA+AHxA+IHxA+IHxA/8LH+8ak+wJUfED8gfkD8gPgB8QPiB8QPiB/4ED8EGADiTZ6qytwGIAAAAABJRU5ErkJggg==); 310 | } 311 | 312 | } 313 | 314 | .outback { 315 | &.mblock_wrapper { 316 | margin: 15px 0 20px 0; 317 | background: #f5f5f5; 318 | border: 1px solid #36404F; 319 | legend { 320 | font-size: 14px; 321 | font-weight: bold; 322 | border: none; 323 | background: #36404F; 324 | color: #fff; 325 | padding: 3px 3px 3px 10px; 326 | &.small { 327 | font-size: 12px; 328 | line-height: 1; 329 | margin: 0; 330 | padding: 0 0 12px 0; 331 | } 332 | } 333 | fieldset { 334 | padding: 10px; 335 | legend { 336 | font-size: 12px; 337 | font-weight: bold !important; 338 | padding: 5px 5px 5px 0px; 339 | width: 100%; 340 | color: #36404F; 341 | background: none; 342 | border-bottom: 1px solid #9ca6b2 !important; 343 | margin-bottom: 20px; 344 | border: none; 345 | } 346 | .label_left { 347 | padding-top: 1px; 348 | font-weight: normal; 349 | font-size: 12px; 350 | text-align: right; 351 | font-weight: normal; 352 | } 353 | } 354 | } 355 | } 356 | 357 | .outback.more_settings { 358 | margin: 15px 0 20px 0; 359 | background: none; 360 | border: none; 361 | legend { 362 | font-size: 12px; 363 | font-weight: bold; 364 | border: none; 365 | color: #36404F; 366 | background: none; 367 | padding: 3px 3px 3px 10px; 368 | border-bottom: 1px solid #9ca6b2 !important; 369 | &.small { 370 | font-size: 10px; 371 | line-height: 1; 372 | margin: 0; 373 | padding: 0 0 12px 0; 374 | } 375 | } 376 | } 377 | #bootstrap_helper_modul_wrapper { 378 | .mform fieldset { 379 | margin-top: 22px; 380 | legend { 381 | font-size: 16px; 382 | font-weight: normal !important; 383 | padding: 5px 5px 5px 10px; 384 | background: #DFE3E9 !important; 385 | width: 100%; 386 | margin-bottom: 20px; 387 | border: none; 388 | } 389 | 390 | label { 391 | padding-top: 4px; 392 | font-weight: normal; 393 | } 394 | 395 | } 396 | 397 | .module_help_link { 398 | float: right; 399 | font-size: 14px; 400 | line-height: 1.5; 401 | margin-right: 8px; 402 | margin-top: 2px; 403 | &:hover { 404 | color: $bootstrap_brand_1; 405 | cursor: pointer; 406 | } 407 | } 408 | 409 | .module_help_content { 410 | display: none; 411 | margin-top: -21px; 412 | padding: 16px 16px 8px 14px; 413 | border-top: 1px solid #fff; 414 | color: #000; 415 | background: #E0E3E9; 416 | font-size: 14px; 417 | line-height: 1.5; 418 | margin-bottom: 16px; 419 | em { 420 | color: #555; 421 | } 422 | } 423 | 424 | .extra_settings { 425 | font-size: 12px; 426 | line-height: 1.5; 427 | padding: 0 16px 12px 0; 428 | margin-bottom: -1px; 429 | font-weight: bold; 430 | text-align: right; 431 | i { 432 | padding-left: 6px; 433 | } 434 | &:hover { 435 | cursor: pointer; 436 | } 437 | } 438 | 439 | .extra_settings_content { 440 | display: none; 441 | } 442 | 443 | .panel-add .panel-body, 444 | .panel-edit .panel-body { 445 | background-color: #fff; 446 | } 447 | 448 | .btn-save, 449 | .btn-apply { 450 | background-color: #3c4d60; 451 | border-color: #3c4d60; 452 | } 453 | } 454 | 455 | .sortitem { 456 | position: relative; 457 | min-height: 50px; 458 | } 459 | 460 | //**/ 461 | 462 | #bootstrap_helper_modul_wrapper { 463 | .mblock_wrapper { 464 | margin: auto; 465 | padding: 0 466 | } 467 | 468 | .mblock_wrapper > div { 469 | border: 1px solid #ccc; // krol 470 | background: #f0f0f0; // krol 471 | /*color: #1C94C4;*/ 472 | margin: 0 0 10px 0; 473 | padding: 20px 16px 0 25px; // KROL 474 | position: relative; 475 | 476 | } 477 | 478 | .mblock_wrapper span.sorthandle { 479 | cursor: move; 480 | position: absolute; 481 | opacity: .6; // KROL 482 | top: 2px; // KROL 483 | bottom: 2px; // KROL 484 | left: 2px; // KROL 485 | width: 16px; // KROL 486 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAB3RJTUUH3wIDBycZ/Cj09AAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAAWSURBVHjaY2DABhoaGupBGMRmYiAEAKo2BAFbROu9AAAAAElFTkSuQmCC) 487 | } 488 | 489 | .mblock_wrapper span.sorthandle:hover { 490 | opacity: .95; // KROL 491 | } 492 | 493 | .mblock_wrapper .addme { 494 | padding: 5px 8px 1px 8px !important; 495 | } 496 | 497 | .mblock_wrapper span.removeadded .btn[disabled] { 498 | cursor: default; 499 | color: #d2d8de; //Krol 500 | background: #fafafa; // krol 501 | border-color: #d2d8de; // krol 502 | &:hover { 503 | color: #d2d8de; // Krol 504 | } 505 | } 506 | 507 | .elemente { 508 | position: absolute; 509 | top: -13px; 510 | right: 145px; 511 | max-height: 45px; 512 | opacity: 0.5; 513 | max-width: 240px; 514 | &:hover { 515 | opacity: 1; 516 | } 517 | 518 | legend { 519 | display: none; 520 | } 521 | .control-label { 522 | display: none; 523 | } 524 | 525 | 526 | } 527 | 528 | select { 529 | border-radius: 2px; 530 | display: inline-block; 531 | font: inherit; 532 | line-height: 1.5em; 533 | padding: 0.5em 3.5em 0.5em 1em; 534 | margin: 0; 535 | -webkit-box-sizing: border-box; 536 | -moz-box-sizing: border-box; 537 | box-sizing: border-box; 538 | -webkit-appearance: none; 539 | -moz-appearance: none; 540 | 541 | background-color: #fff; 542 | 543 | background-image: linear-gradient(45deg, transparent 50%, gray 50%), 544 | linear-gradient(135deg, gray 50%, transparent 50%); 545 | background-position: calc(100% - 20px) calc(1em + 2px), 546 | calc(100% - 15px) calc(1em + 2px), 547 | calc(100% - 0.5em) 0.5em; 548 | background-size: 5px 5px, 549 | 5px 5px, 550 | 1px 1.5em; 551 | background-repeat: no-repeat; 552 | 553 | &.elementSelect { 554 | width: 250px; 555 | height: 25px; 556 | font-size: 13px; 557 | padding: 2px 0 2px 6px; 558 | background-position: calc(100% - 15px) 0.8em, 559 | calc(100% - 10px) 0.8em; 560 | } 561 | } 562 | 563 | select:-moz-focusring { 564 | color: transparent; 565 | text-shadow: 0 0 0 #000; 566 | } 567 | 568 | } 569 | -------------------------------------------------------------------------------- /lib/bootstrap_helper_class.php: -------------------------------------------------------------------------------- 1 | isAvailable() && ! rex_addon::get( 'redactor2' )->isAvailable() ) { 16 | echo rex_view::error( 'Dieses Modul benötigt das "MarkItUp" oder das "Redactor 2" Addon!' ); 17 | } else { 18 | if ( rex_addon::get( 'markitup' )->isAvailable() ) { 19 | $return = 'markitup'; 20 | if ( ! markitup::profileExists( 'simple' ) ) { 21 | markitup::insertProfile( 'simple', 'Angelegt durch das Addon Bootstrap Helper', 'textile', 200, 800, 'relative', 'bold,italic,underline,deleted,quote,sub,sup,code,unorderedlist, orderedlist, grouplink[internal|external|mailto]' ); 22 | } 23 | } 24 | if ( rex_addon::get( 'redactor2' )->isAvailable() ) { 25 | $return = 'redactor'; 26 | if ( ! redactor2::profileExists( 'simple' ) ) { 27 | redactor2::insertProfile('simple', 'Angelegt durch das Addon Bootstrap Helper', '200', '800', 'relative', '0', '0', '0', '1', 'bold, italic, underline, deleted, quote, sub, sup, code, unorderedlist, orderedlist, grouplink[external|internal|email], cleaner',''); 28 | } 29 | } 30 | return $return; 31 | } 32 | } 33 | 34 | //////////////////////////////////// 35 | // Container 36 | //////////////////////////////////// 37 | function container_input( $id ) { 38 | $mform = new MForm(); 39 | $mform->addFieldset( 'Breite des Inhaltes ' ); 40 | $mform->addHtml( '
    41 |

    Hier kann die Breite des Modulinhaltes für die Frontendausgabe angegeben werden.

    42 | Im Backend wird diese Information nur ausgegeben sofern "volle Browserbreite" ausgewählt ist. 43 |
    ' ); 44 | $mform->addSelectField( "$id.0.container", array( 45 | 'container' => 'so breit wie der Inhalt', 46 | 'container_fluid' => 'volle Browserbreite' 47 | ), array( 'label' => 'Breite' ) ); 48 | echo $mform->show(); 49 | } 50 | 51 | function container_output( $container ) { 52 | $fe_output = []; 53 | $be_output = []; 54 | 55 | $fe_output[] = $container; 56 | 57 | if ( $container == 'container_fluid' ) { 58 | 59 | $be_output[] = ' 60 | Breite des Inhaltes 61 |
    62 |
    Breite
    63 |
    volle Browserbreite
    64 |
    '; 65 | } 66 | if ( ! rex::isBackend() ) { 67 | return implode( $fe_output ); 68 | } else { 69 | return implode( $be_output ); 70 | } 71 | } 72 | 73 | 74 | //////////////////////////////////// 75 | // ID / Class 76 | //////////////////////////////////// 77 | function id_class_input( $id ) { 78 | $mform = new MForm(); 79 | $mform->addFieldset( 'Klasse(n) / ID ' ); 80 | $mform->addHtml( '
    81 |

    Hier können individuelle IDs und Klassen vergeben werden.

    82 |

    Sollten Sie nicht sehr genau wissen was damit gemeint ist fragen Sie Ihren Webentwickler.

    83 |
    ' ); 84 | $mform->addHtml( '
    ' ); 85 | $mform->addTextField( "$id.0.class", array( 'label' => 'Klasse(n)' ) ); 86 | $mform->addHtml( '
    ' ); 87 | $mform->addTextField( "$id.0.id_value", array( 'label' => 'ID' ) ); 88 | $mform->addHtml( '
    ' ); 89 | echo $mform->show(); 90 | } 91 | 92 | /* 93 | function id_class_output( $id_value, $class ) { 94 | $fe_output = []; 95 | $be_output = []; 96 | 97 | if ( $id_value != '' OR $class != '' ) { 98 | 99 | if ( $id_value != '' ) { 100 | $id_value_fe = 'id="' . $id_value . '"'; 101 | } 102 | $fe_output[] = $id_value_fe; 103 | $fe_output[] = $class; 104 | 105 | if ( $id_value == '' ) { 106 | $id_value = '-'; 107 | } 108 | if ( $class == '' ) { 109 | $class = '-'; 110 | } 111 | 112 | $be_output[] = ' 113 | Klasse(n) / ID 114 |
    115 |
    Klasse(n) / ID
    116 |
    ' . $class . ' / ' . $id_value . '
    117 |
    '; 118 | 119 | if ( ! rex::isBackend() ) { 120 | return $fe_output; 121 | } else { 122 | return implode( $be_output ); 123 | } 124 | } 125 | } 126 | */ 127 | 128 | //////////////////////////////////// 129 | // Media Manager Typ 130 | //////////////////////////////////// 131 | function media_manager_typ_input( $id ) { 132 | $mform = new MForm(); 133 | $mform->addFieldset( 'Media Manager Typ ' ); 134 | $mform->addHtml( '
    135 |

    Hier können Sie einen Media Manager Typen angeben.

    136 |

    Sollten Sie nicht sehr genau wissen was damit gemeint ist fragen Sie Ihren Webentwickler.

    137 |
    ' ); 138 | $mform->addHtml( '
    ' ); 139 | $mform->addTextField( "$id.0.mmtyp", array( 'label' => 'Typ' ) ); 140 | $mform->addHtml( '
    ' ); 141 | echo $mform->show(); 142 | } 143 | 144 | /* 145 | function media_manager_typ_output( $mmtyp ) { 146 | $fe_output = []; 147 | $be_output = []; 148 | 149 | if ( $mmtyp != '' ) { 150 | 151 | $fe_output[] = $mmtyp; 152 | $be_output[] = ' 153 | Media Manager Typ 154 |
    155 |
    Media Manager Typ
    156 |
    ' . $mmtyp . '
    157 |
    '; 158 | 159 | if ( ! rex::isBackend() ) { 160 | return implode( $fe_output ); 161 | } else { 162 | return implode( $be_output ); 163 | } 164 | } 165 | } 166 | */ 167 | 168 | //////////////////////////////////// 169 | // Headline 170 | //////////////////////////////////// 171 | function headline_input( $id, $mform ) { 172 | $mform->addFieldset( 'Überschrift ', array( 173 | 'class' => 'headline', 174 | 'style' => 'display:none;' 175 | ) ); 176 | $mform->addHtml( '
    177 |

    H1 wird für die Hauptüberschrift benutzt und darf nur einmal auf jeder Seite (am besten am Anfang) vorkommen. Die anderen Überschriften werden zur Gliederung des Dokumentes (wie bei einem Aufsatz) benutzt und folgen in logischer Reihenfolge.

    178 |

    Zum Beispiel können auf eine H2 Überschrift also mehrere H3 Überschriften folgen, nicht aber eine H4. Diese sollen lediglich einen Abatz nach H3 kennzeichen.

    179 |
    ' ); 180 | $mform->addTextField( "$id.0.headline_text", array( 'label' => 'Überschrift ' ) ); 181 | $mform->addSelectField( "$id.0.headline_size", array( 182 | '' => 'Bitte wählen', 183 | 1 => 'H1 - Nur einmal pro Seite nutzen!', 184 | 2 => 'H2', 185 | 3 => 'H3', 186 | 4 => 'H4', 187 | 5 => 'H5', 188 | 6 => 'H6' 189 | ), array( 'label' => 'Art' ) ); 190 | } 191 | 192 | function headline_output( $headline_text, $headline_size ) { 193 | $fe_output = []; 194 | $be_output = []; 195 | 196 | if ( $headline_text == '' OR $headline_size == '' ) { 197 | $be_output[] = 'Überschrift 198 |
    199 |

    Die Überschrift wird auf der Webseite nicht angezeigt!

    200 |

    Bitte füllen Sie alle Felder aus!

    201 |
    '; 202 | } else { 203 | $be_output[] = 'Überschrift 204 |
    205 |
    Überschrift
    206 |
    ' . $headline_text . '
    207 |
    Art
    208 |
    H' . $headline_size . '
    209 |
    '; 210 | $fe_output[] = '' . $headline_text . ''; 211 | } 212 | if ( ! rex::isBackend() ) { 213 | return implode( $fe_output ); 214 | } else { 215 | return implode( $be_output ); 216 | } 217 | } 218 | 219 | //////////////////////////////////// 220 | // Textarea 221 | //////////////////////////////////// 222 | function textarea_input( $id, $mform ) { 223 | 224 | $bsh = NEW rex_bootstrap_helper(); 225 | $texteditor = $bsh->check_editor(); 226 | 227 | $mform->addFieldset( 'Text ', array( 228 | 'class' => 'textarea', 229 | 'style' => 'display:none;' 230 | ) ); 231 | $mform->addHtml( '
    232 |

    Ja. Der Text in dem Editor wird nicht wie auf der Webseite dargestellt. Das ist Absicht :-).

    233 |

    Falls Sie Fragen zur Benutzung des Editors haben wenden Sie sich bitte an Ihren Webentwickler.

    234 |
    ' ); 235 | $mform->setAttribute( 'default-class', false ); 236 | if ( $texteditor == 'markitup' ) { 237 | $mform->addTextAreaField( "$id.0.textarea_content", array( 238 | 'label' => 'Text', 239 | 'class' => "markitupEditor-simple", 240 | 'id' => 'value-00' . $id 241 | ) ); 242 | } 243 | if ( $texteditor == 'redactor' ) { 244 | $mform->addTextAreaField( "$id.0.textarea_content", array( 245 | 'label' => 'Text', 246 | 'class' => "redactorEditor2-simple", 247 | 'id' => 'redactor_00' . $id 248 | ) ); 249 | } 250 | } 251 | 252 | function textarea_output( $textarea ) { 253 | $bsh = NEW rex_bootstrap_helper(); 254 | $texteditor = $bsh->check_editor(); 255 | 256 | $fe_output = []; 257 | $be_output = []; 258 | $text = ''; 259 | if ( $textarea != '' ) { 260 | 261 | if ( $texteditor == 'markitup' ) { 262 | $text = markitup::parseOutput( 'textile', $textarea ); 263 | } else if ( $texteditor == 'redactor' ) { 264 | $text = html_entity_decode( $textarea ); 265 | } 266 | 267 | 268 | $fe_output[] = $text; 269 | $be_output[] = ' 270 | Text 271 |
    272 |
    Text
    273 |
    ' . $text . '
    274 |
    '; 275 | if ( ! rex::isBackend() ) { 276 | return implode( $fe_output ); 277 | } else { 278 | return implode( $be_output ); 279 | } 280 | } 281 | 282 | } 283 | 284 | 285 | //////////////////////////////////// 286 | // Video (extern) 287 | //////////////////////////////////// 288 | function video_input( $id, $mform ) { 289 | $mform->addFieldset( 'Film (extern) ', array( 290 | 'class' => 'video', 291 | 'style' => 'display:none;' 292 | ) ); 293 | $mform->addHtml( '
    294 |

    In dem Eingabefeld "Film-ID" bitte nur die ID des Videos eingeben

    295 | Beispiel:

    296 | 300 |
    ' ); 301 | 302 | $mform->addTextField( "$id.0.video_id", array( 'label' => 'Film-ID ' ) ); 303 | $mform->addSelectField( "$id.0.video_service", array( 304 | '' => 'Bitte wählen', 305 | 1 => 'YouTube', 306 | 2 => 'Vimeo' 307 | ), array( 'label' => 'Anbieter' ) ); 308 | } 309 | 310 | function video_output( $video_id, $video_service ) { 311 | $fe_output = []; 312 | $be_output = []; 313 | 314 | if ( $video_id == '' OR $video_service == '' ) { 315 | $be_output[] = 'Video 316 |
    317 |

    Es wird kein Video auf der Webseite angezeigt!

    318 |

    Bitte füllen Sie alle Felder aus!

    319 |
    '; 320 | } else { 321 | if ($video_service == '1') { 322 | $fe_output[] = ' 323 |
    324 | 327 |
    '.PHP_EOL; 328 | $video_service = 'YouTube'; 329 | } 330 | if ($video_service == '2') { 331 | $fe_output[] = ' 332 |
    333 | 337 |
    '.PHP_EOL; 338 | $video_service = "Vimeo"; 339 | } 340 | $be_output[] = 'Video (extern) 341 |
    342 |
    Video ID
    343 |
    ' . $video_id . '
    344 |
    Anbieter
    345 |
    ' . $video_service . '
    346 |
    '; 347 | } 348 | if ( ! rex::isBackend() ) { 349 | return implode( $fe_output ); 350 | } else { 351 | return implode( $be_output ); 352 | } 353 | } 354 | 355 | 356 | //////////////////////////////////// 357 | // Downloads 358 | //////////////////////////////////// 359 | function downloads_input( $id, $mform ) { 360 | $mform->addFieldset( 'Downloads', array( 361 | 'class' => 'downloads', 362 | 'style' => 'display:none;' 363 | ) ); 364 | $mform->addHtml( '
    365 |

    Downloads

    366 |
    ' ); 367 | 368 | $mform->addTextField("$id.0.downloads_headline", array( 'label' => 'Überschrift' ) ); 369 | $mform->addMedialistField(1, array('label'=>'Dateien')); 370 | } 371 | 372 | function downloads_output( $downloads_headline, $REX_MEDIALIST_1 ) { 373 | $fe_output = []; 374 | $be_output = []; 375 | 376 | if ( $REX_MEDIALIST_1 == '' ) { 377 | $be_output[] = 'Downloads 378 |
    379 |

    Es werden keine Downloads auf der Webseite zur Verfügung gestellt.

    380 |

    Bitte wählen Sie midestens eine Datei au!

    381 |
    '; 382 | } else { 383 | if ($downloads_headline != '') { 384 | $fe_output[] = ' 385 | Download Headline'.PHP_EOL; 386 | } 387 | if ($REX_MEDIALIST_1 != '') { 388 | 389 | 390 | if (!function_exists('datei_groesse')) { 391 | function datei_groesse($URL) { 392 | $groesse = filesize($URL); 393 | if($groesse<1000) { 394 | return number_format($groesse, 0, ",", ".")." Bytes"; 395 | } elseif($groesse<1000000) { 396 | return number_format($groesse/1024, 0, ",", ".")." kB"; 397 | } else { 398 | return number_format($groesse/1048576, 0, ",", ".")." MB"; 399 | } 400 | } 401 | } 402 | 403 | if (!function_exists('parse_icon')) { 404 | function parse_icon($ext) { 405 | switch (strtolower($ext)) { 406 | case 'doc': return ' '; 407 | case 'pdf': return ' '; 408 | case 'zip': return ' '; 409 | case 'jpg': return ' '; 410 | case 'png': return ' '; 411 | case 'gif': return ' '; 412 | default: 413 | return ''; 414 | } 415 | } 416 | } 417 | 418 | 419 | $arr = explode(",",$REX_MEDIALIST_1); 420 | $download_be_dateien = ''; 421 | $download_fe_dateien = ''; 422 | 423 | foreach ($arr as $value_dl) { 424 | $extension = substr(strrchr($value_dl, '.'), 1); 425 | $parsed_icon = parse_icon($extension); 426 | $downloadmedia = rex_media::get($value_dl); 427 | $file_desc = $downloadmedia->getValue('med_description'); 428 | 429 | 430 | $download_fe_dateien .='
  • '.$parsed_icon; 431 | $download_be_dateien .= $value_dl.'
    '; 432 | 433 | if ($file_desc != "") { 434 | $download_fe_dateien .= $file_desc; 435 | } else { 436 | $download_fe_dateien .= $value_dl; 437 | } 438 | 439 | $download_fe_dateien .= ' ('.datei_groesse(rex_path::media($value_dl)).')
  • '; 440 | } 441 | $fe_output[] = ''; 442 | } 443 | $be_output[] = 'Downloads 444 |
    445 |
    Überschrift
    446 |
    ' . $downloads_headline . '
    447 |
    Dateie(n)
    448 |
    '.$download_be_dateien.'
    449 |
    '; 450 | } 451 | if ( ! rex::isBackend() ) { 452 | return implode( $fe_output ); 453 | } else { 454 | return implode( $be_output ); 455 | } 456 | } 457 | 458 | 459 | 460 | 461 | //////////////////////////////////// 462 | // Link 463 | //////////////////////////////////// 464 | function link_input( $id, $mform ) { 465 | $mform->addFieldset( 466 | 'Link (intern / extern)', 467 | array( 468 | 'class' => 'link', 469 | 'style' => 'display:none;' 470 | ) 471 | ); 472 | $mform->addHtml( '
    473 |

    Es kann nur eine interner ODER ein externer Link angegeben werden.

    474 |

    Sollten Sie nicht wissen, was mit "Darstellung" oder "CSS Klasse" gemeint ist fragen Sie Ihren Webentwickler.

    475 |
    ' ); 476 | $mform->addTextField("$id.0.link_name", array( 'label' => 'Bezeichnung')); 477 | $mform->addTextField("$id.0.link_extern", array( 'label' => 'Link extern')); 478 | $mform->addLinkField(1,array('label'=>'Link intern')); 479 | $mform->addSelectField( 480 | "$id.0.link_type", 481 | array( 482 | 'Normal' => 'Normal', 483 | 'Button' => 'Button' 484 | ), 485 | array( 486 | 'label' => 'Darstellung' 487 | ) 488 | ); 489 | $mform->addTextField("$id.0.link_class", array( 'label' => 'CSS Klasse')); 490 | } 491 | 492 | function link_output( $link_name, $link_extern, $REX_LINK_1, $link_type, $link_class ) { 493 | $fe_output = []; 494 | $be_output = []; 495 | 496 | $be_output[] = 'Link (intern / extern)'; 497 | 498 | if ( $link_name == '' ) { 499 | $be_output[] = ' 500 |
    501 |

    Bitte geben Sie unbedingt eine Link Bezeichnung an!

    502 |
    '; 503 | } 504 | 505 | 506 | if ( $link_extern == '' AND $REX_LINK_1 == '') { 507 | $be_output[] = '
    508 |

    Es wird kein Link ausgegeben. Bitte geben Sie einen Link an!

    509 |
    '; 510 | } else if ( $link_extern != '' AND $REX_LINK_1 != '') { 511 | $be_output[] = ' 512 |
    513 |

    Es wird kein Link ausgegeben. Bitte geben Sie nur einen externen ODER einen internen Link an!

    514 |
    '; 515 | 516 | } else { 517 | 518 | 519 | $be_output[] = '
    '; 520 | 521 | if($link_name != '') { 522 | $be_output[] = ' 523 |
    Bezeichnung
    524 |
    '.$link_name.'
    '; 525 | } 526 | 527 | if($link_extern != '') { 528 | $be_output[] = ' 529 |
    extern
    530 |
    '.$link_extern.'
    '; 531 | 532 | } 533 | 534 | // NEU !!! 535 | 536 | if ($link_class != '') { 537 | if ($link_type == 'Button') { 538 | $fe_output[] = ''.$link_name.''; 539 | } else { 540 | $fe_output[] = ''.$link_name.''; 541 | } 542 | } else { 543 | if ($link_type == 'Button') { 544 | $fe_output[] = ''.$link_name.''; 545 | } else { 546 | $fe_output[] = ''.$link_name.''; 547 | } 548 | } 549 | 550 | if($REX_LINK_1 != '') { 551 | $article=rex_article::get($REX_LINK_1); 552 | $name=$article->getName(); 553 | $be_output[] = ' 554 |
    Link intern
    555 |
    '.$name.' (ID = '.$REX_LINK_1.')
    '; 556 | } 557 | $be_output[] = ' 558 |
    Darstellung
    559 |
    '.$link_type.'
    '; 560 | 561 | if($link_class != '') { 562 | $be_output[] = ' 563 |
    CSS Klasse
    564 |
    '.$link_class.'
    '; 565 | } 566 | 567 | $be_output[] = ' 568 |
    '; 569 | } 570 | if ( ! rex::isBackend() ) { 571 | return implode( $fe_output ); 572 | } else { 573 | return implode( $be_output ); 574 | } 575 | } 576 | 577 | 578 | 579 | } 580 | --------------------------------------------------------------------------------