WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#101 05.09.2017 14:29:00

webbird
Administrator

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

Na wie sieht's denn aus?


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#102 05.09.2017 23: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

Beitrag geändert von stefanek (06.09.2017 09:44:48)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Liked by:

webbird

#103 06.09.2017 10:17:44

stefanek
Developer

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

webbird schrieb:
sillar schrieb:

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


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#104 06.09.2017 10: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.

Beitrag geändert von webbird (06.09.2017 10:20:02)


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

Liked by:

thanks

#105 06.09.2017 10: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

Beitrag geändert von webbird (06.09.2017 17:20:45)


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

Liked by:

stefanek

#106 06.09.2017 10: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


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#107 06.09.2017 11:36:51

stefanek
Developer

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

webbird schrieb:

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


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#108 06.09.2017 12: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

Beitrag geändert von florian (06.09.2017 12:52:37)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#109 06.09.2017 13: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


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#110 06.09.2017 15:32:53

webbird
Administrator

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

Zu den Hostern: Wieder das Tabellen-Problem?


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#111 06.09.2017 15: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.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#112 06.09.2017 16:32:40

webbird
Administrator

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

florian schrieb:

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.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#113 06.09.2017 16:33:26

webbird
Administrator

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

florian schrieb:

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.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#114 06.09.2017 16: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...


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#115 06.09.2017 16: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


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#116 06.09.2017 16: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.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#117 06.09.2017 17: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.

Beitrag geändert von webbird (06.09.2017 17:22:58)


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#118 06.09.2017 17: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.

Beitrag geändert von webbird (08.09.2017 12:37:31)


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#119 06.09.2017 17:22:15

webbird
Administrator

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

stefanek schrieb:

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


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#120 06.09.2017 17: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


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#121 06.09.2017 18:41:56

webbird
Administrator

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

Okay, mach ich morgen.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#122 06.09.2017 22:44:52

stefanek
Developer

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

webbird schrieb:

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';
}

Beitrag geändert von stefanek (07.09.2017 09:57:14)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#123 07.09.2017 10: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`;


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#124 07.09.2017 10:18:08

florian
Administrator

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

perfekt, danke


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#125 08.09.2017 12: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.

Beitrag geändert von webbird (08.09.2017 12:36:49)


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

Fußzeile des Forums

up