WBCE Home | WBCE Hilfe | WBCE Addon Repository | Impressum | Datenschutz

WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#101 05.09.2017 15:29:00

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Na wie sieht's denn aus?


Some people just need a high-five. In the face. With a chair.

Offline

#102 06.09.2017 00:05:41

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

Ich habe den Thread nicht verfolgt, weswegen es sein kann, dass meine Ausführungen zu früh kommen.

Das Modul an sich sieht vielversprechend aus.

Es gibt noch einige Ungereimtheiten.

Die save.php fragt nach der falschen Methode wie es aussieht.

In der public static function save($section_id) selbst fehlt das $js_back

Edit: Habe heute morgen nochmal einen Blick drauf geworfen, alles gut hier.

Vorschlag:

$js_back = ADMIN_URL.'/pages/modify.php?page_id='.$page_id.'#'.SEC_ANCHOR.$section_id;

(Der SecAnchor ist praktisch, auch an anderen Stellen; habe ich das Modul als dritte, vierte... Section auf der Seite muss ich immer wieder zurück zum Modul runter scrollen sobald ich etwas geklickt habe).

Ansonsten recht interessant und interessant programmiert.

Christian

Last edited by stefanek (06.09.2017 10:44:48)


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

Liked by:

webbird

#103 06.09.2017 11:17:44

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

webbird wrote:
sillar wrote:

Das Backend ist so wie in #91 abgebildet, nach dem Sichern bekomme ich jedoch eine weisse Seite und im Frontend passiert auch nix.

Das mit der weißen Seite liegt daran, dass sich BC und WBCE an der Stelle unterschiedlich verhalten und ich noch eine Lösung suchen muß, die für beide funktioniert.

Wenn der Marker nicht im FE erscheint, könnte es an der Datenbank liegen.

Das könnte auch daran liegen, dass im verwendeten Template ganz unten vorm schließenden </body> Tag


<?php register_frontend_modfiles_body('js'); ?>


fehlt.

Christian


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

#104 06.09.2017 11:18:25

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Das erste Hybrid-Modul für WBCE, BC1 _und_ BC2. big_smile

Edit: Sorry, vergessen, danke für den Tipp mit dem $js_back, das baue ich noch ein.

Last edited by webbird (06.09.2017 11:20:02)


Some people just need a high-five. In the face. With a chair.

Offline

Liked by:

thanks

#105 06.09.2017 11:39:28

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Anbei v0.6 mit der von Stefanek vorgeschlagenen Änderung.

Edit: Anhang entfernt, neue Version verfügbar

Last edited by webbird (06.09.2017 18:20:45)


Some people just need a high-five. In the face. With a chair.

Offline

Liked by:

stefanek

#106 06.09.2017 11:59:21

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

Ich werde es testen.
Bei mir liegt noch einiges im Argen (die $lm_settings kommen nicht im FE an), kann aber an meinem privaten Fork liegen.
Heilige OSS big_smile


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

#107 06.09.2017 12:36:51

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

webbird wrote:

Das erste Hybrid-Modul für WBCE, BC1 _und_ BC2. big_smile

Edit: Sorry, vergessen, danke für den Tipp mit dem $js_back, das baue ich noch ein.

Also ich hätte dazu noch einen Tipp.
Da Du vor der Klasse die function.inc.php sowieso einbeziehst, könntest Du auch eine kleine Funktion mit reinnehmen, die die Redundanz mit dem TABLE_PREFIX reduziert, z.B. so:

function lm_db_table() {	
		global $database;
		if(defined('CAT_VERSION')) {
				$database = CAT_Helper_DB::getInstance();
				if(!defined('TABLE_PREFIX')) define('TABLE_PREFIX',$database::prefix());
		}
		return TABLE_PREFIX.'mod_leafletmaps';
}

und dann im code statt z.B.

        public static function settings($section_id) {
            global $database;
            $query = 'SELECT * FROM `%smod_leafletmaps_settings` WHERE `section_id`=%d';
            if(defined('CAT_VERSION')) {
                $database = CAT_Helper_DB::getInstance();
                if(!defined('TABLE_PREFIX')) define('TABLE_PREFIX',$database::prefix());
            }
            $sth   = $database->query(sprintf(
                $query, TABLE_PREFIX, $section_id
            ));
            return ( !defined('CAT_VERSION') ? $sth->fetchRow() : $sth->fetch() );
        }

