Gecko CMS/Framwork

jakWEB

Angesehenes Mitglied
Ein neues Werk aus dem Hause JAKWEB, das neue CMS/Framwork Gecko ist bereit für den Einsatz. Nach vielen Stunden und Tests bin ich nun davon überzeugt, dass die Software bereit ist für das WWW.

Ich würde mich freuen über Feedback betreffend Design, Benutzerfreundlichkeit und Geschwindigkeit des Seitenaufbaus.

Die Seite ist in englischer Sprache, aber das sollte ja nicht abhalten.

URL: Gecko CMS

Bitte kein Feedback von IE6 Benutzer, da HTML5 und CSS3 wirklich nicht unterstützt wird von diesen Browsern.
smile.gif


Grüsse aus der Schweiz
Jérôme
 
das Design ist ok, aber ich finde den Rest zu minimalistisch.

Ich habe Mal ein wenig durchgeklickt, das steht nichts von Features, Funktionen, usw.
Ich habe keine Ahnung davon, was das Teil kann oder nicht.

Das ausführlichste war die Lizenz, die ein reinstes Wirrwarr und Wischwasch ist, und vom Lizenznehmer das unmögliche verlangt.

Ich würde mich zum jetztigen Stand der Dinge zurückhalten.
 
QUOTE (jakWEB @ Di 13.09.2011, 19:50) Ich würde mich freuen über Feedback betreffend Design, Benutzerfreundlichkeit und Geschwindigkeit des Seitenaufbaus.

Für mich alles im grünen Bereich.
 
Danke für das Feedback, es gibt jetzt auch eine Demo, dann sollte es klar sein was es kann...

Direktzugang zur Demo: Demo - Gecko

Grüsse
Jérôme
 
Gecko ist nun bereit für Public, wir haben nochmals fleissig am Framework gearbeitet und die Webseite hat auch einen neuen Look abbekommen.

Ich freue mich auf Feedback und bei Fragen stehe ich selbstverständlich zu Verfügung.

Auch im IE7 läuft jetzt alles wie es sollte und daher bin ich überzeugt, dass das Produkt bereit ist!

Grüsse
Jérôme
 
habs kurz überflogen. ganz kurz meine 2 cents dazu:

News-Modul
- "new news" tönt nicht optimal..besser "add news"
- Show Title, Show Date, Show Social Buttons, Show Vote --> besser als Default-Wert in Settings --> ich möchte das ja nicht jedes mail neu definieren. (--> das gibt dann auch ein einheitliches Resultat, wenn z.B. mehrere Leute daran arbeiten)
- Sidebar Widget Funktionalität nicht ganz klar (zumindest bei den news)
- des weiteren fehlt noch die Möglichkeit eines Fileattachments für Beilagen

Generell
- Fonts sollten meiner Meinung nach im Wyswiyg Editor nicht anwendbar sein --> Styles verwenden --> CI/CD gerechtes Resultat
- Bezügliche Aufbau und Naming ist das ganze halt etwas technisch aufgebaut..

Grüsse

Martin
 
Vielen Dank für dein Feedback! New News wurde bereits angepasst auf Add News (Danke).

Generelle Einstellungen für die Settings ist eine gute Idee, ich muss mir mal überlegen wie das besser umsetzen kann.

Bilder und Filemanager ist integriert, daher sollte es kein Problem sein Attachments anzuhängen!

http://imageshack.us/photo/my-images/849/s...11005at848.png/

Technisch wollte ich es eigentlich nicht haben, was genau ist technisch?

Danke nochmals und Grüsse
Jérôme
 
rss.php line 73: DATE_RFC822

RFC822 wurde durch RFC2822 abgelöst.


QUOTE Request for Comments: 2822
Obsoletes: 822

Quelle: http://www.faqs.org/rfcs/rfc2822.html

  • keine Code Guidlines (--> Dadurch fehlendes Einrücken oder uneinheitliches Setzen von Klammern, keine Einheitlichen Funktionnamen, mal wieder der Grundfunktion, mal der Alias verwendet [Bsp. rss.php line 17 Funktion die, line 81 exit])
  • Umständlicher Code , erst echo "text"; dann die, statt die("text"); rss.php line 17/18
  • In SQL-Logs schlecht lesbare SQL-Statements: admin/categories.php line 90 - 93
  • Kein Template-System (keine Trennung zwischen Programmcode und Design (HTML/CSS))
  • unvollständige Programmcode Dokumentation, bspw. in class/class.user.php und class.rewrite.php

