ManDal Der Newsletterversand funktioniert nicht. Zu allererst werden keine Empfänger ermittelt.
Im nächsten Step bitte auch mal die Aktualisierungsanzeige für den Versand prüfen.
ManDal Der Newsletterversand funktioniert nicht. Zu allererst werden keine Empfänger ermittelt.
Im nächsten Step bitte auch mal die Aktualisierungsanzeige für den Versand prüfen.
Wäre jetzt in dem falle da ich Tabler.io verwende für ACP, NLI und LI praktisch, man verliert aber die Individualität mit den verschiedenen Templates.
Daher sollen die Daten direkt zum Template und nicht ausserhalb...
Kleiner Nachtrag, bei einem Update muss dann auch immer alles komplett durchgetestet werden was dann auch immer darauf zurückgreift.
Wäre es zumindest möglich, alle Verweise, Links etc. immer als vollständige URL auszuführen? Damit könnte dann jeder selbst entscheiden, wie er seine Struktur aufbaut - zumindest als Option wäre das sinnvoll.
Beispiel aus der common.js / common.uncompressed.js:
Alt:
MakeXMLRequest('start.php?action=getNotificationCount&sid='+currentSID, function(e)
Neu:
MakeXMLRequest('+selfurl+start.php?action=getNotificationCount&sid='+currentSID, function(e)
Ist eine variante nur schwirrt dann wieder Code rum der einem später das leben schwer macht...
Aber ja soll jeder selber wissen und das ACP ist ja noch nicht offiziell im OSS Repo integriert...
-> Evtl. baue ich den bereich noch um das er kompatibler wird mit Bootstrap3 oder schlicht einen Switch mit einbauen der prüft welches Template geladen ist.
Alles gut. Ich möchte eben beide Varianten nutzen, auch um das Tabler-Template kennenzulernen. Hab ja eh noch mit die reguläre 7.4er Version in Produktion. Wenn jemand ne ähnliche Konfiguration hat kann er es ja nutzen, ist ja kein muss ![]()
Gibt es dazu evtl. auch einen Demo-Zugang?
Bootstrap 5 bringt bei meinem /li-Template leider einiges durcheinander. Ich hab das jetzt temporär anders gelöst und eine neue Klasse in die serverlib/template.class.php integriert:
/* New Template Tabler.io*/
function TemplateProgressBar($params, &$smarty)
{
if ($params['max'] == 0) {
$valueWidth = 0;
$progresscolor = '';
} else {
$valueWidth = round($params['value'] / $params['max'] * 100);
if ($valueWidth > 90) {
$progresscolor = ' bg-danger';
} else if ($valueWidth > 70) {
$progresscolor = ' bg-warning';
} else {
$progresscolor = '';
}
}
return '<div class="progress"><div class="progress-bar'. $progresscolor .'" role="progressbar" style="width: '. $valueWidth .'%;" aria-valuenow="'. $valueWidth .'" aria-valuemin="0" aria-valuemax="100"></div></div>';
}
/* old Template */
function TemplateProgressBarOld($params, &$smarty)
{
$value = $params['value'];
$max = $params['max'];
$width = $params['width'];
$name = isset($params['name']) ? $params['name'] : mt_rand(0, 1000);
if($max == 0)
$valueWidth = 0;
else
$valueWidth = $width/$max * $value;
return(sprintf('<div class="progressBar" id="pb_%s" style="width:%dpx;"><div class="progressBarValue" id="pb_%s_value" style="width:%dpx;"></div></div>',
$name,
$width,
$name,
min($width-2, $valueWidth)));
}
Alles anzeigen
Zusätzlich muss man die Klasse noch registrieren:
// functions
$this->register_function('banner', 'TemplateBanner');
$this->register_function('lng', 'TemplateLang');
$this->register_function('comment', 'TemplateComment');
$this->register_function('date', 'TemplateDate');
$this->register_function('size', 'TemplateSize');
$this->register_function('text', 'TemplateText');
$this->register_function('domain', 'TemplateDomain');
$this->register_function('email', 'TemplateEMail');
$this->register_function('progressBar', 'TemplateProgressBar');
$this->register_function('progressBarOld', 'TemplateProgressBarOld');
$this->register_function('miniCalendar', 'TemplateMiniCalendar');
$this->register_function('fileSelector', 'TemplateFileSelector');
$this->register_function('pageNav', 'TemplatePageNav');
$this->register_function('addressList', 'TemplateAddressList');
$this->register_function('storeTime', 'TemplateStoreTime');
$this->register_function('pluginMenus', 'TemplatePluginMenus');
$this->register_function('halfHourToTime', 'TemplateHalfHourToTime');
$this->register_function('implode', 'TemplateImplode');
$this->register_function('mobileNr', 'TemplateMobileNr');
$this->register_function('hook', 'TemplateHook');
$this->register_function('fileDateSig', 'TemplateFileDateSig');
$this->register_function('number', 'TemplateNumber');
$this->register_function('fieldDate', 'TemplateFieldDate');
Alles anzeigen
In den jeweiligen li- und plugins/templates/ - Dateien ersetzt man dann folgendes:
Dann kann man Tabler.io + das reguläre b1g-Template gleichzeitig verwenden.
Wird dann irgendwann auf das neue li-Template umgestellt ist man schon vorbereitet.
Frage bzw. eine Bitte. Ich verwende das Branding-Plugin um Inhalte für unterscheidliche Domains bereitzustellen. Das Problem mit dieser Methode ist, dass die Style-Anweisungen, JS-Dateien etc. mehrfach im Ordner /templates/meintemplate liegen. Dabei bleibt das Grunddesign immer gleich, lediglich Grafiken, Angebot und Inhaltstexte sind z.B. sprachlich angepasst.
Könnte man die grundlegenden Style- und Funktionsdateien (css + js) in ein übergeordnetes Verzeichnis legen? Beispiel:
root
root/assets/css/
root/assets/js
root/assets/images
.
root/templates/x1/li/
root/templates/x1/nli/
root/templates/x2/li/
root/templates/x2/nli/
..
Die Zentralisierung der Style-Aweisungen würde insgesamt weniger Pflegeaufwand und weniger Fehleranfälligkeit bedeuten.
ManDal Wenn man die Funktion in der template.class.php tauscht, funktioniert die Anzeige der Progressbars im aktuellen /li-Bereich nicht mehr. Gibt es eventuell eine Möglichkeit eventuell beide Varianten, zumindest bis das neue li-Template fertig ist, zu verwenden?
Merci ![]()
Wo fang ich an, wo hör ich auf..
Prinzipiell gilt (für mich): Einfachheit vor Design. Es dem Nutzer leicht und nicht zu kompliziert zu machen, bestimmte Ziele zu erreichen.
Verwendest du als Grundlage auch wieder Tabler.io? Wenn ja, wäre meine Präferenz die Version "Combined". Dadurch werden sich manche Punkte die ich nachstehend beschreibe wahrscheinlich sehr einfach umsetzen lassen, vieles wahrscheinlich auch einfach obsolet.
Hier einfach nur ein paar Anregungen:
Für die meisten wahrscheinlich nicht wichtig, für mich essentiell - Integration von Werbeflächen:
Einfache Erreichbarkeit von wichtigen Menüpunkten:
Kalender:
E-Mail:
Webdisk:
To be continued...
Der NLI-Bereich könnte m.E. außer acht gelassen werden, da die meisten hier eine eigene Lösung oder eben das bisherige Standardtemplate verwenden. Der Fokus sollte deshalb nur auf dem li-Bereich liegen mit Ausnahme der Webdisk.
Wäre es möglich dass wir in so ner Art kurzem Brainstorming die Anforderungen für das UCP definieren? Persönlich fände ich es schade, wenn du etwas (evtl. alleine) entwickelst, und wir erst im Nachhinein mit Änderungswünschen um die Ecke kommen können.
Mit den Jahren habe ich z.B. sehr sehr viele Änderungen an meinem li-Template vorgenommen, einfach aus der Praxis heraus und weil in der Serienversion an vieles nicht gedacht wurde (z.B. Beschreibungstexte an manchen Stellen, Tooltips, zusätzliche Buttons etc. pp.)
Wenn wir gemeinsam einen kleinen Anforderungskatalog skizzieren könnten, wäre das toll.
ManDal Kannst du bitte mal prüfen, ob der Button "Speichern" im Template abuse.show.tpl funktioniert? Ich glaube da wurde ein <form - Tag nicht korrekt gesetzt.
Zeile 4 falsch: <div action="abuse.php?do=show&userid={$userID}&sid={$sid}" method="post">
Richtig: <form action="abuse.php?do=show&userid={$userID}&sid={$sid}" method="post">
Merci ![]()
Dann existiert das Icon (/plugins/templates/images/supportsystem_users.png) bei dir nicht, warum auch immer...
liegt im Verzeichnis:
Wie gesagt, ging ja mit dem alten Template auch und ist jetzt kein Problem mehr, hab das ja anderweitig geregelt ![]()
Ist den das Icon vorhanden oder fehlt das evtl. bei dir?
Die Ansicht wird aber in der 1.4.4 korrigiert und sollte dazu noch etwas schöner dargestellt werden...
Das Icon ist vorhanden. Ich habe auch testweise die URL zum Icone noch korrigiert:
<img src="../plugins/templates/images/supportsystem_users.png" width="16" height="16" border="0" title="{$Ticket.UserInfo}" align="absmiddle" />
in
<img src="{$selfurl}plugins/templates/images/supportsystem_users.png" width="16" height="16" border="0" title="{$Ticket.UserInfo}" align="absmiddle" />
brachte aber auch keinen Erfolg.
Wenn das in der nächsten Version gefixt ist, ist alles wieder gut ![]()
Edit: Hab das Icon gerade mal mit einem fontawesome-Icon ersetzt: <i class="fa-solid fa-user"></i> - wird angezeigt und der Link ist wieder klickbar. Etwas schräg...
Nehme ich gerne gleich mit auf, wie sollen den die Icons sein gross oder klein?
Die Größe der Icons ist ok. Nur die Buttons bissl breiter und höher ![]()
Hallo ManDal - kein Ding. Testen ist das, was ich gerne zum Projekt beitrage und beitragen kann ![]()
Zu 2) Größere Buttons sind schon in Ordnung. Mit meinen Wurstfingern komme ich da ganz gut zurecht ![]()
Mir ist noch aufgefallen, dass die Buttons kein Mouseover hatten. Das habe ich mal versucht zu integrieren:
<td class="text-nowrap">
<div class="btn-group btn-group-sm">
<a href="users.php?do=edit&id={$user.id}&sid={$sid}" class="btn btn-sm"><i class="fa-regular fa-pen-to-square" title="{lng p="edit"}"></i></a>
<a href="javascript:singleAction('{if $user.gesperrt=='no'}lock{elseif $user.gesperrt=='yes'}unlock{elseif $user.gesperrt=='locked'}activate{elseif $user.gesperrt=='delete'}recover{/if}', '{$user.id}');" class="btn btn-sm">{if $user.gesperrt=='no'}<i class="fa-solid fa-lock" title="{lng p="lock"}"></i>{elseif $user.gesperrt=='yes'}<i class="fa-solid fa-lock-open" title="{lng p="unlock"}"></i>{elseif $user.gesperrt=='locked'}<i class="fa-solid fa-lock-open" title="{lng p="unlock"}"></i>{elseif $user.gesperrt=='lock'}<i class="fa-solid fa-lock-open" title="{lng p="unlock"}"></i>{elseif $user.gesperrt=='delete'}<i class="fa-solid fa-hammer" title="{lng p="unlock"}"></i>{/if}</a>
<a href="javascript:singleAction('delete', '{$user.id}');" class="btn btn-sm" title="{lng p="delete"}">{if $user.gesperrt=='delete'}<i class="fa-regular fa-trash-can text-danger"></i>{else}<i class="fa-regular fa-trash-can"></i>{/if}</a>
<a href="users.php?do=login&id={$user.id}&sid={$sid}" target="_blank" onclick="return confirm('{lng p="loginwarning"}');" class="btn btn-sm"><i class="fa-solid fa-house-chimney-user" title="{lng p="login"}"></i></a>
</div>
</td>
5. Mein altes Template hatte ich mir bezüglich der Titel-Anzeige im Browsertab angepasst. Wenn man - wie ich - mit sehr vielen offnen Menüs (Tabs) arbeitet, ist es etwas schwierig die einzelnen Tabs auseinanderzuhalten wenn der Menütitel nicht im Tab angezeigt wird. Hier ein Beispiel:
In meinem alten Template habe ich mir in der page.tpl damit geholfen:
Alt: <title>b1gMail - {lng p="acp"}</title>
Neu: <title>{if $title}{$title} - {/if}{lng p="acp"}</title>
Das passt zwar auch nicht immer, aber meistens.
ManDal Könntest du bitte mal prüfen, ob der Link zum Profil in der Ticketansicht noch funktioniert?
In der noch nicht an Tabler angepassten Version 1.4.3 wird das Icon nicht angezeigt und der Link zum Userprofil funktioniert nicht mehr (hier blauer Pfeil)
ManDal Also... Zum Ersten: Das Template ist cool und gut umgesetzt! Folgendes ist mir bislang aufgefallen:
1. users.edit.tpl - falsche Platzhalter für PLZ/Ort:
Falsch:
<div class="mb-3 row">
<label class="col-sm-4 col-form-label">{lng p="zipcity"}</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="plz" value="{if isset($user.plz)}{text value=$user.plz allowEmpty=true}{/if}" placeholder="{lng p="ssl_url"}">
</div>
<div class="col-sm-6">
<input type="text" class="form-control" name="ort" value="{if isset($user.ort)}{text value=$user.ort allowEmpty=true}{/if}" placeholder="{lng p="ssl_url"}">
</div>
</div>
Richtig:
<div class="mb-3 row">
<label class="col-sm-4 col-form-label">{lng p="zipcity"}</label>
<div class="col-sm-2">
<input type="text" class="form-control" name="plz" value="{if isset($user.plz)}{text value=$user.plz allowEmpty=true}{/if}" placeholder="{lng p="zip"}">
</div>
<div class="col-sm-6">
<input type="text" class="form-control" name="ort" value="{if isset($user.ort)}{text value=$user.ort allowEmpty=true}{/if}" placeholder="{lng p="city"}">
</div>
</div>
Alles anzeigen
Dazu müssen aber auch die Sprachdateien angepasst und folgende Variablen hinzugefügt werden:
Deutsch:
$lang_admin['zip'] = 'PLZ';
$lang_admin['city'] = 'Ort';
English:
$lang_admin['zip'] = 'ZIP';
$lang_admin['city'] = 'City';
Am besten nach der Variablen:
$lang_admin['zipcity'] = 'PLZ/Ort';
$lang_admin['zip'] = 'PLZ';
$lang_admin['city'] = 'Ort';
2. Button-Gruppen
Die Button-Gruppe Sperren, Löschen, Freischalten, Login in der users.list.tpl sind m.E. für mobile Bedienung zu klein. Die habe ich bei mir per CSS etwas angepasst und den Abstand dazwischen vergrößert. Mir ist es früher öfter passiert, dass ich den falschen Button geklickt habe:
3. Menüleiste - Dropdownliste:
Wenn man z.B. viele Plugins installiert hat, ist die Liste Einspaltig sehr lang. Hier wäre ein zwei- oder mehrspaltiges Menü praktischer.
4. prefs.common.tpl:
Ist die Variable "whitelist" für eine der kommenden B1gMail-Versionen vorgesehen? Das würde dann auch in den Sprachdateien fehlen:
<div class="mb-3 row">
<label class="col-sm-4 col-form-label">{lng p="whitelist"}</label>
<div class="col-sm-8">
<input type="text" class="form-control" name="wartung_whitelist" value="{text allowEmpty=true value=$wartungwhitelist}" placeholder="{lng p="whitelist"}">
</div>
</div>
Das fürs erste. Ich werde weiter berichten...
Damit man einen eingetragenen Termin nicht immer gleich anklicken bzw. öffnen muss ist es hilfreich, wenn man einen Mouseover / Hover-Effekt einsetzen könnte.
Neben dem Titel könnten dort die wichtigsten Informationen zum Termin angezeigt werden. Datum & Uhrzeit, Titel, Beschreibungstext in gekürzter Form.
Hat das eventuell schon jemand umgesetzt?
ManDal Ich oute mich nun als absoluter Github-DAU
Wo finde ich den "Download"-Button um den /admin/templates-Orner herunterzuladen?
Danke für dein Feedback, grundsätzlich funktioniert das Template auch auf der 7.4.0 Version gib da eigentlich bis auf das Company Feld keine grossen unterscheide. Du kannst den /admin/templates Ordner umbenennen und den neuen hochladen und Testen...
Danke. Muss ich dazu die komplette OSS-Version herunterladen oder gibt es das Template auch separat?