so:

        public static function settings($section_id) {
            global $database;
            $query = 'SELECT * FROM `%s_settings` WHERE `section_id`=%d';
            $sth   = $database->query(sprintf(
                $query, lm_db_table(), $section_id
            ));
            return ( !defined('CAT_VERSION') ? $sth->fetchRow() : $sth->fetch() );
        }

Ich will Dir da nicht reinreden, aber es wäre übersichtlicher und immerhin 7x nur um den Prefix zu setzen. :-)

Gruß,
Christian


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

#108 06.09.2017 13:49:52

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

@webbird

Installation der 0.6 funktioniert leider bei bestimmten Hostern immer noch nicht.
Also genauer, Installation funktioniert schon, aber im BE erscheint dann auf einer Seite mit einem LeafletMaps-Abschnitt

auf Alfahosting-Webspace

Fatal error: Uncaught Error: Call to a member function fetchRow() on null in /.../modules/LeafletMaps/inc/class.LeafletMaps.php:372 Stack trace: #0 /.../modules/LeafletMaps/inc/class.LeafletMaps.php(437): LeafletMaps::fetchall(NULL) #1 /.../modules/LeafletMaps/inc/class.LeafletMaps.php(125): LeafletMaps::markers('10', true) #2 /.../modules/LeafletMaps/modify.php(28): LeafletMaps::modify('10') #3 /.../admin/pages/modify.php(181): require('/var/www/web913...') #4 {main} thrown in /.../modules/LeafletMaps/inc/class.LeafletMaps.php on line 372

auf bplaced-webspace

Fatal error: Call to a member function fetchRow() on null in /.../modules/LeafletMaps/inc/class.LeafletMaps.php on line 372

Keine Probleme bei Goneo und All-Inkl . thumb_up

Auf die Gefahr hin, mich unbeliebt zu machen: Dass im Template <?php register_frontend_modfiles_body('js'); ?> zwingend vorhanden sein muss, damit die Ausgabe funktioniert, ist etwas ungewohnt und nicht zwangsläufig in allen Templates gegeben. Ein entsprechender Hinweis sollte daher eventuell im Backend angezeigt werden.

Getestet mit WBCE CMS 1.2 / 1.3 und PHP 5.6 / 7.0.22

Last edited by florian (06.09.2017 13:52:37)

Offline

#109 06.09.2017 14:15:31

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

Da fällt mir noch ein, Bianka, vielleicht reicht es für BC einfach die Konstante zu setzen:

if(!defined('TABLE_PREFIX')){
		if(defined('CAT_VERSION')) {
				$database = CAT_Helper_DB::getInstance();
				define('TABLE_PREFIX', $database::prefix());
		}			
}

Dann könnte der Rest des Codes einfach so bleiben.
Ich weiß allerdings nicht, ob das $database Objekt vorhanden ist, wenn Du es in die functions.inc.php so reinschriebst.

Gruß,
Christian


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

#110 06.09.2017 16:32:53

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Zu den Hostern: Wieder das Tabellen-Problem?


Some people just need a high-five. In the face. With a chair.

Offline

#111 06.09.2017 16:36:28

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Ja. ...mod_leafletmaps_iconsets und ...mod_leafletmaps_settings sind da, alle anderen nicht.

Offline

#112 06.09.2017 17:32:40

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

florian wrote:

Dass im Template <?php register_frontend_modfiles_body('js'); ?> zwingend vorhanden sein muss, damit die Ausgabe funktioniert, ist etwas ungewohnt und nicht zwangsläufig in allen Templates gegeben. Ein entsprechender Hinweis sollte daher eventuell im Backend angezeigt werden.

Echt jetzt? Das ist aber ziemlich doof. Viele jQuery Plugins und auch andere Js funktionieren nur, wenn sie NACH dem Inhalt der Seite geladen werden. Normalerweise sollte auch jQuery selbst am Ende geladen werden, um das Laden der Seite nicht zu verlangsamen. Das gilt eigentlich für alle größeren JavaScripts.

Einen Hinweis unterzubringen ist kein Problem, Ihr solltet Euch aber mal grundsätzlich Gedanken darüber machen, ob es wirklich angebracht ist, Templates ohne body-Kram zu bauen.


Some people just need a high-five. In the face. With a chair.

Offline

#113 06.09.2017 17:33:26

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

florian wrote:

Ja. ...mod_leafletmaps_iconsets und ...mod_leafletmaps_settings sind da, alle anderen nicht.

