WBCE CMS – Way Better Content Editing.
You are not logged in.
Hallöle
Wenn ich im Frontend beim Template WBCEZon mir etwas in der Seitenmitte (der Länge nach) anschaue und die Seite über den Browser neu lade, bleibt die Seite mittig stehen. Das finde ich sehr gut!
Bin ich im Backend und füge mehrere Abschnitte hinzu, wird die Seite auch lang. Beim Speichern springt die Seite leider nach oben zur Kopfzeile. Das ist sicherlich so gewollt, aber zum Bearbeiten wäre es angenehmer, die Seite bliebe auch mittig "Stehen".
Gibt es dafür Erklärungen?
Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.5, PHP 7.4.11
Offline
Neu Laden im Frontend ist technisch gesehen etwas anderes als auf Speichern klicken im Backend. Beim Anklicken des Speichern-Buttons wird das jeweilige Formular abgesendet. Vereinfacht ausgedrückt passiert da dann mehr im Hintergrund.
So gewollt ist das eigentlich nicht, ich finde das auch unpraktisch, aber es hat sich technisch so ergeben bzw. ist schon immer™ so.
Du kannst Dir zumindest bei WYSIWYG-Abschnitten damit behelfen, auf den "Speichern"-Button des in der Symbolleiste zu klicken anstatt auf den Speichern-Button unter dem Eingabefeld, dann wird die Änderung gespeichert, ohne dass die Seite im Backend neu aufgebaut wird.
Offline
Tja man kann nicht alles haben. Wer mal 100 PDFs in die DLG3 als letzten Abschnitt auf der Seite eingetragen hat, der wird allein vom Scrollen müde. Danke Florian!
Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.5, PHP 7.4.11
Offline
Man kann auf dass Mausrad auch klicken, dann steuert man die Scrollrichtung und das Tempo mit der Bewegung der Maus.
Offline
Man kann auf dass Mausrad auch klicken, dann steuert man die Scrollrichtung und das Tempo mit der Bewegung der Maus.
Vorausgesetzt der Browser ist entsprechend konfiguriert
Ich persönlich habe für so Fälle die Tastatursteuerung lieb gewonnen, ein beherztes "Strg + Ende" und schon ist man am Seitenende ...
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
...oder man schiebt vorübergehend den Abschnitt, an dem man am intensivsten arbeitet, bei "Abschnitte verwalten" ganz nach oben. Falls dadurch das Frontend-Layout sehr in Unordnung gerät, blendet man den betr. Abschnitt halt übers Ablaufdatum (=> gestern) vorübergehend aus.
Offline
Helft mir nach, wenn ich was nicht kapiert habe..
Es wird ja - zumindest in neueren Versionen - der Abschnittsanker mitübertragen.
An sich wäre es auch leicht möglich, beim Speichern die aktuelle Scrollposition zu speichern und dann wieder auszulesen. Ich hab mich da gestern etwas gespielt, es ist mir leider nicht gelungen, per JS zu scrollen (im Flat Theme), keine Ahnung, was es da hat.
@Chio:
"Es wird ja - zumindest in neueren Versionen - der Abschnittsanker mitübertragen."
Das Bedarf einer näheren Erläueterung zu meinem Verständnis, was wo wie?
Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.5, PHP 7.4.11
Offline
@Chio:
zumindest beim WYSIWIG-Module wird der Section-Anker ja direkt von der save.php als Sprungmarke mit zurückgegeben:
http://localhost/spielwiese/backend/pages/modify.php?page_id=2#wb_83
In Chrome basierten Browsern funktioniert der auch einwandfrei nur der Firefox (unter Linux) zickt da rum und springt irgendwohin.
Die meisten anderen Module bieten den Komfort anscheinend leider nicht.
@tomno:
Im HML-Quelltext hat jeder Abschnitt durch die Section-ID eine eindeutige Kennung welche man dazu verwenden kann, wenn sie in einer URL angegeben wird (siehe oben), diesen Abschnitt gezielt anzuspringen.
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
florian
Jepp, jetzt hab ichs wieder im Hirn,
Hier eine mögliche Lösung. Funktioniert nicht in jeder Situation, aber doch oft, und tut ansonsten nicht weh.
/templates/[das Theme]/jquery/theme.js
VOR dem letzten
});
[== JavaScript ==]
setTimeout(function(){ getscrolled(); }, 1000);
setscrolled();
Danach, also GANZ am Ende:
[== JavaScript ==]
function setscrolled() {
$( "form" ).submit(function( event ) {
var lastmodifyscroll = $(document).scrollTop();
localStorage.setItem('lastmodifyscroll', lastmodifyscroll);
var lastmodifypage = window.location.href.split('#')[0];
localStorage.setItem('lastmodifypage', lastmodifypage);
console.log('SET: ' + lastmodifyscroll + ', '+lastmodifypage);
});
}
function getscrolled() {
if (localStorage.getItem('lastmodifypage') === null) { return; }
url = window.location.href.split('#')[0];
var lastmodifypage = localStorage.getItem('lastmodifypage');
if (url != lastmodifypage) {
localStorage.removeItem('lastmodifypage');
console.log('REMOVE '+lastmodifypage);
return;
}
var lastmodifyscroll = parseInt(localStorage.getItem('lastmodifyscroll'), 10);
if (lastmodifyscroll > 0) {
console.log('GET: '+lastmodifyscroll + ', '+lastmodifypage);
window.scrollTo(0, lastmodifyscroll);
}
}
Die console.log(..) kann man natürlich entfernen.
EDIT: Da könnte man natürlich noch mehr draus machen: sessionStorage statt localStorage, jede Seite extra notieren, auf Links ausweiten, usw.
Last edited by boeseroeser (18.02.2020 21:04:51)
Hmm Chio,
mit den wysiwyg-Abschnitten klappt dein Code, die Seite bleibt beim Abschnitt. Aber das erreicht man ja auch, wenn "nur" auf die Diskette im CK-Editor-Menü geklickt wird.
Last edited by tomno399 (19.02.2020 13:25:18)
Online: WBCE 1.4.2, PHP 7.3.x; Lokal: XAMPP WBCE 1.4.5, PHP 7.4.11
Offline
Der Code sollte bei allen Modulen funktionieren, die ein form-submit haben. Bei Modulen wie Itemz oder Topcs (Auflistung) funktioniert er nicht, weil da normale Links sind.
Solche Module müsste man gesondert behandeln.
Aber: Da hängt dann ja mehr dran, da müsste man überhaupt eine History machen - und da wird man ins Schleudern kommen.
florian
Also, was man machen könnte:
1) https://webcloud.se/jQuery-Collapse/ runterladen
2) Zip lokal entpacken
3) Auf der Website in /templates/wbce_flat_theme/jquery/ ein Verzeichnis collapse anlegen
4) aus dem entpackten Collapse-Zip den Inhalt des Verzeichnisses /src nach /templates/wbce_flat_theme/jquery/collapse kopieren
5) /templates/wbce_flat_theme/templates/pages_modify.htt ändern zu
<!-- BEGIN main_block -->
<section id="page-modify">
<h2 class="page_titel"> {HEADING_MODIFY_PAGE}
<div class="headline-link">
<a href="{ADMIN_URL}/pages/settings.php?page_id={PAGE_IDKEY}"> <i class="fa fa-cog"></i> {TEXT_CHANGE_SETTINGS} </a> <span style="{DISPLAY_MANAGE_SECTIONS}"> | </span>
<a href="{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}" style="{DISPLAY_MANAGE_SECTIONS}"> <i class="fa fa-bars"></i> {TEXT_MANAGE_SECTIONS} </a>
</div>
</h2>
<h2 class="{DISPLAY_MODIFIED}">
{TEXT_CURRENT_PAGE}: <b>{PAGE_TITLE}</b> | PageID: <b>{PAGE_ID}</b> | <i>{LAST_MODIFIED}: {MODIFIED_BY} ({MODIFIED_BY_USERNAME}) - {MODIFIED_WHEN}</i>
</h2>
</section>
<div class="clearfix"></div>
<div id="collpapse" data-collapse="persist">
<!-- BEGIN section_module_block -->
<h3 class="section-info" id="{SECTION_ANCHOR}" >
<b>{TEXT_BLOCK}: </b>{BLOCK_NAME} <b>Modul: </b>{SECTION_MODULE} <b>ID: </b>{SECTION_ID} <b>Name: </b>{SECTION_NAME}
</h3>
<div>
<div class="pageModuleWrapper {SECTION_MODULE}">
{SECTION_MODIFY_OUTPUT}
</div>
</div>
<!-- END section_module_block -->
</div>
<script src="{THEME_URL}/jquery/collapse/jquery.collapse.js"></script>
<script src="{THEME_URL}/jquery/collapse/jquery.collapse_storage.js"></script>
<script src="{THEME_URL}/jquery/collapse/jquery.collapse_cookie_storage.js"></script>
<!-- END main_block -->
Das Ergebnis ist dann, dass erstmal alle Abschnitte zugeklappt sind und durch Anklicken der jeweiligen Dachzeile geöffent werden. Das Plugin merkt sich aber, welcher Abschnitt zuletzt geöffnet war, d.h. nach dem Neu laden der Seite ist dann der betr. Abschnitt weiterhin sichtbar. (Sonst wäre es ja auch witzlos.)
Offline
screamindan