Ich persönlich finde hier bereits, dass es zu viele Nachteile sind.


Ansonsten fand ich den hier folgenden Programmcode sehr interessant, und Aufgrund der Charakteristika habe ich mal kurz nachgeforscht. Ich hoffe Du hast das Kopieren des Programmcodes abgeklärt (ich selber wäre mir bei sowas zu unsicher), doch selbst wenn es rechtlich zulässig ist, tut es ja nicht weh, einen Hinweis drinzulassen, woher es kommt, insbesondere wenn man Fehler wir }<newline>else { drin behält, wieso nicht auch die Kommentare?


QUOTE ////                  Unsharp Mask for PHP - version 2.1.1  ////  ////    Unsharp mask algorithm by Torstein Hønsi 2003-07.  ////             thoensi_at_netcom_dot_no.  ////               Please leave this notice. 

Quelle: http://code.google.com/p/oem-php-framework...n_image.php?r=2



inlcude/functions_thumb.php

CODE function Image_Sharpen($img, $amount, $radius, $threshold) {
if ($amount > 500) { $amount = 500; }
$amount = $amount * 0.016;
if ($radius > 50) { $radius = 50; }
$radius = $radius * 2;
if ($threshold > 255) { $threshold = 255; }

$radius = abs(round($radius));
if ($radius == 0) { return $img; imagedestroy($img); break; }

$w = imagesx($img); $h = imagesy($img);
$imgCanvas = imagecreatetruecolor($w, $h);
$imgBlur = imagecreatetruecolor($w, $h);

if (function_exists('imageconvolution')) {
 $matrix = array(
  array( 1, 2, 1 ),
  array( 2, 4, 2 ),
  array( 1, 2, 1 )
 );
 imagecopy($imgBlur, $img, 0, 0, 0, 0, $w, $h);
 imageconvolution($imgBlur, $matrix, 16, 0);
}
else {
 for ($i = 0; $i < $radius; $i++)    {
  imagecopy($imgBlur, $img, 0, 0, 1, 0, $w - 1, $h);
  imagecopymerge($imgBlur, $img, 1, 0, 0, 0, $w, $h, 50);
  imagecopymerge($imgBlur, $img, 0, 0, 0, 0, $w, $h, 50);
  imagecopy($imgCanvas, $imgBlur, 0, 0, 0, 0, $w, $h);

  imagecopymerge($imgBlur, $imgCanvas, 0, 0, 0, 1, $w, $h - 1, 33.33333 );
  imagecopymerge($imgBlur, $imgCanvas, 0, 1, 0, 0, $w, $h, 25);
 }
}

if($threshold>0) {
 for ($x = 0; $x < $w-1; $x++) {
  for ($y = 0; $y < $h; $y++) {

   $rgbOrig = ImageColorAt($img, $x, $y);
   $rOrig = (($rgbOrig >> 16) & 0xFF);
   $gOrig = (($rgbOrig >> 8) & 0xFF);
   $bOrig = ($rgbOrig & 0xFF);

   $rgbBlur = ImageColorAt($imgBlur, $x, $y);

   $rBlur = (($rgbBlur >> 16) & 0xFF);
   $gBlur = (($rgbBlur >> 8) & 0xFF);
   $bBlur = ($rgbBlur & 0xFF);

   $rNew = (abs($rOrig - $rBlur) >= $threshold)
    ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig))
    : $rOrig;
   $gNew = (abs($gOrig - $gBlur) >= $threshold)
    ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig))
    : $gOrig;
   $bNew = (abs($bOrig - $bBlur) >= $threshold)
    ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig))
    : $bOrig;

   if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) {
    $pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew);
    ImageSetPixel($img, $x, $y, $pixCol);
   }
  }
 }
}
else {
 for ($x = 0; $x < $w; $x++) {
  for ($y = 0; $y < $h; $y++) {
   $rgbOrig = ImageColorAt($img, $x, $y);
   $rOrig = (($rgbOrig >> 16) & 0xFF);
   $gOrig = (($rgbOrig >> 8) & 0xFF);
   $bOrig = ($rgbOrig & 0xFF);

   $rgbBlur = ImageColorAt($imgBlur, $x, $y);

   $rBlur = (($rgbBlur >> 16) & 0xFF);
   $gBlur = (($rgbBlur >> 8) & 0xFF);
   $bBlur = ($rgbBlur & 0xFF);

   $rNew = ($amount * ($rOrig - $rBlur)) + $rOrig;
   
   if($rNew > 255) { $rNew = 255; }
   else if($rNew < 0) { $rNew = 0; }
   
   $gNew = ($amount * ($gOrig - $gBlur)) + $gOrig;
   
   if($gNew > 255) {$gNew = 255;}
   else if($gNew < 0) { $gNew = 0; }
   
   $bNew = ($amount * ($bOrig - $bBlur)) + $bOrig;

   if( $bNew > 255) { $bNew = 255; }
   else if ( $bNew < 0 ) { $bNew = 0; }

   $rgbNew = ($rNew << 16) + ($gNew <<8) + $bNew;
   ImageSetPixel($img, $x, $y, $rgbNew);
  }
 }
}
imagedestroy($imgCanvas);
imagedestroy($imgBlur);