Da ich das Problem nicht reproduzieren kann, wäre mir geholfen, wenn ich mich mal mit so einer Datenbank verbinden könnte.


Some people just need a high-five. In the face. With a chair.

Offline

#114 06.09.2017 17:43:57

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Echt jetzt? Das ist aber ziemlich doof. Viele jQuery Plugins und auch andere Js funktionieren nur, wenn sie NACH dem Inhalt der Seite geladen werden. Normalerweise sollte auch jQuery selbst am Ende geladen werden, um das Laden der Seite nicht zu verlangsamen. Das gilt eigentlich für alle größeren JavaScripts.

Ja, das ist richtig, dahin gehend müssten wir/ich dann evtl. mal alle/meine Templates reviewen. Bislang bin ich ohne ausgekommen, insofern kann man das natürlich auch unter Nachlässigkeit meinerseits verbuchen.

Ihr solltet Euch aber mal grundsätzlich Gedanken darüber machen, ob es wirklich angebracht ist, Templates ohne body-Kram zu bauen.

Haben wir - bzw. Norbert -, es gibt ab WBCE CMS 1.3 die Möglichkeit, über einfache Kommentare im Backend und Frontend das zwischen den Kommentaren stehende an bestimmte Stellen im generierten Code zu verschieben.
<!--(MOVE) JS HEAD BTM- -->
...code hier...
<!--(END)-->
Genaueres dazu werden wir noch veröffentlichen...

Offline

#115 06.09.2017 17:48:19

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Ich will jetzt keine unnötige Debatte vom Zaun brechen, aber aus leidvoller jQueryAdmin-Erfahrung möchte ich anmerken, dass nachträgliches Verschieben immer Mist ist.

Ansonsten kann gern mal jemand versuchen, den Code der frontend.js und _body.js zusammenzufassen und zu schauen, ob das funktioniert. Ich habe dazu derzeit leider keine ... na seien wir ehrlich, Lust. devil


Some people just need a high-five. In the face. With a chair.

Offline

#116 06.09.2017 17:52:10

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Ist ja in Ordnung und nicht nötig. Man muss es ja nur wissen, und die 1 Zeile Code tut niemandem weh.

Offline

#117 06.09.2017 18:16:54

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

So, ich glaube ich weiß, woran das Problem mit den Hostern hängt. In der DB sind mehrere WBCE-Instanzen installiert, mit unterschiedlichen Präfix. Dadurch passiert es, dass so eine Beziehung wie diese hier

    CONSTRAINT `FK_mod_leafletmaps_markers_mod_leafletmaps_icons` FOREIGN KEY (`icon_id`) REFERENCES `cat_mod_leafletmaps_icons` (`icon_id`)

mehrfach vorkommt, was aber nicht zulässig ist. Der Name muß eindeutig sein, und zwar datenbankweit!

Demnach muß ich in meinen FKs irgendwo das Präfix einbeziehen, das sollte das Problem lösen.

Last edited by webbird (06.09.2017 18:22:58)


Some people just need a high-five. In the face. With a chair.

Offline

#118 06.09.2017 18:20:13

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

v0.7. cool

Ohne die von Stefanek vorgeschlagene Änderung, die ist mir zu heikel, um sie "mal eben" einzubauen. Mach ich mit der nächsten größeren Änderung. Hier hat sich ja nur die install.php geändert.

Edit: Anhang entfernt, neue Version verfügbar.

Last edited by webbird (08.09.2017 13:37:31)


Some people just need a high-five. In the face. With a chair.

Offline

#119 06.09.2017 18:22:15

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

stefanek wrote:

Da fällt mir noch ein, Bianka, vielleicht reicht es für BC einfach die Konstante zu setzen

Das funktioniert in BC so leider nicht. angel


Some people just need a high-five. In the face. With a chair.

Offline

#120 06.09.2017 18:45:28

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

v 0.7 wirft zumindest schon mal keine Fehler mehr, allerdings werden Marker nicht gespeichert... Testen 0903 unter bekannter Adresse

Offline

#121 06.09.2017 19:41:56

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Okay, mach ich morgen.


Some people just need a high-five. In the face. With a chair.

Offline

#122 06.09.2017 23:44:52

stefanek
Developer

Re: LeafletMaps (für Landkarten a la Google Maps)

webbird wrote:

v0.7. cool

