Kontakt - Datenschutz
Subversion
title
uri
tags
description
created
lastmodified
CREATE TABLE links (
id SERIAL4 PRIMARY KEY,
created timestamp without time zone NOT NULL,
title TEXT,
uri TEXT UNIQUE,
description TEXT
);
INSERT INTO links (created, title, uri, description) VALUES (:created, :title, :uri, :description)
INSERT INTO links (created, title, uri, description) VALUES(NOW(), 'Link 1', 'http://www.example.com/1', 'Description 1');
INSERT INTO links (created, title, uri, description) VALUES(NOW(), 'Link 2', 'http://www.example.com/2', 'Description 2');
INSERT INTO links (created, title, uri, description) VALUES(NOW(), 'Link 3', 'http://www.example.com/3', 'Description 3');
REST-API
-----------------------------------------------------------
/1
/new
/edit/1
/delete/1
Befehlsorientierte-API
-----------------------------------------------------------
_command = "delete 1"
Klassen
-----------------------------------------------------------
create
read
update
delete
BookmarkModel
BookmarkView
BookmarksModel
BookmarksController
BookmarksView
Warum ein Framework?
===========================================================
DRY - Don't repeat yourself
-----------------------------------------------------------
- BUGFIX : Form title max length must be 150.
Titel können maximal 150 Zeichen enthalten, waren im Formular aber auf 80 Zeichen begrenzt.
Mit einer zentral definierten Maximallänge und automatischen Nutzung dieser bei der Ausgabe
von Formularen werden solche Fehler automatisch vermieden.
Wartungsmodus
-----------------------------------------------------------
- Aktualisierung der Software ohne Zugriff auf unvollständig übertragende Programm-,
Konfigurationdateien, Daten usw.
- Benutzung mit Adminrechten möglich.
Konfiguration
-----------------------------------------------------------
$pageTitle = 'Bookmarks';
$pageNavigation = '';
$pageContent = '';
$pageDebug = '';
$page = ['title' => 'Bookmarks',
'message' => ['type' => 'info',
'content' => ''],
'navigation' => '',
'content' => '',
'debug' => ''];
$page->title('Bookmarks')
->navigation('')
->content('');
Notizen
-----------------------------------------------------------
- Edit Bookmark
+ Edit-Form anzeigen
+ Bookmark ist passives Objekt. Also, readByID() in Bookmarks implementieren.
+ Bookmark.update() implementieren,
+ Bookmark ist passives Objekt. Also, update() in Bookmarks implementieren.
- Fehlerbehandlung
- Im Erfolg wieder Edit-Form anzeigen oder Startseite?
+ BUGFIX: Ausgeloggt nach [Cancel] von EditForm.
+ Config cookieSecure, so dass der Session-Cookie optional auch ohne sichere Verbindung
funktioniert.
+ SECURITY: Login nur über sichere Verbindung.
+ SECURITY: Admin-Funktionen nur mit gültigen Login.
/ NEW : Atom feed.
+ Nehme http://www.sven-drieling.de/diary/atom.xml als Grundlage.
+ Hmm, für Links gibt es doch eine spezielle Variante... - später suchen.
+ http://web.archive.org/web/20080414203155/http://diveintomark.org/archives/2004/05/27/howto-atom-linkblog
+ http://www.sven-drieling.de/bookmarks/1 habe ich noch nicht implementiert und dieser Link
ist im Gegensatz zum eigentlich verlinkten Inhalt sehr präsent...
+ Also, erst mal wieder die vorige Version nehmen.
+ http://feedvalidator.org/
+ Template Feed
+ Template Feed entry
+ Escape für XML statt HTML5
+ Die 20 letzten Links in den Feed
+ Datum der letzten Änderung wird benötigt => Zusätzliche Methode: <updated>2013-12-24T17:17:43Z</updated>
- <link rel="alternate" type="text/html" Hmm, gibt's da was spezielles für HTML5?
+ Error Messages als Atom-Feed?
+ Wird nicht sinnvoll in Opera, Firefox angezeigt.
+ Feedreader speichert Fehlermeldungen als Feedeinträge, was auch nicht viel Sinn macht.
=> Fehlermeldungen als HTML ausliefern.
+ View macht sich sinnvoll bemerkbar.
- Edit: LastModified
+ NEW : Overview for start page.
- Für die Startseite wird nun die Übersicht für die Bookmarks generiert. Das ist allerdings auch das
einzige gute an den neu hinzugekommende Quelltext.
- showLastX() nicht geeignet, da die Startseite ein Tabellenlayout benutzt und jewweils der x-te und x-te + 3
Eintrag nebeneinander angezeigt werden müssen, während showLastX() die Einträge nur nacheinander
ausgeben kann.
- Fehlerhafte UTF-8 nach Latin 1-Konvertierung (nur > US-ASCII-Zeichen für die es HTML 4- Entities gibt).
Reicht aber hoffentlich so lange bis die Startseite in UTF-8 ist.
- Es wird mehr als eine Info-Message ausgegeben aber bisher nur eine Message unterstützt.
- Fehlerbehandlung uneinheitlich. Mal boolean mal Exceptions.
+ NEW : Templates.
+ Als erstes nur das default-Template. Das ging flott, weil showNewForm() bereits das Link-Objekt als Parameter
unterstützte und so nur das Template geladen und als description übergeben werden brauchte.
+ Templates als JSON
+ Als Template speichern
+ Laden aller Templates
+ Template auswählen
Entwicklungsschritte
-----------------------------------------------------------
15-Dec-2013: ydlinks: Bookmarks in die Datenbank
https://svn.sven-drieling.de/repos/!svn/bc/147/trunk/yd/links/
06-Jan-2014: ydlinks: Atom-Feed für die Bookmarks
https://svn.sven-drieling.de/repos/!svn/bc/154/trunk/yd/links/
15-Jan-2014: ydlinks: Übersicht für die Startseite
https://svn.sven-drieling.de/repos/!svn/bc/156/trunk/yd/links/
15-Jan-2014: ydlinks: Templates - default
https://svn.sven-drieling.de/repos/!svn/bc/157/trunk/yd/links/
10-Oct-2014: ydlinks: Templates als JSON speichern
https://svn.sven-drieling.de/repos/!svn/bc/187/trunk/yd/links/
- Fehlende Tests für den Prototyp machen Änderungen zeitaufwendig.
- JSON
- Macht es einfach mehrere Templates in einer Datei zu speichern.
- Maskiert automatisch Sonderzeichen wie den Zeilenumbruch '\n'.
-----------------------------------------------------------
<tr>
<td width='50%' valign='top'>
<b><font color='#000000'>dd-mmm-yyyy: <a href='{uri}'>{title}, {date}, {source}</a></font></b>
-
{intro}
</td>
<td> </td>
<td width='50%' valign='top'>
<b><font color='#000000'>dd-mmm-yyyy: <a href='{uri}'>{title}, {date}, {source}</a></font></b>
-
{intro}
</td>
</tr>
<tr><td colspan='3'> <p>=> <a href='/bookmarks/index.html'>Weitere Bookmarks</a></td></tr>