return $img;
}
 
Danke für das Feedback, werde mir das RSS nochmals genauer anschauen!

Template System ist sehr wohl vorhanden, komplett getrennt aber auch PHP Files um schnellst mögliches rendern zu garantieren!

Das mit dem die() gebe ich dir Recht werde ich noch anpassen. Danke für den Hinweis!
smile.gif


Gruss
Jérôme
 
QUOTE (jakWEB @ Mi 5.10.2011, 17:31) [...] Template System ist sehr wohl vorhanden, komplett getrennt aber auch PHP Files um schnellst mögliches rendern zu garantieren! [...]

Na ja, ich verstehe wohl unter den Begriff etwas anderes, und zwar keinerlei PHP-Code innerhalb eines Template zu haben.
wink.gif
 
Dann benutzt du aber ein Template System welches wieder gerendert werden muss und das macht absolut keinen Sinn!?

Nehmen wir zum Beispiel Smarty: Warum Variablen schreiben welche wieder umgewandelt werden müssen? Bringt nur Performance Nachteile und für den Designer bringt es meiner Meinung nach auch nur Nachteile, da er wieder etwas neues lernen muss. PHP ist am schnellsten wenn es direkt geht, warum das ganze nochmals mit einem Layer bestrafen?!
 
  • Damit man sich keine Sorgen machen muss, das der Designer ungefilterte Variablen im Design nutzt oder schädlichen Code einschleußt (letzteres wird man wohl bei komplett firmeninternen Projekten ausschließen)?
  • Damit Designer und Programmierer gleichzeitig an einen Projekt arbeiten können?
  • Damit man ggf. Funktionsweisen hat, die in PHP fehlen?
Das mit den Rendern ist eine Ansatzsache, man kann ja das gerenderte auch Cachen. Außerdem, wenn es schnell sein soll, wechselt man die Ebene, d.h. nicht mehr Scriptsprache, sondern ab nach Bytecode oder Maschinencode. Für PHP würde wohl hier Zend Guard/Optimizier genutzt werden.

Dem Designer bringt beides erstmal gar nichts, er muss sich entweder ins Templatesystem einarbeiten, oder in die Programmiersprache. Das kannst Du IMHO Drehen und Wenden, wie Du willst. Wenn man davon ausgeht, ist es sicherer Ihn ein Templatesystem zu geben, als die Programmiersprache (da sich bisher vermutlich mit Sicherheit eher weniger auskennt).
Immerhin kann schlecht davon ausgegangen werden, dass ein Designer Programmiersprache XY kennt.

Man kann sich gerne über Sinn oder Unsinn ewig über sowas streiten, und ich war auch mal der Ansicht, dass Templatesyteme überflüssig wären, aber zur wirklich 100% Trennung des Programmcodes und Designs ist es spitze, wie auch wenn es um Sicherheit geht, falls unbedarfte Leute mit sowas arbeiten.

Die Trennung klappt bei Euch auch nicht wirklich:
main/functions.php line 92
CODE $team .= '<a href="../' . $uname4url . '-u-' . $uid . '-1' . $rext . '">' . $uname4html . '</a>';