Ohne die von Stefanek vorgeschlagene Änderung, die ist mir zu heikel, um sie "mal eben" einzubauen. Mach ich mit der nächsten größeren Änderung.

OK.
Das waren übrigens nur Vorschläge. Es geht sicher noch anders.
Der Code funktioniert ja gut so wie Du es hast. Ich stehe irgendwie einfach auf weniger Code, wenn es sich einfach arrangieren lässt.

Übrigens, die Language Funktion finde ich super. Spartanisch, aber bei solchen Modulen wirklich ausreichend.

Christian

P.S./Edit
Diese Funktion ist etwas besser als die vorige:

function lm_db_table() {
	if(!defined('TABLE_PREFIX')){
		if(defined('CAT_VERSION')) {
			$database = CAT_Helper_DB::getInstance();
			define('TABLE_PREFIX', $database::prefix());
		}			
	}	
	return TABLE_PREFIX.'mod_leafletmaps';
}

Last edited by stefanek (07.09.2017 10:57:14)


For any activity, creative or business oriented alike, always ask yourself what the ROI of your contribution will be?
And by the way: Appreciation is a valid form of exchange for help.

Online

#123 07.09.2017 11:06:46

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Die Language-Funktion ist eine Lite-Variante der bei BC bzw. in der wblib enthaltenen.

Das Problem mit den Markern habe ich gefunden, da fehlt in der Tabelle 'markers' eine Spalte. Für einen schnellen Fix:

ALTER TABLE <Präfix>mod_leafletmaps_markers ADD COLUM `glyph` VARCHAR(50) NULL DEFAULT NULL AFTER `description`;


Some people just need a high-five. In the face. With a chair.

Offline

#124 07.09.2017 11:18:08

florian
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

perfekt, danke

Offline

#125 08.09.2017 13:36:23

webbird
Administrator

Re: LeafletMaps (für Landkarten a la Google Maps)

Anbei v0.8 mit optimiertem Datenbank-Code und Korrektur der fehlenden Spalte in der markers-Tabelle. Wenn alles funktioniert, wird daraus eine Version 1.0. smile

Hier mal eine Info, wie man ein neues Iconset hinzufügt (da es dafür ja keine Schnittstelle gibt):

In der Datenbank gibt es eine Tabelle *iconsets, in der die notwendigen Informationen hinterlegt werden müssen. Hier fügt Ihr also eine neue Zeile hinzu. Zudem müßt Ihr Informationen zu Breite und Höhe der Icon-Images sowie des Schatten-Images hinterlegen. Es ist also notwendig, dass alle Icons in Eurem Iconset die gleichen Maße haben.

Die Einstellungen im Einzelnen:

class_id - wird automatisch vergeben, also frei lassen
setName - der Name des Iconsets
baseUrl - die Basis-URL der Icons, könnt Ihr bei den zwei vorhandenen abschauen; WB_URL wird automatisch davor gesetzt
shadowUrl - Dateiname der Grafik mit dem Schatten-Image
iconWidth - Breite des Markers in Pixel
iconHeight - Höhe des Markers
iconAnchorLeft - linker Ankerpunkt des Markers, meistens ist das die Mitte (also Iconbreite / 2 und dann ggfs. runden)
iconAnchorBottom - unterer Ankerpunkt des Markers, bei den tropfenförmigen habe ich immer Höhe - 1 genommen
shadowWidth - Breite des Schatten-Images
shadowHeight - Höhe des Schatten-Images
shadowAnchorLeft - linker Ankerpunkt des Schatten-Images
shadowAnchorBottom - unterer Ankerpunkt des Schatten-Images
popupAnchorLeft - linker Ankerpunkt des Info-Popups
popupAnchorBottom - unterer Ankerpunkt des Info-Popups
glyphAnchorLeft - linker Ankerpunkt des Glyphs
glyphAnchorBottom - unterer Ankerpunkt des Glyphs
glyphColor - Textfarbe des Glyhps

Anmerkung: Natürlich wäre es möglich, Breite und Höhe der Images direkt aus dem Image auszulesen, sie einmal in der DB zu hinterlegen ist aber performanter, und die Positionen der Ankerpunkte muß man sowieso angeben, weil es ja auch Icons gibt, die nicht umgekehrt tropfenförmig sind.

Last edited by webbird (08.09.2017 13:36:49)


Some people just need a high-five. In the face. With a chair.

Offline

Board footer

Powered by FluxBB

up