TIMETOWEB Blog

Archiv

TechInfo

CMS Training 'Approval Rights und Access Rights'

By Andreas Löw

Das CMS Training wird neuer Bestandteil der CMS Meetings. Als erstes Thema wurde heute "Approval Rights und Access Rights" durchgesprochen.

Thema im nächsten CMS Training wird voraussichtlich "Tagging" sein.
mehr...

Archiv

TechInfo

File Upload nach eigenen Vorstellungen gestalten

By David Bary

Fast alle Formularfelder lassen sich Browserübergreifend mehr oder weniger schön dem Layout der Webseite anpassen. Jedoch gibt es immer wieder mal den Wunsch, auch den File Upload Dialog des Browsers inklusive des Pfad-Eingabe Feldes und des zugehörigen "...browse" Buttons an das Layout der Webseite und der Sprache anzupassen. Leider reagiert dieses HTML Element auf keinen Standardkonformen Versuch, es einer Schönheitskur zu unterziehen. Das es irgendwie geht, wird der ein oder andere vielleicht schon auf seinen Surftouren im Web gesehen haben. Mit dem JavaScript Konstrukt von Andrew Valums (unter der MIT Licence veröffentlicht) gibt es eine ausgereifte bequeme Lösung mit durchdachten Schnittstellen und Events für diese Anforderung.

Solche "JS-Hacks" für Anforderungen die nicht mit Standard CSS gelöst werden können, sind natürlich immer mit Vorsicht zu genießen. So kann es doch bei exzessiver Nutzung von Event-Handlern, Mauspositionsüberwachung, IFrames und DOM Manipulationen in gewissen Webseiten/Browsern zu unvorhergesehenen Effekten kommen. Ein kurzer Test im Problemkind IE 6 zeigte jedoch, dass zumindest diese Hürde ganz gut bewältigt wurde (der gepunktete Rahmen des im Hintergrund unsichtbar positionierten File-Upload Buttons beim Klick auf den selbst gestylten eigenen Upload Button ist im IE 6 verzeihbar und vielleicht sogar mit weiteren CSS Tricks vermeidbar)

Hier die Webseite des Autors Andrew Valums mit allen Infos zu seiner "Ajax Upload" Lösung (englisch):
http://valums.com/ajax-upload/

Eine gute weiterführende Auseinandersetzung mit dieser Lösung gibt es in deutscher Sprache von René Dreschler-Hackel:
http://weblog.drescher-hackel.de/09761EBD-1D09-42F1-9CDB-B0AE7081D625/Ajax+Fileupload.content.aspx

...in dem Zusammenhang sei auch gleich noch sein kleiner Beitrag zu einer "Fortschrittsanzeige" für den Ajax Upload erwähnt:
http://weblog.drescher-hackel.de/6B4214BB-D66B-4D09-BC49-63F32E65411E/Ajax+Fileupload+Fortschrittsanzeige+.content.aspx

Archiv

TechInfo

Dokument Löschen ohne Löschrechte

By Dirk Bergles

Zum wiederholten mal kam es nun vor das Prozesse scheiterten, weil User kein Recht haben Dokumente zu löschen. Für Autoren eine durchaus legitime Einstellung in der ACL.
Zuletzt in einem Kundenprojekt beim Tagging, wo einfach TagRelation nicht wieder entfernt werden konnten, weil der User kein Recht zum Löschen von Dokumenten hatte. Gleiches passiert auch im WebUI mit den Temp Dokumenten für FileUploads.
Um nun den ganzen Aufwand mit Löschflag, zeitgesteuertem Löschen durch einen Agenten, u.s.w zu vermeiden, gibt es nun ein Funktion zum Löschen von Dokumenten.

Die geht letztendlich hin, prüft in der ACL ob der User löschen darf, wenn ja, Dokument auf herkömmlichen Weg löschen, wenn nein wird ein Agent gestartet, gesigned mit ausreichenden Rechten, welcher dann das Dokument entfernt.

Ganz wichtig. Niemals vergessen vor dem Löschen zu prüfen ob der User das darf.

In der SWM_Error gibt es nun die Funktion
Sub removeDocument(doc as NotesDocument)
Welche nun entweder herkömmlich sas Dokument mit doc.remove(true) löscht, oder aber den Agenten "SWM_RemoveDocument" startet, welcher mit der UniversalID das Dokument sucht und dann entfernt.
Der Agent wird in der parentDatabase des doc gesucht. Wenn also die Dokumente nicht im CMS liegen, so muß auch der Agent in der anderen Datenbank liegen.

Die Änderung gibt es ab 7.70 0, kann aber leicht integriert werden.
mehr...

Archiv

TechInfo

JS Error Handling, Logging und Debugging

By David Bary

Dieser Blog Eintrag soll ein Verständnis und eine Herangehensweise für JavaScript Error Handling, einheitliches Logging von JavaScript Operationen und einfaches Debugging von JavaScript Fehlern im CMS ermöglichen. Seit JavaScript 1.5 (verabschiedet 1999, implementiert seit Mozilla 1.0 und IE 5) ist eine Fehlerbehandlung mittels try..catch wie in anderen mächtigen und populären Programmiersprachen möglich. Aufgrund der recht simplen Aufgaben, für die JavaScript meist eingesetzt wurde, verlassen sich die meisten Entwickler in der Praxis jedoch darauf, alle Fehlerquellen berücksichtigt zu haben und vernachlässigen eine saubere Fehlerbehandlung. Durch den Boom des Web 2.0 und dem stark zunehmenden JavaScript Anteil in Webseiten, sowie der enorm gestiegenen Komplexität, ist es aber Zeit sich intensiver mit der JavaScript Fehlerbehandlung im Browser zu beschäftigen.


Gründe für eine neue JS Error Handling Strategie:
  • JavaScript in TIMETOWEB Webseiten hat stark zugenommen ( AJAX und Web 2.0, das WUI, externe Frameworks )
  • Verschiedene JS Frameworks gemischt mit eigenem JS-Code erhöhen das Fehlerpotenzial und erschweren die Fehlersuche
  • Benutzer Feedback im Falle von JS Fehlern ist unwahrscheinlich, somit muss eine automatische reporting Lösung gefunden werden


JQuery spezialisiert sich auf eine schlanke DOM Manipulation und enthält und bietet selbst keine Fehlerbehandlungs-Routine und ExtJS verwendet an vereinzelten Stellen im Code "try ... catch" Statements, setzt jedoch kein globales Konzept ein, sondern fängt lediglich einzelne Ausnahmefälle im JS-Code ab ohne die Fehler weiter zu verarbeiten. Somit bleibt es dem Webmaster bzw. Entwickler überlassen, beim Einsatz dieser Frameworks JS Fehler abzufangen.


Für das Errorhandling gibt es zwei sich ergänzende Wege in JavaScript: dass global ausgerichtete "window.onerror" Event und das im Script-Code einzubindende "try ... catch" Statement, die im folgenden kurz Erläutert sind:
mehr...

Archiv

TechInfo

Performantes laden von verbreiteten JS Frameworks mittels Google.load()

By David Bary

Google bietet eine Möglichkeit zum einfachen und vor allem performanten Einbinden verbreiteter/beliebter JavaScript Frameworks. Für die WebUI ist dies vor allem für die doch sehr große ExtJS(Core) sowie JQuery Library interessant, wenn diese über einen nahegelegenen hochperformanten Google Server geladen werden können. Durch den zentralen Speicherort ergeben sich sogar für Erstbesucher einer Webseite eventuell schon Caching/Proxy Vorteile und zudem spart man bei vielbesuchten Seiten noch die Bandbreite für die JS Resourcen (bei ExtJS immerhin ca. 600K).

Ein weiterer Vorteil ist die detailierte bzw. flexible Versionskontrolle. Die verschiedenen Frameworks können explizit mit einer Versionsnummer aufgerufen werden oder man kann durch das weglassen von Minor Versionsnummern automatisch immer die aktuellste Ausgabe der Major Version laden. Zudem gibt es noch die Möglichkeit die Frameworks durch ein zusätzlichesn Parameter "uncompressed" zu laden, für Debugzwecke schnell umgesetzt und sehr hilfreich (idealerweise Parameter "&debug=true" gesteuert oder so ;-)

Unterstützt werden zur Zeit folgende Frameworks in der Regel inklusive der neuesten stabilen Version:
jQuery
jQuery UI
Prototype
script_aculo_us
MooTools
Dojo
SWFObject
Yahoo! User Interface Library (YUI)
Ext Core!

In den Details gibts Beispiele und Erklärungen zum Verwenden dieser Schnittstelle.
mehr...

Archiv

TechInfo

Personalisierung: Filter in Datenquellen

By Mike Meister

Mit der Version 7.70 wird ein personalisierter Datenquellen-Filter eingeführt. Er ermöglicht z.B. angemeldeten Benutzern Nachrichten als gelesen zu markieren.
mehr...

Archiv

TechInfo

Änderung des Doctype Switch auf loose.dtd

By Kevin Setiono

Der Doctype wurde im CMS in der CCM_LayoutDefinition auf <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> umgestellt. Das führt dazu, dass die Browser im almost standard compliance mode sind.
mehr...

Archiv

TechInfo

Berechtigungen bei News, Events und Items

By Dirk Bergles

Grundsätzlich kann im CMS ja die Berechtigung für SLE Dokumente, also News, Items, Events über eine Kategorie eingeschränkt, bzw. Rechte vergeben werden,
Dies gilt sowohl für die Access Rights, also die Autoren Zugriffe, als auch Approval Rights, also ContentMaster Zugriffe..
Nun, im Kundenprojekt, drängten sich zwei Probleme auf.
mehr...

Archiv

TechInfo

Schnittstelle für Customized Features

By Dirk Bergles

Es ergab sich in einem laufenden Projekt das das Löschen von Dokumenten unterbunden werden mußte. Es sollten Custom Dokumente nur noch per Aktion gelöscht werden können.
Um dies zu erreichen muß natürlich in das Datanbank Script " QueryDoumentDelete" eingegriffen werden.

Um aber eine derart wichtige und elementare Bestandteile des Systems nicht vom Designrefresh auszuschließen, gibt es nun eine leichter zu handhanbende Schnittstelle.
Eine Library "CUS_Features"
Auch diese Schnittstelle verhindert leider nicht das ggf. Designelemente manuell upgedated werden müssen.
mehr...

Archiv

TechInfo

Umlaute, UTF-8, Javascript und Domino

By Dirk Bergles

Wieder mal schlug ein Umlaute-Fehler auf. Beim WebUI wurden Umlaute im RichTextEditor nicht korrekt gepspeichert und landeten als komische Sonderzeichen wieder im ContentFeld.
Seltsamerweise funktionierte das Schreiben von Umlauten in normalen Textfeldern.
Der Kunde war gezwungen UTF-8 einzuschalten, danach funktionierte es nicht mehr.

Erstmal die Lösung...
mehr...

Tags:
Alle Tags