WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Na wie sieht's denn aus?
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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
webbird
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
Das erste Hybrid-Modul für WBCE, BC1 _und_ BC2.
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
thanks
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
stefanek
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
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
Das erste Hybrid-Modul für WBCE, BC1 _und_ BC2.
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
@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 .
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
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
Zu den Hostern: Wieder das Tabellen-Problem?
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Ja. ...mod_leafletmaps_iconsets und ...mod_leafletmaps_settings sind da, alle anderen nicht.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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
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.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
v0.7.
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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
Okay, mach ich morgen.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
v0.7.
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
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
perfekt, danke
Code allein macht nicht glücklich. Jetzt spenden!
Offline
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.
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. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline