├── .github └── workflows │ └── publish-to-redaxo.yml ├── .gitignore ├── LICENSE ├── README.de.md ├── README.md ├── backups ├── redaxo_uikit_demo.sql └── redaxo_uikit_demo.tar.gz ├── install.php ├── lang ├── de_de.lang ├── en_gb.lang ├── es_es.lang ├── pt_br.lang └── sv_se.lang ├── lib ├── console │ └── demo_base_install.php └── demo_uikit3.php ├── package.setup.yml ├── package.yml ├── pages ├── index.php └── install.php └── uninstall.php /.github/workflows/publish-to-redaxo.yml: -------------------------------------------------------------------------------- 1 | name: Publish release 2 | 3 | on: 4 | release: 5 | types: 6 | - published 7 | 8 | jobs: 9 | redaxo_publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: FriendsOfREDAXO/installer-action@v1 14 | with: 15 | myredaxo-username: ${{ secrets.MYREDAXO_USERNAME }} 16 | myredaxo-api-key: ${{ secrets.MYREDAXO_API_KEY }} 17 | description: ${{ github.event.release.body }} 18 | 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .definition 3 | .dislap 4 | .idea/**/workspace.xml 5 | .idea/**/tasks.xml 6 | .idea/**/usage.statistics.xml 7 | .idea/**/dictionaries 8 | .idea/**/shelf 9 | *.iml 10 | modules.xml 11 | .idea/misc.xml 12 | .idea/vcs.xml 13 | .idea/encodings.xml 14 | *.ipr 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 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 | -------------------------------------------------------------------------------- /README.de.md: -------------------------------------------------------------------------------- 1 | # UIKit3 Demo für REDAXO 5 2 | 3 |  4 | 5 | Diese Demo demonstriert den Aufbau einer REDAXO Website mit UIKit3. 6 | 7 | Diese Demo benötigt eine utf8m4 kompatible Datenbank. 8 | 9 | ## Was es ist 10 | 11 | Es ist eine Demo. Sie verdeutlicht eine mögliche Umsetzung einer Webpräsenz zu Lernzwecken. Sie kann als Startpunkt für eigene Projekte vewendet werden. 12 | 13 | ## Was es nicht ist 14 | 15 | Es ist keine fertige Webpräsenz für den Live-Betrieb. Hierzu sind weitere Schritte erforderlich. 16 | 17 | ## Was ist drin? 18 | 19 | - 4 Module (Cards, Content-Block / Slider, Iconliste, Überschrift) 20 | - Haupttemplate mit Nebentemplates zum einfachen Umbau / Austausch 21 | - Navigation auf Basis des Navigation_Array-AddOns 22 | - Die Module sind mit MForm aufgebaut 23 | - MP4-Videoausgabe wird unterstützt 24 | 25 | ## Hinweis 26 | 27 | Die Demo installiert das AddOn **theme_lock** um das "Light Theme" im Backend zu erzwingen. UIKit3 wird auch im Backend zur Anzeige verwendet, der Darkmode sorgt leider hierbei für Probleme. 28 | 29 | ## Weitere Entwicklung 30 | 31 | Die Demo wird von Zeit zu Zeit erweitert und Fehler werden korrigiert. Wir sind also über Hinweise dankbar. 32 | 33 | ## Eigenes Theme 34 | 35 | Es wird ein Hauptordner uikit angelegt. Dort befindet sich das theme für das Frontend. 36 | Den darin enthaltenen Dist-Ordner kann man einfach durch einen eigenen ersetzen. 37 | Ggf. die Sourcen im Template anpassen. 38 | Für die Erstellung wird der Yarn-Workflow von UIKit empfohlen. 39 | 40 | ## Installation 41 | 42 | 1. Das AddOn-Verzeichnis muss den Namen `demo_uikit3` haben; nach dem Auspacken in das AddOn-Verzeichnis kopieren: `redaxo/src/addons`. 43 | 2. Das AddOn installieren. 44 | 3. Auf der Seite "UIKit-Demo" auf "Demo installieren" klicken. 45 | 46 | Have fun! 47 | 48 | 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UIKit3 Demo for REDAXO 5 2 | 3 | > 👉🏻 Development has been stoped. 4 | 5 | 6 |  7 | 8 | This demo demonstrates how to build a REDAXO website with UIKit3. 9 | 10 | This demo requires a utf8m4 compatible database. 11 | 12 | ## What it is 13 | 14 | It is a demo. It shows a possible implementation of a web presence for learning purposes. It can be used as a starting point for your own projects. 15 | 16 | ## What it's not 17 | 18 | It is not a ready web presence for live operation. Further steps are necessary for achieving this. 19 | 20 | ## What's inside? 21 | 22 | - 4 modules (Cards, Content-Block / Slider, Iconlist, Headline) 23 | - Main template with subtemplates for easy conversion / exchange 24 | - Navigation based on the Navigation_Array-AddOn 25 | - Modules are built with MForm 26 | - MP4 video output is supported 27 | 28 | ## Note 29 | 30 | The demo installs the addon **theme_lock** to force the "Light Theme" in the backend. UIKit3 is also used in the backend for display, the darkmode unfortunately causes problems here. 31 | 32 | ## Further development 33 | 34 | The demo will be extended from time to time and errors will be corrected. So we are grateful for hints. 35 | 36 | ## Custom theme 37 | 38 | A main folder uikit is created. There you will find the theme for the frontend. 39 | You can simply replace the dist folder with your own. 40 | If necessary, adjust the sources in the template. 41 | For the creation the Yarn-Workflow of UIKit is recommended. 42 | 43 | ## Installation 44 | 45 | 1. the AddOn directory must have the name `demo_uikit3`; after unpacking copy it into the AddOn directory: `redaxo/src/addons`. 46 | 2. install the AddOn. 47 | 3. on the page "UIKit-Demo" click on "Install Demo". 48 | 49 | Have fun! 50 | -------------------------------------------------------------------------------- /backups/redaxo_uikit_demo.sql: -------------------------------------------------------------------------------- 1 | ## Redaxo Database Dump Version 5 2 | ## Prefix rex_ 3 | ## charset utf8mb4 4 | 5 | SET FOREIGN_KEY_CHECKS = 0; 6 | 7 | DROP TABLE IF EXISTS `rex_action`; 8 | CREATE TABLE `rex_action` ( 9 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 10 | `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 11 | `preview` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 12 | `presave` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 13 | `postsave` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 14 | `previewmode` tinyint(4) DEFAULT NULL, 15 | `presavemode` tinyint(4) DEFAULT NULL, 16 | `postsavemode` tinyint(4) DEFAULT NULL, 17 | `createdate` datetime NOT NULL, 18 | `createuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 19 | `updatedate` datetime NOT NULL, 20 | `updateuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 21 | `revision` int(10) unsigned NOT NULL, 22 | PRIMARY KEY (`id`) 23 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 24 | DROP TABLE IF EXISTS `rex_article`; 25 | CREATE TABLE `rex_article` ( 26 | `pid` int(10) unsigned NOT NULL AUTO_INCREMENT, 27 | `id` int(10) unsigned NOT NULL, 28 | `parent_id` int(10) unsigned NOT NULL, 29 | `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 30 | `catname` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 31 | `catpriority` int(10) unsigned NOT NULL, 32 | `startarticle` tinyint(1) NOT NULL, 33 | `priority` int(10) unsigned NOT NULL, 34 | `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 35 | `status` tinyint(1) NOT NULL, 36 | `template_id` int(10) unsigned NOT NULL, 37 | `clang_id` int(10) unsigned NOT NULL, 38 | `createdate` datetime NOT NULL, 39 | `createuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 40 | `updatedate` datetime NOT NULL, 41 | `updateuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 42 | `revision` int(10) unsigned NOT NULL, 43 | PRIMARY KEY (`pid`), 44 | UNIQUE KEY `find_articles` (`id`,`clang_id`), 45 | KEY `id` (`id`), 46 | KEY `clang_id` (`clang_id`), 47 | KEY `parent_id` (`parent_id`) 48 | ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 49 | 50 | LOCK TABLES `rex_article` WRITE; 51 | /*!40000 ALTER TABLE `rex_article` DISABLE KEYS */; 52 | INSERT INTO `rex_article` VALUES 53 | (1,1,0,'Start','Start',1,1,1,'|',1,1,1,'2022-01-22 16:31:13','uikitdemo','2022-01-29 14:17:35','uikitdemo',0), 54 | (2,2,0,'Die Module','Die Module',2,1,1,'|',1,1,1,'2022-01-22 16:48:11','uikitdemo','2022-09-30 15:31:29','admin',0), 55 | (4,4,0,'AJAX - Modal 1','Modal 1',3,1,1,'|',0,1,1,'2022-01-24 16:41:07','uikitdemo','2022-02-05 13:37:42','uikitdemo',0), 56 | (5,5,0,'Modal 2','Modal 2',4,1,1,'|',0,1,1,'2022-01-24 16:42:48','uikitdemo','2022-01-24 16:43:40','uikitdemo',0); 57 | /*!40000 ALTER TABLE `rex_article` ENABLE KEYS */; 58 | UNLOCK TABLES; 59 | 60 | DROP TABLE IF EXISTS `rex_article_slice`; 61 | CREATE TABLE `rex_article_slice` ( 62 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 63 | `article_id` int(10) unsigned NOT NULL, 64 | `clang_id` int(10) unsigned NOT NULL, 65 | `ctype_id` int(10) unsigned NOT NULL, 66 | `module_id` int(10) unsigned NOT NULL, 67 | `revision` int(11) NOT NULL, 68 | `priority` int(10) unsigned NOT NULL, 69 | `status` tinyint(1) NOT NULL DEFAULT 1, 70 | `value1` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 71 | `value2` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 72 | `value3` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 73 | `value4` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 74 | `value5` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 75 | `value6` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 76 | `value7` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 77 | `value8` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 78 | `value9` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 79 | `value10` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 80 | `value11` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 81 | `value12` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 82 | `value13` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 83 | `value14` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 84 | `value15` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 85 | `value16` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 86 | `value17` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 87 | `value18` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 88 | `value19` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 89 | `value20` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 90 | `media1` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 91 | `media2` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 92 | `media3` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 93 | `media4` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 94 | `media5` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 95 | `media6` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 96 | `media7` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 97 | `media8` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 98 | `media9` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 99 | `media10` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 100 | `medialist1` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 101 | `medialist2` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 102 | `medialist3` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 103 | `medialist4` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 104 | `medialist5` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 105 | `medialist6` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 106 | `medialist7` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 107 | `medialist8` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 108 | `medialist9` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 109 | `medialist10` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 110 | `link1` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 111 | `link2` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 112 | `link3` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 113 | `link4` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 114 | `link5` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 115 | `link6` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 116 | `link7` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 117 | `link8` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 118 | `link9` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 119 | `link10` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 120 | `linklist1` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 121 | `linklist2` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 122 | `linklist3` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 123 | `linklist4` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 124 | `linklist5` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 125 | `linklist6` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 126 | `linklist7` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 127 | `linklist8` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 128 | `linklist9` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 129 | `linklist10` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 130 | `createdate` datetime NOT NULL, 131 | `createuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 132 | `updatedate` datetime NOT NULL, 133 | `updateuser` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, 134 | PRIMARY KEY (`id`), 135 | KEY `slice_priority` (`article_id`,`priority`,`module_id`), 136 | KEY `clang_id` (`clang_id`), 137 | KEY `article_id` (`article_id`), 138 | KEY `find_slices` (`clang_id`,`article_id`) 139 | ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 140 | 141 | LOCK TABLES `rex_article_slice` WRITE; 142 | /*!40000 ALTER TABLE `rex_article_slice` DISABLE KEYS */; 143 | INSERT INTO `rex_article_slice` VALUES 144 | (2,1,1,1,2,0,1,1,'[{\"header\":\"\",\"REX_MEDIA_1\":\"for-into.mp4\",\"imageTitle\":\"\",\"content\":\"
Diese Demo zeigt, wie einfach es ist mit UIKit und REDAXO komplexe Layouts zu realisieren. Haupts\\u00e4chlich verwenden wir hierbei Cards und Slider verwendet. <\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"ukWidth\":\"2-3@m\",\"linkdiv\":\"linkdiv\",\"ukColor\":\"primary\"},{\"header\":\"\",\"REX_MEDIA_1\":\"\",\"imageTitle\":\"\",\"content\":\"
FriendsOFRedaxo<\\/strong> (FOR) ist der Ort f\\u00fcr gemeinsame REDAXO-Entwicklung. Alles, was hier entwickelt wird, ist Teil der Community und damit Gemeingut.<\\/p> Hier entstehen Addons, Plugins, Templates, Module oder sonstige n\\u00fctzliche Dinge f\\u00fcr REDAXO. Jeder kann mitmachen und sich an bestehenden Projekten beteiligen, Ideen anbringen, \\u00fcber Features diskutieren und neue Projekte starten.<\\/p> Interesse? Gro\\u00dfartig. Mach\\u2019 dich irgendwie bemerkbar (Slack, Github-Issue, Twitter, E-Mail an friendsof {at} redaxo.org), dann holt dich jemand ins Team! \\ud83d\\ude4b\\ud83c\\udffc<\\/p>\",\"1\":\"https:\\/\\/friendsofredaxo.github.io\",\"LinkText\":\"Weitere Informationen\",\"ukWidth\":\"expand@m\",\"linkdiv\":\"linkdiv\",\"ukColor\":\"muted\"}]','[{\"gutterWidth\":\"medium\",\"matchHeight\":\"1\"}]','[{\"ukcolor\":\"default\"}]',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'blue-g499898749_1920.jpg',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-22 18:39:35','uikitdemo','2022-01-29 14:17:35','uikitdemo'),
145 | (3,1,1,1,2,0,4,1,'[{\"header\":\"\",\"REX_MEDIA_1\":\"\",\"imageTitle\":\"\",\"content\":\" Du kannst dein Repo nur dann an FOR, \\u00fcbertragen, wenn du auch FOR-Mitglied bist. Kontaktiere uns also vor den n\\u00e4chsten Schritten, damit wir dich als Mitglied aufnehmen k\\u00f6nnen. Solltest du kein Mitglied werden wollen, kannst du dein Repo nach vorheriger Abstimmung an eines der Mitglieder \\u00fcbertragen, das es danach weiter an FOR \\u00fcbertr\\u00e4gt. Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den s\\u00fc\\u00dfen Fr\\u00fchlingsmorgen, die ich mit ganzem Herzen genie\\u00dfe. Ich bin allein und freue mich meines Lebens in dieser Gegend, die f\\u00fcr solche Seelen geschaffen ist wie die meine. Ich bin so gl\\u00fccklich, mein Bester, so ganz in dem Gef\\u00fchle von ruhigem Dasein versunken, da\\u00df meine Kunst darunter leidet. <\\/p> Ich bin ein Button<\\/a> Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den s\\u00fc\\u00dfen Fr\\u00fchlingsmorgen, die ich mit ganzem Herzen genie\\u00dfe. Ich bin allein und freue mich meines Lebens in dieser Gegend, die f\\u00fcr solche Seelen geschaffen ist wie die meine. Ich bin so gl\\u00fccklich, mein Bester, so ganz in dem Gef\\u00fchle von ruhigem Dasein versunken, da\\u00df meine Kunst darunter leidet. <\\/p>\",\"1\":\"https:\\/\\/github.com\\/FriendsOfREDAXO\\/demo_uikit3\",\"LinkText\":\"Zur GitHub-Repo\",\"align\":\"uk-card-media-left\"}]','secondary',NULL,'slideshow',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 12:40:18','uikitdemo','2022-01-27 16:30:58','uikitdemo'),
147 | (5,1,1,1,3,0,2,1,'[{\"REX_MEDIA_1\":\"uikit.svg\",\"text\":\"UIkit 3 Demo f\\u00fcr REDAXO. \"},{\"REX_MEDIA_1\":\"expand.svg\",\"text\":\"Responsive Design\"},{\"REX_MEDIA_1\":\"github-alt.svg\",\"text\":\"Gemeinsam entwickelt bei GitHub\"},{\"REX_MEDIA_1\":\"happy.svg\",\"text\":\"Sieht doch ok aus? \"},{\"REX_MEDIA_1\":\"thumbnails.svg\",\"text\":\"All you need are cards \"}]','h2','Hier ein paar SVG-Bilder \r\nmit uk-svg und tiles',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 14:41:11','uikitdemo','2022-01-25 17:33:41','uikitdemo'),
148 | (6,4,1,1,1,0,1,1,'[{\"6\":\"blue-g499898749_1920.jpg\",\"imageTitle\":\"\",\"content\":\" \\u00dcberall dieselbe alte Leier. Das Layout ist fertig, der Text l\\u00e4sst auf sich warten. Damit das Layout nun nicht nackt im Raume steht und sich klein und leer vorkommt, springe ich ein: der Blindtext. Genau zu diesem Zwecke erschaffen, immer im Schatten meines gro\\u00dfen Bruders \\u00bbLorem Ipsum\\u00ab, freue ich mich jedes Mal, wenn Sie ein paar Zeilen lesen. Denn esse est percipi - Sein ist wahrgenommen werden. Und weil Sie nun schon die G\\u00fcte haben, mich ein paar weitere S\\u00e4tze lang zu begleiten, m\\u00f6chte ich diese Gelegenheit nutzen, Ihnen nicht nur als L\\u00fcckenf\\u00fcller zu dienen, sondern auf etwas hinzuweisen, das es ebenso verdient wahrgenommen zu werden: Webstandards n\\u00e4mlich. Sehen Sie, Webstandards sind das Regelwerk, auf dem Webseiten aufbauen. So gibt es Regeln f\\u00fcr HTML, CSS, JavaScript oder auch XML; Worte, die Sie vielleicht schon einmal von Ihrem Entwickler geh\\u00f6rt haben. Diese Standards sorgen daf\\u00fcr, dass alle Beteiligten aus einer Webseite den gr\\u00f6\\u00dften Nutzen ziehen. Im Gegensatz zu fr\\u00fcheren Webseiten m\\u00fcssen wir zum Beispiel nicht mehr zwei verschiedene Webseiten f\\u00fcr den Internet Explorer und einen anderen Browser programmieren. Es reicht eine Seite, die - richtig angelegt - sowohl auf verschiedenen Browsern im Netz funktioniert, aber ebenso gut f\\u00fcr den Ausdruck oder\\u2026<\\/p>\",\"align\":\"uk-card-media-left\"}]','secondary',NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 16:34:31','uikitdemo','2022-02-05 13:37:42','uikitdemo'),
149 | (7,5,1,1,1,0,1,1,'[{\"6\":\"\",\"imageTitle\":\"\",\"content\":\" Dies ist ein Typoblindtext. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. Manchmal S\\u00e4tze, die alle Buchstaben des Alphabets enthalten - man nennt diese S\\u00e4tze \\u00bbPangrams\\u00ab. Sehr bekannt ist dieser: The quick brown fox jumps over the lazy old dog. Oft werden in Typoblindtexte auch fremdsprachige Satzteile eingebaut (AVAIL\\u00ae and Wefox\\u2122 are testing aussi la Kerning), um die Wirkung in anderen Sprachen zu testen. In Lateinisch sieht zum Beispiel fast jede Schrift gut aus. Quod erat demonstrandum. Seit 1975 fehlen in den meisten Testtexten die Zahlen, weswegen nach TypoGb. 204 \\u00a7 ab dem Jahr 2034 Zahlen in 86 der Texte zur Pflicht werden. Nichteinhaltung wird mit bis zu 245 \\u20ac oder 368 $ bestraft. Genauso wichtig in sind mittlerweile auch \\u00c2\\u00e7c\\u00e8\\u00f1t\\u00eb, die in neueren Schriften aber fast immer enthalten sind. Ein wichtiges aber schwierig zu integrierendes Feld sind OpenType-Funktionalit\\u00e4ten. Je nach Software und Voreinstellungen k\\u00f6nnen eingebaute Kapit\\u00e4lchen, Kerning oder Ligaturen (sehr pfiffig) nicht richtig dargestellt werden.Dies ist ein Typoblindtext. <\\/p> An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks. Dies ist ein Typoblindtext. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks oder Handgloves, um Schriften zu testen. Manchmal S\\u00e4tze, die alle Buchstaben des Alphabets enthalten - man nennt diese S\\u00e4tze \\u00bbPangrams\\u00ab. Sehr bekannt ist dieser: The quick brown fox jumps over the lazy old dog. Oft werden in Typoblindtexte auch fremdsprachige Satzteile eingebaut (AVAIL\\u00ae and Wefox\\u2122 are testing aussi la Kerning), um die Wirkung in anderen Sprachen zu testen. In Lateinisch sieht zum Beispiel fast jede Schrift gut aus. Quod erat demonstrandum. Seit 1975 fehlen in den meisten Testtexten die Zahlen, weswegen nach TypoGb. 204 \\u00a7 ab dem Jahr 2034 Zahlen in 86 der Texte zur Pflicht werden. Nichteinhaltung wird mit bis zu 245 \\u20ac oder 368 $ bestraft. Genauso wichtig in sind mittlerweile auch \\u00c2\\u00e7c\\u00e8\\u00f1t\\u00eb, die in neueren Schriften aber fast immer enthalten sind. Ein wichtiges aber schwierig zu integrierendes Feld sind OpenType-Funktionalit\\u00e4ten. Je nach Software und Voreinstellungen k\\u00f6nnen eingebaute Kapit\\u00e4lchen, Kerning oder Ligaturen (sehr pfiffig) nicht richtig dargestellt werden.Dies ist ein Typoblindtext. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen. Manchmal benutzt man Worte wie Hamburgefonts, Rafgenduks<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-flex-last@s uk-card-media-left\"}]','default',NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 16:43:40','uikitdemo','2022-01-24 16:43:40','uikitdemo'),
150 | (8,2,1,1,2,0,2,1,'[{\"header\":\"Das Cards Modul\",\"REX_MEDIA_1\":\"\",\"imageTitle\":\"\",\"content\":\" Mit dem Cards-Modul wurde dieser Textabschnitt erstellt. Hiermit k\\u00f6nnen verschiedene Layouts realisiert werden. Es erm\\u00f6glicht die Gestaltung ohne fest definiertem Grid. Es k\\u00f6nnen in der Sektion Hintergrundfarben und Hintergrundbilder mit Parallax-Effekt eingebunden werden <\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"ukWidth\":\"auto@m\",\"linkdiv\":\"\",\"ukColor\":\"default\"},{\"header\":\"Bilder\",\"REX_MEDIA_1\":\"blue-5457731_1920.jpg\",\"imageTitle\":\"\",\"content\":\" Das Cards-Modul erlaubt die Einbindung von Bildern. <\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"ukWidth\":\"1-2@m\",\"linkdiv\":\"\",\"ukColor\":\"primary\"},{\"header\":\"Videos\",\"REX_MEDIA_1\":\"for-into.mp4\",\"imageTitle\":\"\",\"content\":\" Kurze lokale Videos k\\u00f6nnen eingebunden werden<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"ukWidth\":\"1-2@m\",\"linkdiv\":\"\",\"ukColor\":\"secondary\"}]','[{\"gutterWidth\":\"medium\"}]','[{\"ukcolor\":\"default\"}]',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'blue-g499898749_1920.jpg',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 17:16:44','uikitdemo','2022-01-24 17:27:59','uikitdemo'),
151 | (9,2,1,1,4,0,1,1,'Die Module','h1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 17:24:44','uikitdemo','2022-09-30 15:31:29','admin'),
152 | (10,2,1,1,1,0,3,1,'[{\"6\":\"\",\"imageTitle\":\"\",\"content\":\" Dieses Modul kann zur Darstellung von einfachen Texten, 50\\/50 Kacheln und f\\u00fcr Slide-Shows verwendet werden. Wird kein Bild ausgew\\u00e4hlt wird die Textbreite reduziert um einen besseren Lesefluss zu erm\\u00f6glichen<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-flex-last@s uk-card-media-left\"}]','secondary',NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 17:32:57','uikitdemo','2022-01-24 17:33:41','uikitdemo'),
153 | (11,2,1,1,1,0,5,1,'[{\"6\":\"for-into.mp4\",\"imageTitle\":\"Daa FriendsOfREDAXO-Logo \",\"content\":\" Ein Click gen\\u00fcgt und aus den Bl\\u00f6cken wird ein Slider. Es k\\u00f6nnen im Modul Text \\/ Bild \\/ Video \\/ Slides mehre Bl\\u00f6cke mittels Mblock angelegt werden. Entwerfe werden diese untereinander dargestellt oder auf Wunsch als Slider. Auch hier k\\u00f6nnen Videos und Bilder zus\\u00e4tzlich eingebunden werden. <\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-flex-last@s uk-card-media-left\"},{\"6\":\"blue-g499898749_1920.jpg\",\"imageTitle\":\"Irgendein Bild\",\"content\":\" Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den s\\u00fc\\u00dfen Fr\\u00fchlingsmorgen, die ich mit ganzem Herzen genie\\u00dfe. Ich bin allein und freue mich meines Lebens in dieser Gegend, die f\\u00fcr solche Seelen geschaffen ist wie die meine. Ich bin so gl\\u00fccklich, mein Bester, so ganz in dem Gef\\u00fchle von ruhigem Dasein versunken, da\\u00df meine Kunst darunter leidet. Ich k\\u00f6nnte jetzt nicht zeichnen, nicht einen Strich, und bin nie ein gr\\u00f6\\u00dferer Maler gewesen als in diesen Augenblicken. Wenn das liebe Tal um mich dampft, und die hohe Sonne an der Oberfl\\u00e4<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-card-media-left\"}]','primary',NULL,'slideshow',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 17:35:44','uikitdemo','2022-01-24 17:39:43','uikitdemo'),
154 | (12,2,1,1,1,0,4,1,'[{\"6\":\"for-into.mp4\",\"imageTitle\":\"Daa FriendsOfREDAXO-Logo \",\"content\":\" Ein Click gen\\u00fcgt und aus den Bl\\u00f6cken wird ein Slider. Es k\\u00f6nnen im Modul Text \\/ Bild \\/ Video \\/ Slides mehre Bl\\u00f6cke mittels Mblock angelegt werden. Entwerfe werden diese untereinander dargestellt oder auf Wunsch als Slider. Auch hier k\\u00f6nnen Videos und Bilder zus\\u00e4tzlich eingebunden werden. <\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-flex-last@s uk-card-media-left\"},{\"6\":\"blue-g499898749_1920.jpg\",\"imageTitle\":\"Irgendein Bild\",\"content\":\" Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den s\\u00fc\\u00dfen Fr\\u00fchlingsmorgen, die ich mit ganzem Herzen genie\\u00dfe. Ich bin allein und freue mich meines Lebens in dieser Gegend, die f\\u00fcr solche Seelen geschaffen ist wie die meine. Ich bin so gl\\u00fccklich, mein Bester, so ganz in dem Gef\\u00fchle von ruhigem Dasein versunken, da\\u00df meine Kunst darunter leidet. Ich k\\u00f6nnte jetzt nicht zeichnen, nicht einen Strich, und bin nie ein gr\\u00f6\\u00dferer Maler gewesen als in diesen Augenblicken. Wenn das liebe Tal um mich dampft, und die hohe Sonne an der Oberfl\\u00e4<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-card-media-left\"}]','default',NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-24 17:46:44','uikitdemo','2022-01-24 17:47:27','uikitdemo');
155 | /*!40000 ALTER TABLE `rex_article_slice` ENABLE KEYS */;
156 | UNLOCK TABLES;
157 |
158 | DROP TABLE IF EXISTS `rex_cke5_mblock_demo`;
159 | CREATE TABLE `rex_cke5_mblock_demo` (
160 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
161 | `name` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
162 | `mblock_field` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
163 | `createdate` datetime DEFAULT NULL,
164 | `updatedate` datetime DEFAULT NULL,
165 | `createuser` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
166 | `updateuser` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
167 | PRIMARY KEY (`id`)
168 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
169 |
170 | LOCK TABLES `rex_cke5_mblock_demo` WRITE;
171 | /*!40000 ALTER TABLE `rex_cke5_mblock_demo` DISABLE KEYS */;
172 | INSERT INTO `rex_cke5_mblock_demo` VALUES
173 | (1,'demo','{\"attr_type\":[{\"text\":\" Seit dem Beginn der Shuttle-Fl\\u00fcge im Jahr 1981 waren insgesamt f\\u00fcnf verschiedene Space Shuttles ins All geflogen. Davon waren bis zur Einstellung des Programms im Jahre 2011 noch drei (Discovery<\\/a>, Atlantis<\\/a> und Endeavour<\\/a>) im Einsatz. Zwei Space Shuttles (Challenger<\\/a>und Columbia<\\/a>) wurden bei Ungl\\u00fccken in den Jahren 1986 und 2003 zerst\\u00f6rt.<\\/p> OV-101 Enterprise<\\/a> war ein flug-, jedoch nicht raumflugtauglicher Prototyp, der f\\u00fcr Gleitversuche und f\\u00fcr Flugversuche auf dem R\\u00fccken des Shuttle Carrier Aircrafts eingesetzt wurde. Die Enterprise<\\/i> kann seit August 2012 im Intrepid Sea, Air & Space Museum<\\/a> besichtigt werden.<\\/p> Quelle: Wikipedia<\\/a><\\/p>\"},{\"text\":\" Die Raumf\\u00e4hre<\\/a> Columbia<\\/strong> war das erste weltraumtaugliche Space Shuttle<\\/a> der NASA<\\/a> und das erste wiederverwendbare Raumfahrzeug. Im M\\u00e4rz 1979 fertiggestellt, fand der Jungfernflug<\\/a> am 12. April 1981 statt (STS-1<\\/a>). Die interne Bezeichnung lautet OV-102, wobei OV f\\u00fcr Orbiter Vehicle<\\/i> steht. Sie brach am 1. Februar 2003 bei ihrem 28. Weltraumeinsatz (Mission STS-107<\\/a>) beim Wiedereintritt<\\/a> in die Erdatmosph\\u00e4re<\\/a> auseinander, wobei alle sieben Besatzungmitglieder ums Leben kamen.<\\/p> Quelle: Wikipedia<\\/a><\\/p>\"},{\"text\":\" Das Space Shuttle<\\/a> Challenger<\\/strong><\\/i> (englisch<\\/a> f\\u00fcr Herausforderer<\\/i>) war die dritte Raumf\\u00e4hre<\\/a> der NASA<\\/a> nach dem weltraumuntauglichen Prototyp Enterprise<\\/i><\\/a> und der ersten voll flugtauglichen Columbia<\\/i><\\/a>. Im Oktober 1982 fertiggestellt, erfolgte der Jungfernflug im April 1983 (STS-6<\\/a>). Die interne Bezeichnung lautet OV-099.<\\/p> Die Challenger<\\/i> wurde nach dem britischen Forschungsschiff HMS Challenger<\\/i><\\/a> benannt, das von 1872 bis 1876 die Weltmeere befuhr. Schon die Mondlandef\\u00e4hre<\\/a> von Apollo 17<\\/a> trug diesen Namen.<\\/p> Die Challenger<\\/i> absolvierte neun vollst\\u00e4ndige Fl\\u00fcge mit insgesamt 987 Erdumkreisungen. Sie war insgesamt 69 Tage im Weltraum<\\/a>.<\\/p> Am 28. Januar 1986, 73 Sekunden nach dem Start der Mission STS-51-L<\\/a>, brach die Raumf\\u00e4hre in etwa 15 Kilometer H\\u00f6he auseinander[1]<\\/a> (siehe Challenger-Katastrophe<\\/a>). Dabei starben alle sieben Astronauten. Als Grund wurde das Versagen eines oder mehrerer Dichtungsringe in einer der seitlichen Feststoffraketen<\\/a> ermittelt. Es war der bis dahin schwerste Unfall in der Raumfahrtgeschichte<\\/a> der USA.<\\/p> Quelle: Wikipedia<\\/a><\\/p>\"},{\"text\":\" Die Raumf\\u00e4hre<\\/a> Discovery<\\/strong> (englisch<\\/a> f\\u00fcr Entdeckung<\\/i>) wurde am 12. August 1983 fertiggestellt und startete zu ihrem Jungfernflug<\\/a> am 30. August 1984 (STS-41-D<\\/a>). Die interne Bezeichnung f\\u00fcr das Space Shuttle<\\/a> lautet OV-103, wobei OV f\\u00fcr Orbiter Vehicle<\\/i> steht. Mit der Landung am 9. M\\u00e4rz 2011 beendete die Raumf\\u00e4hre ihre letzte Mission STS-133<\\/a>. Mit 39 Fl\\u00fcgen ist die Discovery<\\/i> das am h\\u00e4ufigsten eingesetzte aller Weltraumfahrzeuge.<\\/p> Die Discovery ist nach einem der Schiffe<\\/a> benannt, mit denen James Cook<\\/a> den Pazifik<\\/a> befuhr und 1778 Hawaii<\\/a> entdeckte.<\\/p> Mit 39 Fl\\u00fcgen absolvierte die Discovery mehr Fl\\u00fcge als alle \\u00fcbrigen Orbiter. Au\\u00dferdem wurde sie jeweils f\\u00fcr den ersten Flug nach den Ungl\\u00fccken der Challenger<\\/a> und der Columbia<\\/a> ausgew\\u00e4hlt.<\\/p> 1990 transportierte die Discovery das Hubble-Weltraumteleskop<\\/a> ins All.<\\/p> Gro\\u00dfe Beachtung fand 2005 die Mission STS-114<\\/a>, der erste Flug eines Shuttles nach der Columbia-Katastrophe<\\/a> im Jahr 2003. Auch dieser Flug wurde von einigen Pannen begleitet, was erneut zur Aussetzung der Shuttle-Fl\\u00fcge f\\u00fchrte.<\\/p> Im Juli 2006 absolvierte die Discovery mit der Mission STS-121<\\/a> erfolgreich einen weiteren Versorgungsflug zur Internationalen Raumstation<\\/a> (ISS).<\\/p> Im Mai\\/Juni 2008 f\\u00fchrte der Orbiter die Mission STS-124<\\/a> durch. Das mit sieben Mann besetzte Shuttle dockte am 2. Juni 2008 an der ISS an. Hauptaufgabe der Mission war es, das japanische Labormodul Kib\\u014d<\\/a> zur ISS zu bringen. Au\\u00dferdem brachte das Shuttle Ersatzteile zur Reparatur der defekten Weltraumtoilette in der ISS mit.<\\/p> Am 29. August 2009 startete die Discovery mit dem Multi-Purpose Logistics Module<\\/a> Leonardo zur ISS, um dort Vorr\\u00e4te und Material anzuliefern.<\\/p> Am 24. Februar 2011 um 22:53 Uhr startete das Shuttle nach 27 Dienstjahren mit STS-133<\\/a> zum letzten Mal. Am 26. Februar 2011, 20:14 Uhr, dockte sie an der ISS an und landete am 9. M\\u00e4rz 2011 um 17:57 Uhr zum letzten Mal auf der Landebahn<\\/a> des Kennedy Space Center in Florida.[1]<\\/a> Die Discovery ist mit 238,5 Millionen Kilometern die am weitesten gereiste Raumf\\u00e4hre der NASA-Shuttleflotte.<\\/p> Seit dem 19. April 2012 steht die Discovery als Museumsst\\u00fcck im James S. McDonnell Space Hangar im Steven F. Udvar-Hazy Center<\\/a> des Smithsonian-Instituts<\\/a> in der N\\u00e4he vom Washington Dulles International Airport. Dort hat sie den Prototyp der Space Shuttles, die Enterprise<\\/a>, ersetzt.<\\/p>\"},{\"text\":\" Die Enterprise<\\/strong> (englisch<\\/a> f\\u00fcr Unternehmen<\\/i>, Unternehmung<\\/i>) ist ein Prototyp<\\/a> f\\u00fcr die Raumf\\u00e4hren<\\/a> aus dem Space-Shuttle<\\/a>-Programm der US-Raumfahrtbeh\\u00f6rde NASA<\\/a>. Die interne Bezeichnung lautet OV-101<\\/i>. Der Name \\u201eEnterprise\\u201c geht auf das fiktive Raumschiff Enterprise<\\/i><\\/a> aus der Science-Fiction-Serie Star Trek<\\/i><\\/a> zur\\u00fcck.<\\/p> Die Raumf\\u00e4hre diente ab 1977 zur Erprobung der Flugf\\u00e4higkeiten der Space Shuttles in der Atmosph\\u00e4re. Dazu wurde sie ohne einige wichtige Komponenten wie Triebwerk<\\/a> und Hitzeschild<\\/a> gebaut und war deshalb nicht zu Fl\\u00fcgen in den Weltraum<\\/a> f\\u00e4hig. Pl\\u00e4ne, sie hierf\\u00fcr nachzur\\u00fcsten, wurden aus Kostengr\\u00fcnden nicht realisiert. Obwohl die Enterprise<\\/i> damit ein Prototyp blieb, wird sie von der NASA als \\u201eerstes Space Shuttle\\u201c bezeichnet.[1]<\\/a> In den Jahren 1983 und 1984 wurde sie in verschiedenen europ\\u00e4ischen L\\u00e4ndern, Kanada und den USA vorgef\\u00fchrt und 1985 schlie\\u00dflich der Smithsonian Institution<\\/a> \\u00fcbergeben, die sie im National Air and Space Museum<\\/a> ausstellte. Im April 2012 wurde die Raumf\\u00e4hre nach New York gebracht, wo sie seither im Intrepid Sea-Air-Space Museum<\\/a> ausgestellt wird.<\\/p> Quelle: Wikipedia<\\/a><\\/p>\"},{\"text\":\" Die Raumf\\u00e4hre<\\/a> Atlantis<\\/strong> ist ein Space Shuttle<\\/a> der NASA<\\/a>. Benannt nach dem ersten amerikanischen ozeanografischen Forschungsschiff<\\/a> Atlantis<\\/i><\\/a>, wurde sie im April 1984 fertiggestellt und hatte ihren Jungfernflug im Oktober 1985 (STS-51-J<\\/a>). Die interne Bezeichnung des Orbiters<\\/a> lautet OV-104<\\/i>. Ihre letzte Mission endete am 21. Juli 2011.<\\/p> Von 1995 bis 1997 wurde die Atlantis ausschlie\\u00dflich f\\u00fcr die Fl\\u00fcge zur russischen Raumstation<\\/a> Mir<\\/a> im Rahmen des Shuttle-Mir-Programms<\\/a> eingesetzt, wof\\u00fcr sie mit einem Kopplungsadapter russischer Bauart ausgestattet wurde.<\\/p> Am 8. Juli 2011 startete sie zu ihrer 33. und letzten Mission. Sie transportierte Proviant, Material und Technik f\\u00fcr Experimente zur ISS<\\/a> und brachte das Logistikmodul<\\/a> Raffaello zur Erde zur\\u00fcck.[1]<\\/a> Am 21. Juli 2011 p\\u00fcnktlich um 11.57 MESZ<\\/a> setzte sie sicher auf der Landebahn 15 des Kennedy Space Centers<\\/a> in Florida (USA)<\\/a> auf.[2]<\\/a> Ihre Landung beendete die \\u00c4ra der Shuttlefl\\u00fcge. Das Programm kostete zuletzt etwa 775 Millionen Dollar pro Mission.[3]<\\/a><\\/p> Seit dem Ende des amerikanischen Shuttle-Programms wird die Raumf\\u00e4hre als Museumsst\\u00fcck im Besucherzentrum des Kennedy Space Centers<\\/a> in Florida ausgestellt.[4]<\\/a><\\/p> Quelle: Wikipedia<\\/a><\\/p>\"},{\"text\":\" Das Space Shuttle<\\/a> Endeavour<\\/strong> (englisch<\\/a> f\\u00fcr Bem\\u00fchen<\\/i>, Anstrengung<\\/i>) wurde am 25. April 1991 als Ersatz f\\u00fcr die Raumf\\u00e4hre Challenger<\\/a> fertiggestellt und hatte seinen Jungfernflug<\\/a> am 7. Mai 1992. Seine interne Bezeichnung lautet OV-105. Der letzte Start fand am 16. Mai 2011 um 14:56 Uhr MESZ<\\/a> statt; die letzte Landung am 1. Juni 2011 um 8:35 Uhr MESZ in Florida.<\\/p> Der Name f\\u00fcr die Raumf\\u00e4hre<\\/a> wurde durch einen Sch\\u00fclerwettbewerb gefunden, an dem insgesamt 71.652 Sch\\u00fcler teilnahmen. Im Mai 1989 verk\\u00fcndete US-Pr\\u00e4sident<\\/a> George H. W. Bush<\\/a> den Namen Endeavour nach dem gleichnamigen ersten Schiff<\\/a> von James Cook<\\/a> (daher auch die britische Schreibweise<\\/a> anstelle der im amerikanischen Englisch<\\/a> richtigen Schreibweise Endeavor<\\/i>).<\\/p> Die Endeavour wurde von Rockwell International<\\/a> gebaut und kostete insgesamt 2,2 Milliarden US-Dollar. Sie absolvierte 25 erfolgreiche Fl\\u00fcge.<\\/p> Zuletzt wurde das Shuttle zwischen Dezember 2003 und Oktober 2005 grund\\u00fcberholt (Orbiter Major Modification Period) und erhielt dabei wichtige technische und sicherheitsrelevante Verbesserungen. Neben dem sogenannten Gl\\u00e4sernen Cockpit<\\/a>, einer mit mehreren frei belegbaren Monitoren ausger\\u00fcsteten Instrumententafel, erhielt die Endeavour dabei ein verbessertes Navigationssystem<\\/a> zur Positionsbestimmung und die aus den Empfehlungen des \\u201eColumbia Accident Investigation Boards\\u201c resultierende Robotarm-Verl\\u00e4ngerung Orbiter Boom Sensor System<\\/a> (OBSS).<\\/p> Nach ihrer letzten Mission im Mai\\/Juni 2011 wurde die Raumf\\u00e4hre mit Ende des amerikanischen Shuttle-Programms<\\/a> als Museumsst\\u00fcck dem California Science Center<\\/a> in Los Angeles<\\/a> zugewiesen, und ist dort seit Oktober 2012 ausgestellt.[1]<\\/a><\\/p> Dieses Modul ermöglicht die Erstellung mehrpaltiger Designs, ohne fest definiertem Grid. Es können in der Sektion Hintergrundfarben und Hintergrundbilder mit Parallax-Effekt eingebunden werden Jeder Abschnitt kann unterschiedlich breit sein oder sich dem vorhandenen Platz anpassen \r\n \r\n \" data-id=\"=rex_getUrl(4)?>\" uk-toggle=\"target: #ajax-modal\">AJAX Modal | \r\n \" data-id=\"=rex_getUrl(5)?>\" uk-toggle=\"target: #ajax-modal\">AJAX Modal 2\r\n \r\n \" data-id=\"=rex_getUrl(4)?>\" uk-toggle=\"target: #ajax-offcanvas\">Canvas Link\r\n \r\n ' . $this->i18n('installation_error') . ' ' . $this->i18n('installation_success') . ' ' . $this->i18n('install_description') . 'Anleitungen<\\/h2>
Ein Addon zu den Friends Of REDAXO \\u00fcbertragen<\\/h3>
Benutze in den Repository-Settings die Option \\u201cTransfer ownership\\u201d, um dein Repository an FriendsOfREDAXO (oder ein Mitglied) zu \\u00fcbertragen.
\\u00c4ndere den Autor \\u00fcberall in \\u201cFriends Of REDAXO\\u201d, insbesondere in der package.yml.
\\u00c4ndere die Supportpage in der package.yml auf die URL des neuen GitHub-Repositorys und passe auch andere Links zum Repository an.
Falls das Addon bereits in deinem MyREDAXO-Account angelegt wurde \\u2014 du also den Addon-Key besitzt \\u2014, bitte die Admins darum, das Addon den Friends Of REDAXO zu \\u00fcbertragen.
Nach erfolgreicher \\u00dcbertragung k\\u00f6nntest du \\u2014 k\\u00f6nnten wir! \\u2014 ein neues Major-Release ver\\u00f6ffentlichen, damit es alle mitbekommen. \\ud83c\\udf7e
<\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"ukWidth\":\"auto@m\",\"linkdiv\":\"\",\"ukColor\":\"secondary uk-light\"}]','[{\"gutterWidth\":\"medium\"}]','[{\"ukcolor\":\"primary\"}]',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2022-01-22 18:51:38','uikitdemo','2022-01-24 13:11:33','uikitdemo'),
146 | (4,1,1,1,1,0,3,1,'[{\"6\":\"for-into.mp4\",\"imageTitle\":\"Bild\",\"content\":\"Blindtext <\\/h2>
Dieser Button wurde im CKE5-Editor erstellt <\\/sup><\\/p>\",\"1\":\"\",\"LinkText\":\"\",\"align\":\"uk-flex-last@s uk-card-media-left\"},{\"6\":\"blue-g499898749_1920.jpg\",\"imageTitle\":\"dsfgdsfg\",\"content\":\"Text \\/ Bild \\/ Video \\/ Slides<\\/h2>
Slider oder Content-Block?<\\/h2>
Ein bisschen Blindtext<\\/h2>
Slider oder Content-Block?<\\/h2>
Ein bisschen Blindtext<\\/h2>
Die einzelnen Orbiter<\\/h2>
Columbia<\\/h2>
Challenger<\\/h2>
Discovery<\\/h2>
Enterprise<\\/h2>
Atlantis<\\/h2>
Endeavour<\\/h2>
\';\r\n }\r\n\r\n if (\'REX_VALUE[4]\' == \'slideshow\') {\r\n $out .= \'
\r\n
\' . $header . \'
Info zum Modul
\r\n
\'. $text.\'\r\n REX_ARTICLE[field=name]
\';\r\n echo rex_extension::registerPoint(new rex_extension_point(\'OUTPUT_FILTER\', \'REX_ARTICLE[]\' . \'\'));\r\n die();\r\n}?>\r\n\r\n\r\n \r\n \r\n \r\n isInstalled() && rex_addon::get(\"yrewrite\")->isAvailable()) {\r\n $seo = new rex_yrewrite_seo();\r\n echo $seo->getTitleTag() . PHP_EOL;\r\n echo $seo->getDescriptionTag() . PHP_EOL;\r\n echo $seo->getRobotsTag() . PHP_EOL;\r\n echo $seo->getHreflangTags() . PHP_EOL;\r\n echo $seo->getCanonicalUrlTag() . PHP_EOL;\r\n }\r\n ?>\r\n uikit/css/uikit.min.css\">\r\n\r\n\r\n\r\n REX_TEMPLATE[key=uikit_navi]\r\n \';\r\n $sub[] = myNavi_demo($cat[\'children\']);\r\n $sub[] = \'
\';\r\n $sub[] = \'\';\r\n $subnavi = join(\"\\n\", $sub);\r\n }\r\n $catname = $cat[\'catName\'];\r\n if ($cat[\'active\'] == true) {\r\n $catname = \'\' . $catname . \'\';\r\n $liclass .= \'uk-active\';\r\n }\r\n if ($liclass != \'\') {\r\n $liclass = \' class=\"\' . $liclass . \'\"\';\r\n }\r\n $catname = \'\' . $catname . \'\';\r\n $output[] = \'\';\r\n $sub[] = myNavi2($cat[\'children\']);\r\n $sub[] = \'
\';\r\n $subnavi = join(\"\\n\", $sub);\r\n }\r\n \r\n $catname = $cat[\'catName\'];\r\n \r\n if ($cat[\'active\'] == true) {\r\n $catname = \'\' . $catname . \'\';\r\n }\r\n $clicky =\'\';\r\n # if ($li==\' class=\"uk-parent\"\')\r\n if ($cat[\'hasChildren\'] == true)\r\n { \r\n $clicky = \'\';\r\n }\r\n $catname = \'\'.$catname.\'\';\r\n \r\n $output[] = \'\'\r\n . myNavi2(navArray($start = 0, $depth = 4, true)) .\r\n \'
\r\nlogo.svg\"> UIKit3 Demo\r\n
Die Installation kann etwas dauern, da auch alle benötigten AddOns geladen werden.
7 | demo_uikit3_install_button = UIKit Demo installieren
8 |
9 | demo_uikit3_confirm_setup = Bestehende Daten gehen verloren. Fortfahren?
10 |
11 | demo_uikit3_package_not_available = Benötigte Version des Pakets "{0}" ist nicht verfügbar!
12 | demo_uikit3_package_not_exists = Paket "{0}" ist nicht vorhanden!
13 | demo_uikit3_package_failed_to_download = Fehler beim Download von "{0}"!
14 | demo_uikit3_package_failed_to_validate = Fehler bei der Validierung von "{0}"!
15 | demo_uikit3_package_failed_to_extract = Fehler beim Entpacken von "{0}"!
16 | demo_uikit3_package_failed_to_install = Fehler beim Installieren von "{0}"!
17 | demo_uikit3_package_failed_to_activate = Fehler beim Aktivieren von "{0}"!
18 | demo_uikit3_package_failed_to_import = Fehler beim Importieren von "{0}"!
19 |
20 | demo_uikit3_installation_error = Demo konnte nicht installiert werden:
21 | demo_uikit3_installation_success = Demo wurde erfolgreich installiert!
22 |
23 | demo_uikit3_success_message = Die Demo kann nun auf der Seite {0} installiert werden.
24 |
--------------------------------------------------------------------------------
/lang/en_gb.lang:
--------------------------------------------------------------------------------
1 |
2 | demo_uikit3_title = UIKit3-Demo
3 |
4 | demo_uikit3_install = Installation
5 | demo_uikit3_install_heading = Installation
6 | demo_uikit3_install_description = Please note that all contents of the database will be deleted during installation!
The installation may take a while because all necessary addOns will be loaded.
7 | demo_uikit3_install_button = Install demo
8 |
9 | demo_uikit3_confirm_setup = Current data will be deleted. Would you like to proceed?
10 |
11 | demo_uikit3_package_not_available = Required version of package "{0}" not available for download!
12 | demo_uikit3_package_not_exists = Package "{0}" does not exist!
13 | demo_uikit3_package_failed_to_download = Failed to download package "{0}"!
14 | demo_uikit3_package_failed_to_validate = Failed to validate package "{0}"!
15 | demo_uikit3_package_failed_to_extract = Failed to extract package "{0}"!
16 | demo_uikit3_package_failed_to_install = Failed to install package "{0}"!
17 | demo_uikit3_package_failed_to_activate = Failed to activate package "{0}"!
18 | demo_uikit3_package_failed_to_import = Failed to import "{0}"!
19 |
20 | demo_uikit3_installation_error = Failed to install demo:
21 | demo_uikit3_installation_success = Successfully installed demo!
22 |
23 | demo_uikit3_success_message = The demo can now be installed on the page {0}.
24 |
--------------------------------------------------------------------------------
/lang/es_es.lang:
--------------------------------------------------------------------------------
1 |
2 | demo_uikit3_title = UIKit3-Demo
3 |
4 | demo_uikit3_install = instalación
5 | demo_uikit3_install_heading = instalación
6 | demo_uikit3_install_description = La instalación puede tardar un tiempo porque se cargarán todos los AddOns necesarios.
7 | demo_uikit3_install_button = Instalar demo
8 |
9 | demo_uikit3_confirm_setup = Se perderán los datos existentes. Continuar?
10 |
11 | demo_uikit3_package_not_available = La versión requerida del paquete "{0}" no está disponible.
12 | demo_uikit3_package_not_exists = ¡El paquete "{0}" no existe!
13 | demo_uikit3_package_failed_to_download = Error al descargar el paquete "{0}"!
14 | demo_uikit3_package_failed_to_validate = Error al validar el paquete "{0}" b>!
15 | demo_uikit3_package_failed_to_extract = Error al extraer el paquete "{0}"!
16 | demo_uikit3_package_failed_to_install = Error al instalar el paquete "{0}"!
17 | demo_uikit3_package_failed_to_activate = Error al activar el paquete "{0}"!
18 | demo_uikit3_package_failed_to_import = Error al importar "{0}"!
19 |
20 | demo_uikit3_installation_error = La demo no pudo ser instalada:
21 | demo_uikit3_installation_success = ¡Demo fue instalado exitosamente!
22 |
23 | demo_uikit3_success_message =
24 |
--------------------------------------------------------------------------------
/lang/pt_br.lang:
--------------------------------------------------------------------------------
1 |
2 | demo_uikit3_title =
3 |
4 | demo_uikit3_install = Instalação
5 | demo_uikit3_install_heading = Instalação
6 | demo_uikit3_install_description = Por favor, note que todos os conteúdos do banco de dados serão excluídos durante a instalação!
7 | demo_uikit3_install_button = Instale o demo
8 |
9 | demo_uikit3_confirm_setup = Os arquivos atuais serão deletados. Deseja continuar?
10 |
11 | demo_uikit3_package_not_available = Required version of package "{0}" not available for download!
12 | demo_uikit3_package_not_exists = Package "{0}" does not exist!
13 | demo_uikit3_package_failed_to_download = Failed to download package "{0}"!
14 | demo_uikit3_package_failed_to_validate = Failed to validate package "{0}"!
15 | demo_uikit3_package_failed_to_extract = Failed to extract package "{0}"!
16 | demo_uikit3_package_failed_to_install = Failed to install package "{0}"!
17 | demo_uikit3_package_failed_to_activate = Failed to activate package "{0}"!
18 | demo_uikit3_package_failed_to_import = Failed to import "{0}"!
19 |
20 | demo_uikit3_installation_error = Failed to install demo:
21 | demo_uikit3_installation_success = Successfully installed demo!
22 |
23 | demo_uikit3_success_message =
24 |
--------------------------------------------------------------------------------
/lang/sv_se.lang:
--------------------------------------------------------------------------------
1 |
2 | demo_uikit3_title = Basdemo
3 |
4 | demo_uikit3_install = Installation
5 | demo_uikit3_install_heading = Installation
6 | demo_uikit3_install_description = Observera att allt innehåll i databasen kommer att tas bort under installationen!
7 | demo_uikit3_install_button = Installera demo
8 |
9 | demo_uikit3_confirm_setup = Befintlig data går förlorad. Fortsätt?
10 |
11 | demo_uikit3_package_not_available = Erforderlig version av paketet "{0}" b> är inte tillgängligt!
12 | demo_uikit3_package_not_exists = Paketet "{0}" b> existerar inte!
13 | demo_uikit3_package_failed_to_download = Fel vid nedladdning av "{0}" b>!
14 | demo_uikit3_package_failed_to_validate = Fel med att validera "{0}" b>!
15 | demo_uikit3_package_failed_to_extract = Ett fel uppstod när du packade upp "{0}" b>!
16 | demo_uikit3_package_failed_to_install = Fel uppstod vid installeringen av "{0}" b>!
17 | demo_uikit3_package_failed_to_activate = Aktivering av "{0}" b> misslyckades!
18 | demo_uikit3_package_failed_to_import = Import av "{0}" b> misslyckades!
19 |
20 | demo_uikit3_installation_error = Demo kunde inte installeras:
21 | demo_uikit3_installation_success = Demo installerades med framgång!
22 |
23 | demo_uikit3_success_message = Demon kan nu installeras på sidan {0}.
24 |
--------------------------------------------------------------------------------
/lib/console/demo_base_install.php:
--------------------------------------------------------------------------------
1 | setDescription('Installs the REDAXO base demo')
11 | ->addOption('yes', 'y', InputOption::VALUE_NONE, 'runs the installation without confirmation');
12 | }
13 |
14 | protected function execute(InputInterface $input, OutputInterface $output)
15 | {
16 | $io = $this->getStyle($input, $output);
17 |
18 | $skipConfirmation = true === $input->getOption('yes');
19 |
20 | $io->title('UIKit 3 Demo Installation');
21 |
22 | if (!$input->isInteractive() && !$skipConfirmation) {
23 | return 1;
24 | }
25 |
26 | if (!$skipConfirmation && !$io->confirm('Current data will be deleted. Would you like to proceed?')) {
27 | return 1;
28 | }
29 |
30 |
31 | $io->writeln('Run installation ...');
32 |
33 | $errors = rex_uikit3_base::install();
34 |
35 | if (count($errors) > 0) {
36 | $io->error($this->decodeMessage("Failed to install demo:\n- " . join("\n- ", $errors)));
37 | return 1;
38 | }
39 | $io->success('Successfully installed demo!');
40 | return 0;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/demo_uikit3.php:
--------------------------------------------------------------------------------
1 | loadProperties();
9 |
10 | $errors = array();
11 |
12 | // step 1: select missing packages we need to download
13 | $missingPackages = array();
14 | $packages = array();
15 | if (isset($addon->getProperty('setup')['packages'])) {
16 | $packages = $addon->getProperty('setup')['packages'];
17 | }
18 |
19 | if (count($packages) > 0) {
20 |
21 | // fetch list of available packages from to redaxo webservice
22 | try {
23 | $packagesFromInstaller = rex_install_packages::getAddPackages();
24 | } catch (rex_functional_exception $e) {
25 | $errors[] = $e->getMessage();
26 | rex_logger::logException($e);
27 | }
28 |
29 | if (count($errors) == 0) {
30 | foreach ($packages as $id => $fileId) {
31 |
32 | $localPackage = rex_package::get($id);
33 | if ($localPackage->isSystemPackage()) {
34 | continue; // skip system packages, they don’t need to be downloaded
35 | }
36 |
37 | $installerPackage = isset($packagesFromInstaller[$id]['files'][$fileId]) ? $packagesFromInstaller[$id]['files'][$fileId] : false;
38 | if (!$installerPackage) {
39 | $errors[] = $addon->i18n('package_not_available', $id);
40 | }
41 |
42 | if ($localPackage->getVersion() !== $installerPackage['version']) {
43 | $missingPackages[$id] = $fileId; // add to download list if package is not yet installed
44 | }
45 | }
46 | }
47 | }
48 |
49 | // step 2: download required packages
50 | if (count($missingPackages) > 0 && count($errors) == 0) {
51 | foreach ($missingPackages as $id => $fileId) {
52 |
53 | $installerPackage = $packagesFromInstaller[$id]['files'][$fileId];
54 | if ($installerPackage) {
55 |
56 | // fetch package
57 | try {
58 | $archivefile = rex_install_webservice::getArchive($installerPackage['path']);
59 | } catch (rex_functional_exception $e) {
60 | rex_logger::logException($e);
61 | $errors[] = $addon->i18n('package_failed_to_download', $id);
62 | break;
63 | }
64 |
65 | // validate checksum
66 | if ($installerPackage['checksum'] != md5_file($archivefile)) {
67 | $errors[] = $addon->i18n('package_failed_to_validate', $id);
68 | break;
69 | }
70 |
71 | // extract package (overrides local package if existent)
72 | if (!rex_install_archive::extract($archivefile, rex_path::addon($id), $id)) {
73 | rex_dir::delete(rex_path::addon($id));
74 | $errors[] = $addon->i18n('package_failed_to_extract', $id);
75 | break;
76 | }
77 |
78 | rex_package_manager::synchronizeWithFileSystem();
79 | }
80 | }
81 | }
82 |
83 | // step 3: install and activate packages based on install sequence from config
84 | if (count($addon->getProperty('setup')['installSequence']) > 0 && count($errors) == 0) {
85 | foreach ($addon->getProperty('setup')['installSequence'] as $id) {
86 |
87 | $package = rex_package::get($id);
88 | if ($package instanceof rex_null_package) {
89 | $errors[] = $addon->i18n('package_not_exists', $id);
90 | break;
91 | }
92 |
93 | $manager = rex_package_manager::factory($package);
94 |
95 | try {
96 | $manager->install();
97 | } catch (rex_functional_exception $e) {
98 | rex_logger::logException($e);
99 | $errors[] = $addon->i18n('package_failed_to_install', $id);
100 | break;
101 | }
102 |
103 | try {
104 | $manager->activate();
105 | } catch (rex_functional_exception $e) {
106 | rex_logger::logException($e);
107 | $errors[] = $addon->i18n('package_failed_to_activate', $id);
108 | break;
109 | }
110 | }
111 | }
112 |
113 | // step 4: import database
114 | if (count($addon->getProperty('setup')['dbimport']) > 0 && count($errors) == 0) {
115 | foreach ($addon->getProperty('setup')['dbimport'] as $import) {
116 | $file = rex_backup::getDir() . '/' . $import;
117 | $success = rex_backup::importDb($file);
118 | if (!$success['state']) {
119 | $errors[] = $addon->i18n('package_failed_to_import', $import);
120 | }
121 | }
122 | }
123 |
124 | // step 5: import files
125 | if (count($addon->getProperty('setup')['fileimport']) > 0 && count($errors) == 0) {
126 | foreach ($addon->getProperty('setup')['fileimport'] as $import) {
127 | $file = rex_backup::getDir() . '/' . $import;
128 | $success = rex_backup::importFiles($file);
129 | if (!$success['state']) {
130 | $errors[] = $addon->i18n('package_failed_to_import', $import);
131 | }
132 | }
133 | }
134 |
135 | return $errors;
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/package.setup.yml:
--------------------------------------------------------------------------------
1 | # additional requires (non-system packages)
2 | requires:
3 | packages:
4 | cke5: '^5.2.0'
5 | mform: '^7.2.1'
6 | mblock: '^3.4.7'
7 | theme_lock: '>=1.0.0'
8 | navigation_array: '>1.0'
9 | uikit_collection: '^3.1.1'
10 | adminer: '^1.9.2'
11 | # setup config
12 | # hint: inspect link values inside of REDAXO installer to find out fileIds (numbers) for new packages!
13 | setup:
14 | packages:
15 | cke5: 4271 # 5.2.0
16 | mform: 4633 # 7.2.4
17 | mblock: 4499 # 3.4.4
18 | theme_lock: 4046 # 1.0.0
19 | uikit_collection: 4675 # 3.1.1
20 | adminer: 3916
21 | navigation_array: 4534
22 | installSequence:
23 | - backup
24 | - structure/content
25 | - navigation_array
26 | - uikit_collection
27 | - theme_lock
28 | - cke5
29 | - mform
30 | - mblock
31 | dbimport:
32 | - redaxo_uikit_demo.sql
33 | fileimport:
34 | - redaxo_uikit_demo.tar.gz
35 |
--------------------------------------------------------------------------------
/package.yml:
--------------------------------------------------------------------------------
1 | package: demo_uikit3
2 | version: 3.0.0-dev
3 | author: 'Friends Of REDAXO'
4 | supportpage: 'https://github.com/FriendsOfREDAXO/demo_uikit3'
5 | page:
6 | title: 'translate:demo_uikit3_title'
7 | perm: 'demo_uikit3[]'
8 | pjax: true
9 | subpages:
10 | install: { title: 'translate:title' }
11 | requires:
12 | packages:
13 | # Important: require system addOns only! Find other addOns required in `package.setup.yml`.
14 | # This is because we want the demo to be installed in first place without the need to install
15 | # any other addOns beforehand. The demo comes with a setup feature which checks the
16 | # `package.setup.yml` file where all additional addOns are defined. It will download and
17 | # install these addOns seamlessly for you once you’ve clicked the setup button.
18 | # After setup, both package files get merged. Be sure to not publish a merged `package.yml`
19 | # with your new release. Always use the original un-merged file!
20 | backup: '^2.9.0'
21 | structure/content: '^2.15.0'
22 | redaxo: ^5.15.0
23 | php:
24 | version: '>=8.1, <9'
25 | console_commands:
26 | 'demo_uikit3:install': rex_command_demo_uikit3_install
27 |
--------------------------------------------------------------------------------
/pages/index.php:
--------------------------------------------------------------------------------
1 | i18n('title'));
4 | rex_be_controller::includeCurrentPageSubPath();
5 |
--------------------------------------------------------------------------------
/pages/install.php:
--------------------------------------------------------------------------------
1 | 0) {
12 | echo rex_view::error('
');
13 | } else {
14 | echo rex_view::success('';
78 | $credits .= '
';
91 |
92 | $fragment = new rex_fragment();
93 | $fragment->setVar('title', rex_i18n::msg('credits'), false);
94 | $fragment->setVar('body', $credits, false);
95 | echo $fragment->parse('core/page/section.php');
96 |
--------------------------------------------------------------------------------
/uninstall.php:
--------------------------------------------------------------------------------
1 | getProperty('setup');
9 | $backupPath = rex_addon::get('backup')->getDataPath();
10 |
11 | if (isset($setupconfig['dbimport']) && is_array($setupconfig['dbimport']) && count($setupconfig['dbimport']) > 0) {
12 | foreach ($setupconfig['dbimport'] as $import) {
13 | rex_file::delete($backupPath . $import);
14 | }
15 | }
16 |
17 | if (isset($setupconfig['fileimport']) && is_array($setupconfig['fileimport']) && count($setupconfig['fileimport']) > 0) {
18 | foreach ($setupconfig['fileimport'] as $import) {
19 | rex_file::delete($backupPath.$import);
20 | }
21 | }
22 |
23 | // update config
24 | // remove additional config from base config
25 | $config = array_diff_recursive(
26 | rex_file::getConfig($this->getPath('package.yml')),
27 | rex_file::getConfig($this->getPath('package.setup.yml'))
28 | );
29 |
30 | rex_file::putConfig($this->getPath('package.yml'), $config);
31 |
32 |
33 | // Computes the difference of two arrays recursively
34 | // https://gist.github.com/t3chnik/6b3b14d3859d810c02f4
35 | function array_diff_recursive($aArray1, $aArray2)
36 | {
37 | $aReturn = array();
38 | foreach ($aArray1 as $mKey => $mValue) {
39 | if (array_key_exists($mKey, $aArray2)) {
40 | if (is_array($mValue)) {
41 | $aRecursiveDiff = array_diff_recursive($mValue, $aArray2[$mKey]);
42 | if (count($aRecursiveDiff)) {
43 | $aReturn[$mKey] = $aRecursiveDiff;
44 | }
45 | } else {
46 | if ($mValue != $aArray2[$mKey]) {
47 | $aReturn[$mKey] = $mValue;
48 | }
49 | }
50 | } else {
51 | $aReturn[$mKey] = $mValue;
52 | }
53 | }
54 | return $aReturn;
55 | }
56 |
--------------------------------------------------------------------------------