diff --git a/README.md b/README.md index 2420768..5cc0099 100644 --- a/README.md +++ b/README.md @@ -22,17 +22,17 @@ Features * Ausgabe einer Breadcrumb Navigation möglich * Codebeispiele in der Hilfe des Addons +Codebeispiele +------------- + +Die Codebeispiele sind direkt im Addon als Menüpunkt aufrufbar. Alternativ im `docs` Ordner des Addons. + Hinweise -------- * Getestet mit REDAXO 4.6 * AddOn-Ordner lautet: `navigation_factory` -Codebeispiele -------------- - -siehe [CODEEXAMPLES.md](CODEEXAMPLES.md) - Changelog --------- diff --git a/classes/class.rex_navigation_factory_utils.inc.php b/classes/class.rex_navigation_factory_utils.inc.php index e4e1cfd..5a3ed45 100644 --- a/classes/class.rex_navigation_factory_utils.inc.php +++ b/classes/class.rex_navigation_factory_utils.inc.php @@ -151,15 +151,21 @@ public static function convertVarType($originalValue, $newValue) { } } - public static function getHtmlFromMDFile($mdFile, $search = array(), $replace = array(), $setBreaksEnabled = true) { + public static function getHtmlFromMDFile($mdFile, $search = array(), $replace = array(), $setBreaksEnabled = true, $useDocsDir = false) { global $REX; $curLocale = strtolower($REX['LANG']); + if ($useDocsDir) { + $rootPath = $REX['INCLUDE_PATH'] . '/addons/navigation_factory/docs/'; + } else { + $rootPath = $REX['INCLUDE_PATH'] . '/addons/navigation_factory/'; + } + if ($curLocale == 'de_de') { - $file = $REX['INCLUDE_PATH'] . '/addons/navigation_factory/' . $mdFile; + $file = $rootPath . $mdFile; } else { - $file = $REX['INCLUDE_PATH'] . '/addons/navigation_factory/lang/' . $curLocale . '/' . $mdFile; + $file = $rootPath . 'lang/' . $curLocale . '/' . $mdFile; } if (file_exists($file)) { diff --git a/config.inc.php b/config.inc.php index 0933c93..3a018b9 100644 --- a/config.inc.php +++ b/config.inc.php @@ -33,7 +33,8 @@ if ($REX['REDAXO']) { // add subpages $REX['ADDON']['navigation_factory']['SUBPAGES'] = array( - array('', $I18N->msg('navigation_factory_help')) + array('', $I18N->msg('navigation_factory_codeexamples')), + array('help', $I18N->msg('navigation_factory_help')) ); // add css/js files to page header diff --git a/docs/rex_breadcrumb_nav.md b/docs/rex_breadcrumb_nav.md new file mode 100644 index 0000000..0018aed --- /dev/null +++ b/docs/rex_breadcrumb_nav.md @@ -0,0 +1,15 @@ +Breadcrumb Navigation +===================== + +Ausgabe einer Breadcrumb Navigation +----------------------------------- + +```php +$breadcrumbNav = new rex_breadcrumb_nav(); + +$nav->setCssClass("breadcrumb"); // ul klasse: "breadcrumb" +$nav->setOlList(false); // es wird eine ul liste ausgegeben +$nav->setStartArticleName(""); // ausgabe mit font-awesome icon + +echo $breadcrumbNav->getNavigation(); +``` diff --git a/docs/rex_lang_nav.md b/docs/rex_lang_nav.md new file mode 100644 index 0000000..4e07a4e --- /dev/null +++ b/docs/rex_lang_nav.md @@ -0,0 +1,19 @@ +Sprachnavigation +================ + +Ausgabe einer einfachen Sprachnavigation +---------------------------------------- + +```php +$langNav = new rex_lang_nav(); + +$nav->setUlId("lang-nav"); // ul id: "lang-nav" +$nav->setUlClass("my-lang-class"); // ul class: "my-lang-class" +$nav->setselectedClass("current"); // li klasse für selektierten menüpunkt: "current" +$nav->setshowLiIds(true); // zusätzliche, eindeutige li id's werden ausgegeben +$nav->sethideLiIfOfflineArticle(false); // bei einem offline artikel li nicht verstecken sondern auf startartikel der website verlinken +$nav->setuseLangCodeAsLinkText(true); // langcode anstelle sprachname als linktext ausgeben +$nav->setupperCaseLinkText(true); // linktext in großbuchstaben anzeigen + +echo $langNav->getNavigation(); +``` diff --git a/CODEEXAMPLES.md b/docs/rex_nav.md similarity index 56% rename from CODEEXAMPLES.md rename to docs/rex_nav.md index 0369441..14db05e 100644 --- a/CODEEXAMPLES.md +++ b/docs/rex_nav.md @@ -1,5 +1,5 @@ -Codebeispiele -============= +Hauptnavigation +=============== Ausgabe des 1. Navigationslevels -------------------------------- @@ -39,8 +39,8 @@ echo $nav->getNavigation(); ``` -Alle Methoden und Paramater der rex_nav Klasse ----------------------------------------------- +Alle möglichen Methoden und Paramater der rex_nav Klasse +-------------------------------------------------------- ```php $nav = new rex_nav(); @@ -48,8 +48,8 @@ $nav = new rex_nav(); $nav->setStartCategory(42); $nav->setLevelDepth(2); // 2 level tief $nav->setShowAll(true); // alle unterebenen werden angezeigt -$nav->setIgnoreOfflines(true); // offline artikel werden nicht angezeigt -$nav->setHideWebsiteStartArticle(false); // startartikel der website wird nicht ausgeblendet +$nav->setIgnoreOfflines(false); // offline artikel werden angezeigt +$nav->setHideWebsiteStartArticle(true); // startartikel der website wird ausgeblendet $nav->setHideIds(array(42, 108)); // kategorien mit ids 42 und 108 werden ausgeblendet $nav->setSelectedClass("current"); // li klasse für selektierte menüpunkte: "current" $nav->setActiveClass("current active"); // li klasse für gerade aktiven menüpunkt: "current active" @@ -60,43 +60,15 @@ $nav->setLiIdFromMetaField("cat_css_id"); // li id aus metainfo feld: "cat_css_i $nav->setLiClassFromMetaField("cat_css_class"); // li klasse aus metainfo feld: "cat_css_class" $nav->setLiIdFromCategoryId(array(42 => "foo", 108 => "bar")); // li id anhand artikel id $nav->setLiClassFromCategoryId(array(42 => "the-class")); // li klasse anhand artikel id -$nav->setCustomLink(function($cat, $depth) { // php funktion die den link zurückgibt (hier als beispiel: erste ebene ohne verlinkung) +$nav->setCustomLink(function($cat, $depth) { // gesamter link anhand php funktion if ($depth == 1) { + // hier als beispiel: erste ebene ohne verlinkung return htmlspecialchars($cat->getName()); } else { + // alle anderen ebenen werden normal verlinkt return '' . htmlspecialchars($cat->getName()) . ''; } }); echo $nav->getNavigation(); ``` - -Ausgabe einer einfachen Sprachnavigation ----------------------------------------- - -```php -$langNav = new rex_lang_nav(); - -$nav->setUlId("lang-nav"); // ul id: "lang-nav" -$nav->setUlClass("my-lang-class"); // ul class: "my-lang-class" -$nav->setselectedClass("current"); // li klasse für selektierten menüpunkt: "current" -$nav->setshowLiIds(true); // zusätzliche, eindeutige li id's werden ausgegeben -$nav->sethideLiIfOfflineArticle(false); // bei einem offline artikel li nicht verstecken sondern auf startartikel der website verlinken -$nav->setuseLangCodeAsLinkText(true); // langcode anstelle sprachname als linktext ausgeben -$nav->setupperCaseLinkText(true); // linktext in großbuchstaben anzeigen - -echo $langNav->getNavigation(); -``` - -Ausgabe einer Breadcrumb Navigation ------------------------------------ - -```php -$breadcrumbNav = new rex_breadcrumb_nav(); - -$nav->setCssClass("breadcrumb"); // ul klasse: "breadcrumb" -$nav->setOlList(false); // es wird eine ul liste ausgegeben -$nav->setStartArticleName(""); // ausgabe mit font-awesome icon - -echo $breadcrumbNav->getNavigation(); -``` diff --git a/lang/de_de.lang b/lang/de_de.lang index 2671a32..57c6cc0 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -1,31 +1,18 @@ navigation_factory_addon_help = -navigation_factory_start = Start -navigation_factory_settings = Einstellungen -navigation_factory_setup = Setup +navigation_factory_codeexamples = Codebeispiele navigation_factory_help = Hilfe -navigation_factory_start_title = Navigation Factory für REDAXO -navigation_factory_start_example_link_internal = Interner Beispiellink -navigation_factory_start_example_link_external = Externer Beispiellink +navigation_factory_codeexamples_chapter_rex_nav = Hauptnavigation +navigation_factory_codeexamples_chapter_rex_lang_nav = Sprachnavigation +navigation_factory_codeexamples_chapter_rex_breadcrumb_nav = Breadcrumb Navigation navigation_factory_help_chapter_readme = Readme navigation_factory_help_chapter_changelog = Changelog -navigation_factory_help_chapter_codeexamples = Codebeispiele navigation_factory_help_chapter_license = Lizenz -navigation_factory_setup_step1 = Schritt 1: Mach dies -navigation_factory_setup_step1_desc1 = Beschreibungstext 1 -navigation_factory_setup_step2 = Schritt 2: Mach das -navigation_factory_setup_step2_desc1 = Beschreibungstext 2 -navigation_factory_setup_step3 = Schritt 3: Mach jenes -navigation_factory_setup_step3_desc1 = Beschreibungstext 3 - navigation_factory_config_ok = Einstellungen wurden aktualisiert. navigation_factory_config_error = Einstellungen konnte nicht gespeichert werden! navigation_factory_install_make_dir = Der Ordner "/redaxo/include/{0}/" kann nicht angelegt werden, überprüfen Sie die Schreibrechte oder legen Sie den Ordner von Hand an und geben ihm Schreibrechte. navigation_factory_install_perm_dir = Der Ordner "/redaxo/include/{0}/" benötigt Schreibrechte! -navigation_factory_settings_foo = Foo -navigation_factory_settings_foo2 = Foo2 -navigation_factory_settings_save = Einstellungen speichern diff --git a/pages/codeexamples.inc.php b/pages/codeexamples.inc.php new file mode 100644 index 0000000..30fab16 --- /dev/null +++ b/pages/codeexamples.inc.php @@ -0,0 +1,73 @@ + array($I18N->msg('navigation_factory_codeexamples_chapter_rex_nav'), 'pages/codeexamples/rex_nav.inc.php'), + 'rex_lang_nav' => array($I18N->msg('navigation_factory_codeexamples_chapter_rex_lang_nav'), 'pages/codeexamples/rex_lang_nav.inc.php'), + 'rex_breadcrumb_nav' => array($I18N->msg('navigation_factory_codeexamples_chapter_rex_breadcrumb_nav'), 'pages/codeexamples/rex_breadcrumb_nav.inc.php') +); + +// build chapter navigation +$chapternav = ''; + +foreach ($chapterpages as $chapterparam => $chapterprops) { + if ($chapterprops[0] != '') { + if ($chapter != $chapterparam) { + $chapternav .= ' | ' . $chapterprops[0] . ''; + } else { + $chapternav .= ' | ' . $chapterprops[0] . ''; + } + } +} +$chapternav = ltrim($chapternav, " | "); + +// build chapter output +$addonroot = $REX['INCLUDE_PATH']. '/addons/'.$mypage.'/'; +$source = $chapterpages[$chapter][1]; + +// output +echo ' +