Und wenn Performance so dermaßen wichtig ist, dass es nicht über Cache-Funktionen abgefangen werden kann, dann müssten die Doppel Quotes auch durch Single Quotes ersetzt werden. Nur dann müsste man sich aber auch die Frage, was man dann mit einen Framework möchte?

main/session/get.php line 20

CODE $q_user = "SELECT sid, ustatus, pzahl, styleurl, zeit2, zeitg, newthreadsview FROM " . $utable . " WHERE id = " . $suid_c . " AND ustatus > 1";







Und einen Bug hab ich gefunden (der ist aber auch keine seltenheit):

main/functions.php line 6

CODE if (! preg_match('/^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$/', $email)) {


BTW Performancetechnisch auch nicht so sinnig: '([a-z0-9_]|\-|\.)' --> '[a-z0-9_\.\-]', mal abgesehen von der Richtigkeit des Checks im Allgemeinen (im Domainpart ist nochmal was ähnliches, wenn auch nicht in komplett selber Form).


Nach RFC müsste auch folgende Adressen klappen:

username+extra@domain.tld
username+extra@domain.museum
"meine\ Adresse!"@domain.tld

Laut DNS dürfte dies nicht klappen:

user@domain_name.tld

http://en.wikipedia.org/wiki/Email_address...email_addresses
http://de.wikipedia.org/wiki/Domain_Name_S...main-Namensraum
http://simonslick.com/VEAF/
 
Welches System schaust du dir eigentlich an?

Ein solcher Code verwende ich nicht!
wink.gif


CODE if (! preg_match('/^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$/', $email)) {


Grüsse...
 
Stimmt, bei den Beitrag bin ich verruscht in einen alten Ordner, der auch mit J anfängt. Das mit dem E-Mail-Bug kannste streichen.
wink.gif

Aber leider ändert sich bei Deinen Framework sonst auch nicht so viel.



Die Doppelquotes:

forgot.php line 29: $_SERVER["REQUEST_METHOD"]
rss.php line 35: $hookrss = $jakhooks->jakGethook("php_rss");
rss.php line 38: $hrss["phpcode"]
usw.



Die Templatetrennung:
  • include\jakcontact.php line 31: $errorsA['human'] = $tl['error']['e10'].'<br />';
  • include\jakcontact.php line 44: $errorsA['human'] = $tl['error']['e10'].'<br />';
  • include\jakcontact.php line 70 & 74: $errorsA[$formarray[$i]] = $tl['error']['e11'].' ('.$formnamearray[$i].')<br />';
  • ...
  • include\jakcontact.php line 124: $listForm .= 'Attachment: ('.BASE_URL.$targetFile.')<br />';
  • include\jakcontact.php line 234: $jakdata .= '<label'.$mandatory.' for="'.$row['id'].'">'.$row['name'].'</label><input type="text" name="'.$row['id'].'" class="inputbig" value="<?php echo $_POST['.$row['id'].'];?>" placeholder="'.$row['name'].'" />';
  • include\jakcontact.php line 239: $mandatory = ' class="required"';
  • include\jakcontact.php line 244: $jakdata .= '<label'.$mandatory.' for="'.$row['id'].'">'.$row['name'].'</label><textarea name="'.$row['id'].'" class="textareabig"><?php echo $_POST['.$row['id'].'];?></textarea>';
  • ...
  • include\jakcontact.php line 319-323
    CODE $jakdata .= '<input type="hidden" name="optlist" value="'.base64_encode($optlist).'" />';
    $jakdata .= '<input type="hidden" name="optlistname" value="'.$optlistname.'" />';
    $jakdata .= '<input type="hidden" name="optlistmandatory" value="'.base64_encode($optlistmandatory).'" />';
    $jakdata .= '<input type="hidden" name="optlisttype" value="'.base64_encode($optlisttype).'" />';
    $jakdata .= '<input type="hidden" name="formid" value="'.$formid.'" />';

RegEx

class.userlogin.php line 58:

CODE if (!preg_match('/^([a-z]||[A-Z]||[-_]||[0-9])+$/', $username)) {


Sollte das gleiche sein wie:


CODE if (!preg_match('/^([a-zA-Z0-9\-_])+$/', $username)) {


nur halt besser, da schneller
wink.gif
 
Zurück
Oben