redaxo / redaxo Goto Github PK
View Code? Open in Web Editor NEWREDAXO, a PHP-based CMS since 2004. Both simple and flexible.
Home Page: https://redaxo.org
License: Other
REDAXO, a PHP-based CMS since 2004. Both simple and flexible.
Home Page: https://redaxo.org
License: Other
we should strip the implementation of our javascript implementation for partial page rendering and use the more advanced jquery pjax plugin instead
Ich hab das Kategorien Listen Modul aus der Demo eingesetzt und OOCategory durch rex_ooCategory entsprechend ersetzt. Im Backend wird auch alles korrekt dargestellt nur im Forstend gibt es folgenden Fehler:
[18-Dec-2011 09:29:02] PHP Fatal error: Call to a member function getChildren() on a non-object in rex://module/7/output on line 4
Hier der Modul Output Code:
<?php
$cat = rex_ooCategory::getCategoryById($this->getValue('category_id'));
$cats = $cat->getChildren();
$itemsPerSide = "REX_VALUE[1]";
$wordsPerArticle = "REX_VALUE[2]";
if (is_array($cats))
{
$i = 0;
foreach ($cats as $cat)
{
$i += 1;
if ($i <= $itemsPerSide)
{
if ($cat->isOnline())
{
$catId = $cat->getId();
$catName = $cat->getName();
$article = $cat->getArticles();
if (is_array($article))
{
foreach ($article as $var)
{
$articleId = $var->getId();
$articleName = $var->getName();
$art = new rex_article($articleId);
$articleContent = $art->getArticle();
$articleContent = trim($articleContent);
$articleContent = str_replace('</p>', ' </p>', $articleContent);
$articleContent = str_replace('<br />', ' <br />', $articleContent);
$articlePPath = $REX['MEDIAFOLDER'] . 'files/' . $var->getValue('file');
$output = '';
$words = explode(' ', $articleContent);
$wordsCount = count($words);
if ($wordsCount < $wordsPerArticle)
$wEnd = $wordsCount;
else
$wEnd = $wordsPerArticle;
for ($w = 0; $w < $wEnd; $w++)
{
$output .= $words[$w] . ' ';
}
$output = trim($output);
$isCloseParagraph = substr($output, -4);
$isCloseDiv = substr($output, -10);
$link = '<a href="' . rex_getUrl($articleId) . '" class="more"> ...mehr</a>';
$newString = $link . '</p>';
if ($isCloseParagraph == '</p>')
{
$output = substr_replace($output, $newString, -4);
}
elseif ($isCloseDiv == '</p></div>')
{
$output = substr_replace($output, $newString.'</div>', -10);
}
else
{
$output .= $newString;
}
// print '<h2>'.$articleName.'</h2>';
print '<div class="txt-img">' . $output . '</div>';
}
}
}
}
}
}
?>
we need a container html element which includes a parent for content+sidenav to ease the AJAX handling.
http://www.redaxo.org/de/forum/bugs-f31/kleiner-bug-im-meta-infos-addons-bei-rex4-3-3-t18079.html
Wenn man ein Legend-Tag anlegt, wird eine fehlerhafte Ausgabe erzeugt:
Code: Alles auswählen
<legend id="wgwrgre" ">wgwrgre</legend>
welche dazu führt, dass sich das layout im IE7/8 teilweise abschießt.
rex_i18n::msg() mit htmlspecialchars versehen und noch rex_i18n::rawMsg() einführen, für msgkeys die aktuell noch HTML enthalten.
BC break dokumentieren.
Bei dem Versuch ein Block zu löschen erhielt ich folgende Fehlermeldung:
[17-Dec-2011 22:26:50] PHP Fatal error: Call to undefined function rex_deleteSlice() in /Users/joachimdorr/Sites/redaxo/rex5/redaxo/src/addons/structure/plugins/content/pages/content.inc.php on line 302
Momentan ist die Strukturverwaltung ja so angelegt, dass nach 3 Kategorien die Pagination eingreift und somit die Kategorie Ansicht blätterbar wird. Legt man nun neue Kategorie Punkte an wird dieser mit Prio 4 versehen bzw. dieser erscheint dann an erster stelle der Letzten Seite.
R5 läuft nur mit PHP >= 5.3, mit niedrigeren Versionen kommt man nicht mal zur Setup page, vorher tritt schon ein Fatal Error auf.
Entweder muss man es so hinbiegen, dass man irgendwie doch bis zum regulären Versionscheck im Setup kommt, oder schon ganz oben im Code die Version überprüfen. Ersteres wäre natürlich schöner, wird aber glaube ich schwierig, weil schon sehr elementare Klassen PHP5.3-Features verwenden. Und die wieder umzubauen, wäre auch nicht so schön. Aber muss man sich noch mal anschauen, welche Stellen das genau wären.
tbaddade:
mp "bilder nachladen" hoch … klappt im safari nur nach dem man direkt scrollt. bei den ersten bildern bleibt das loading.gif wenn man nicht scrollt
Workarround von dave:
setTimeout(function(){
jQuery(window).trigger('scroll');
},200);
Im Im/Ex-AddOn haben sich noch ein paar alte API-Calls eingeschlichen, die es verhindern, die DB zu exportieren. Beim Versuch erhalte ich folgende Meldungen:
Should be an easy fix :-)
FYI: MySQL 5.5.19 on Win7
the newly added ajax-loader needs some styling
see a829a45.
markup may be moved in another fragment, no problem from javascript implementation side.
we should replace the "block add" selectbox with a prozer'like html/css dropdown.
this way we could also add filtering capabilities (a text field which filters the drop-down content while typing)
Beim dem Versucht, mit dem Import/Export Addon gespeicherte, SQL Datei zu importieren erhalte ich folgende Meldung:
Query was empty
Aber es werden keine Daten importiert. Die Strukturverwaltung, Templates und Module bleiben leer.
Ich hab mir also den Output der exportierten Datei angeschaut, da wird dann auch klar weswegen:
## Redaxo Database Dump Version 5
## Prefix rex_
## charset utf-8
DROP TABLE IF EXISTS `rex_action`;
;
Übrigens ist ein Export mit der Option die Datei herunter zu laden nicht möglich, folgender Error wird ausgegeben:
Notice: Undefined index: Create Table in /Users/joachimdorr/Sites/redaxo/rex5/redaxo/src/core/lib/sql.php on line 1130
Fatal error: Call to undefined method rex_sql::freeResult() in /Users/joachimdorr/Sites/redaxo/rex5/redaxo/src/addons/import_export/functions/function_import_export.inc.php on line 347
Es wird bei Verwendung der Syntax die im "Media Manager" vorgegeben ist nur eine leere Seite statt des resizten Bildes angezeigt; der Effekt der hier gesetzt wurde ist ein einfaches img-resize.
index.php?rex_media_type=gallery_overview&rex_media_file=screenshot_content_edit.png
Im "Artikelliste" Modul gab es auch noch das Problem , dass ->getDescription folgenden Error ergab:
Fatal error: Call to undefined method rex_ooArticle::getDescription() in rex://module/6/output on line 13
Ich hatte es dann durch folgenden Code ersetzt:
$articleDescription = $var->getValue("art_description");
Sollte in rex5 "getDescription" ganz entfallen sein, wäre ein Hinweis im Wiki angebracht.
Beim versuch die Demo für Rex5 fit zu machen ist mir aufgefallen, dass REX_TEMPLATE[id] und REX_ARTICLE[] im Frontend nicht weiter verarbeitet wird, es wird ausgeschrieben als wäre es ein einfacher bedeutungsloser Text der da stünde.
the current package object ($this in addon/plugin) should provide a shortcut to the asset/data folder.
$this->asset('myfile', $pathType)
$this->data('mykey')
the addon/plugin name/key could be provided by the object itself.
linkClass / itemClass added to a be_page object are not rendered to the navigation.
after fixing this issue we could add "pjax-main" classes to the main nav to utilize AJAX loading.
Mir ist eben beim neu installieren des neusten Masters aufgefallen, dass für die Metadaten keine Tabelle angelegt wird, ich muss das Addon re-installieren.
Beispiel Error der Metadaten im Medienpool:
Fatal error: Error while executing statement "SELECT * FROM rex_metainfo_params p, rex_metainfo_type t WHERE `p`.`type` = `t`.`id` AND `p`.`name` LIKE "med\_%" AND (`p`.`restrictions` = "" OR `p`.`restrictions` IS NULL OR `p`.`restrictions` LIKE "%|0|%") ORDER BY prior! SQLSTATE[42S02]: Base table or view not found: 1146 Table 'usrdb_kundeebm_rex5.rex_metainfo_params' doesn't exist in /home/kundeebm/redaxo.dev22.eu/redaxo/src/core/lib/sql.php on line 264
links with an onclick=return confirm() attributes (typically deleted links), do not cancel the AJAX request which deletes the data.
Die Import-Files der 4.3 Demo müssten durch die neu erstellten kompatiblen Dateien ersetzt werden: https://github.com/joachimdoerr/redaxo_demo
Es werden in der Medienpool Übersicht keine Mime-Pics angezeigt für nicht IMG Dateien:
Failed to load resource: the server responded with a status of 404 (Not Found)
Offensichtlich ist der Pfad nicht korrekt:
<img class="" src="media/mime-css.gif" longdesc="media/mime-css.gif" width="44" height="38" alt="" title="">
Ich hab folgenden Test gemacht: Bildmodule 2x angelegt um zu testen ob "set und getProperty" funktioniert. Beim Speichern bzw. Übernehmen erschien folgende Fehlermeldung:
Warning: you have to take care to provide escaped values for your where-string in file "/home/kundeebm/redaxo.dev22.eu/redaxo/src/addons/structure/plugins/content/pages/content.inc.php" on line 316! in /home/kundeebm/redaxo.dev22.eu/redaxo/src/core/lib/sql.php on line 395
Im Frontend wird das javascript nur beim ersten Block ausgegeben, so wie es sein sollte. Nur beim Speichern taucht der Fehler auf. Hier der Module Code:
<?php
// if is_prev_a_galery nothing get the javascript
if(rex::getProperty('is_prev_a_galery') == '')
{
?>
<script type="text/javascript">
var GB_ROOT_DIR = "<?php echo rex_path::media(); ?>";
</script>
<script type="text/javascript" src="<?php echo rex_path::media('ajs.js'); ?>"></script>
<script type="text/javascript" src="<?php echo rex_path::media('ajs_fx.js'); ?>"></script>
<script type="text/javascript" src="<?php echo rex_path::media('gb_scripts.js'); ?>"></script>
<link type="text/css" href="<?php echo rex_path::media('gb_styles.css'); ?>" rel="stylesheet" />
<?php
}
?>
<div class="galerie">
<?php
$pics_string = "REX_MEDIALIST[1]";
if($pics_string != '')
{
$i = 1;
$pics = explode(',',$pics_string);
foreach($pics as $pic)
{
echo '<div class="image">';
$title = '';
if ($file = rex_ooMedia::getMediaByFileName($pic)) $title = $file->getTitle();
echo '<a href="'.rex_path::media($pic).'" rel="gb_imageset[galerieREX_SLICE_ID]">
<img src="'.rex_path::frontendController().'?rex_img_type=gallery_overview&rex_img_file='.$pic.'" title="'.$title.'" alt="'.$title.'" /></a>';
echo '<p>'.$title.'</p>';
echo '</div>';
if($i % 2 == 0)
echo '<div class="clearer"></div>';
$i++;
}
}
// get info is_prev_a_galery is true
rex::setProperty('is_prev_a_galery','true');
?></div>
rex_request::castVar()
wird verwendet für das Casting der Globals (rex_get()
, rex_post()
etc.). Da gibt es diese speziellen rex-Typen wie rex-article-id, rex-category-id, rex-template-id etc. Diese gehören eigentlich in die entsprechenden Addons.
article, category und clang sind die einzigen, die überhaupt speziell casten, alle anderen (module, template, media etc.) casten bisher nur nach int.
Mein Vorschlag ist, diese rex-Typen komplett abzuschaffen, und nur noch die Standard-PHP-Typen zu unterschützen. Die weitere Validierung muss man dann selbst machen, die meisten Typen casten aber ja sowieso nur nach int.
Befindet man sich auf Seite 2 in der Strukturverwaltung und klickt nun das (+) um ein neuen Artikel oder eine neue Kategorie anzulegen, landet man auf Seite 1.
jeanc:
ich hab gestern mal probiert das gemodete pjax von him hier http://playground.meekostuff.net/jquery-pjax/demo/index.html @ r5 einzubaun, und dabei bin bei was ganz anderem hängengeblieben: ich kann mich nicht mehr einloggen.. user/pwd werden plötzlich nicht akzeptiert (ham sich aber nat. nicht geändert), und der screen sieht so aus: http://awesomescreenshot.com/0c84kyd8e
closeAll is not defined..
http://dl.dropbox.com/u/10220684/screenshots/screenshot%202012-04-30%20um%2010.58.05.PNG
In manchen Sprachdateien gibt es bereits als HTML kodierte Strings. Vor allem fällt das bei der türkischen auf, die im Backend als Türkçe angezeigt wird. Bei einigen Strings macht es Sinn, HTML zu erlauben, allerdings sollte das dann konsistent über alle Sprachdateien gleich sein. =) Beim Sprachnamen (zu sehen beim Bearbeiten eines Benutzers) kommt sonst wohl das von rex_select durchgführte htmlspecialchars() in die Quere.
Pluspunkte gibt's, wenn jemand vor dem R5-Release noch die unzähligen Fixes aus dem R4-Branch rüberzieht. Nur als Reminder, ich persönlich würde es garantiert vergessen ^.^
RFC / Request for comments. Ths issue is meant to discuss a feature which may be added in a future redaxo version...
The rex_navigation should be adjusted for easier use and a more convenient way to generate custom markup.
$navigation = new rex_navigation();
$navigation->ignoreOfflines(true);
$navigation->ignoreStartArticles(true);
foreach($navigation->getLevel($fromLevel, $toLevel) as $navElement)
{
$navElement interface:
getLevel(), returns the level as int
getPosition(bool $asNumeric) returns the position of the element within its level as string (first/last/1,2,3,4,...)
getGlobalPosition(bool $asNumefic) returns the position of the element within the whole structure as string (first/last/1,2,3,4,...)
hasChildren() returns true when the item has children, otherwise false
}
Die debug Ausgabe über Firephp findet immer statt, d.h. auch wenn man als User/Admin im backend ausgeloggt ist -> potentielles Sicherheitsrisiko, weil dadurch jeder der Firephp installiert hat die debug Ausgaben einsehen kann. Vorschlag:
Vor kurzem hat der Autoloader ja Unterstützung für Namespaces erfahren. =) Dabei werden korrekterweise explizit alle irrelevanten Tokens übergangen. Bei Klassennamen wird hingegen fest 2 Tokens weitergesprungen (obwohl es doch 3 Zeilen weiter oben richtig implementiert ist). Das führt dazu, dass der Autoloader Konstrukte wie
<?
class /* comment*/ blub { }
nicht erkennt. Der Algorithmus ist ja da, sollte sich leicht fixen lassen.
Github zeigt den Kommentar oben nicht richtig an, ein kurzer Test mit PHP 5.3.9 sprach aber dafür, dass Kommentare zwischen T_CLASS und T_STRING erlaubt sind. Aber zugegeben: Wer da Kommentare platziert.... na ja. ;)
(bitte als Feature labeln)
Um Redaxo mehr als Community-Projekt darzustellen, wäre es vielleicht ganz praktisch, die Error-eMail-Adresse nicht fest auf Jans Büro-Adresse festzulegen, sondern während des Setups dynamisch aus "info@" + Hostname ($_SERVER['SERVER_NAME']
) zusammenzusetzen.
Pro: Bei Fehlern würde eine sinnvolle Adresse angezeigt werden.
Contra: Agenturen, die Redaxo vorkonfektionieren (= die Angabe im YAML durch "error@agentur" ersetzen) müssten beim Installieren die dynamisch generierte Adresse wieder durch ihre Angabe ersetzen.
Nur mal so als in den Raum geworfene Idee. =)
Ich würde toImage momentan nicht nutzen, da diese noch auf den alten Resizer setzt und nicht auf den image_manager.
Automatische Größenanpassung erfolgt auf 100px.
Da kannste leider keinen eigenen Wert mitgeben.
Ich hab es ja schon mal angesprochen, ich schlage vor, dass wir die Sprachdateien als YAML formatieren und dadurch auch Verschachtelung ermöglichen.
Beispiel:
Aktuelle Sprachdatei des Installers:
install_name = Installer
install_no_plugins = Keine PlugIns aktiviert!
install_webservice_unreachable = Der Webservice ist zurzeit nicht erreichbar!
install_webservice_error = Der Webservice liefert folgende Fehlermeldung:
install_archive_unreachable = Die Zip-Datei ist nicht erreichbar!
install_settings = Einstellungen
install_settings_general = Allgemein
install_settings_backups = Backups erstellen
install_settings_myredaxo_account = myREDAXO-Account
install_settings_api_login = Nutzername
install_settings_api_key = API-Key
install_settings_saved = Einstellungen wurden gespeichert!
Diese würde dann so aussehen:
install:
name: Installer
no_plugins: Keine PlugIns aktiviert!
webservice:
unreachable: Der Webservice ist zurzeit nicht erreichbar!
error: Der Webservice liefert folgende Fehlermeldung:
archive_unreachable: Die Zip-Datei ist nicht erreichbar!
settings:
'': Einstellungen
general: Allgemein
backups: Backups erstellen
myredaxo_account: myREDAXO-Account
api_login: Nutzername
api_key: API-Key
saved: Einstellungen wurden gespeichert!
Beim Einlesen der Datei werden dann die Schlüssel wieder mit "_" zusammengesetzt.
Der Aufwand für die Umsetzung ist ziemlich gering, und aus meiner Sicht wäre das ein sehr nettes Feature.
RFC / Request for comments. Ths issue is meant to discuss a feature which may be added in a future redaxo version...
Rex-Var based validation means that you are able to validate user input using a Rex-Var itself instead of using Rex-Actions. This approach should only handle most common use-cases and is not meant to handle very complex scenarios.
New Rex-Var properties: (only for input vars)
"required", used to define that the Rex-Var is not allowed to be empty
"validate", validiate simple types (numeric, alpha, float, int,???)
"pattern", validate the input against a RegEx e.g. "\d.\d"
When validation of the user input of a var fails, the corresponding input will be rendered with an attached css class "invalid". A Slice will not be saved/updated until all validation passes.
Wenn man die Subpage über die Reiter oberhalb der page (nicht über die Navi links) wechselt, dann bleibt in der Navi die alte Subpage aktiv.
Beispiel:
Fehlerhafte URL vom REX-LOGO im Backend.
a class="rex-page-logo" href="../redaxoindex.php/" title=""/a
gharlan: teilweise erscheint als message "someting went wrong: timeout", teilweise bleibt die message dann, teilweise wird sie noch durch die richtige ersetzt
goal of this ticket:
Preparation:
we should backport all phpmailer changes from our repos into dergel/redax_phpmailer.
Affected addons:
Die confirm-Box bei den pjax links erscheint nicht, die Aktion wird stattdessen ohne Bestätigung sofort ausgelöst.
Getestet mit FF11, beim Artikel löschen und AddOn deinstallieren.
Im Medienpool ist es ist nicht möglich Medien in andere Kategorien zu verschieben. Es wird in der Selectbox nur "Keine Kategorie" aufgeführt. Unter "Medienkategorie auswählen" werden hingegen alle Kategorien korrekt aufgelistet.
gharlan: wenn man eine aktion zu einem addon ausführt, wird die message beim addon und bei allen plugins zu dem addon angezeigt
bring symfony1 caching classes into redaxo
refactor rex_config, rex_autoloader, article/template/media/installer/clang-cache to use the new cache classes.
add sfFunctionCache to rex_category_select to boost render performance on big structured pages.
rex_formatter
kennt die beiden speziellen rex-Typen rexmedia und rexurl. Diese sind eigentlich Addonspezifisch.
Ich würde vorschlagen, beide Typen zu streichen. Ich glaube nicht, dass die viel verwendet werden.
Die Selectbox für die Backend-Startseite in den Benutzereinstellungen wird nicht mit allen möglichen Pages gefüllt.
Die Elementklassen zu media(list) und link(list) liegen noch im Core, gehören aber eigentlich in die Addons.
Die rex_form hat die Methoden addMedia(list)Field()
und addLink(list)Field()
, die sind somit eigentlich auch Addonspezifisch.
Wie lösen wir das am besten?
Mir fallen im Momemt drei Varianten ein:
$form->addField(new rex_form_widget_media_element(...))
. Dann müsste der Core nix von den Klassen wissen.Ich tendiere im Moment zu Variante 2, ist denke ich die sauberste Lösung. Die 1. und 3. hätten aber als Vorteil, dass sich in der Nutzung der rex_form nichts ändern würde. Die 3. ist mir aber zu magic, und die 1. ein fauler Kompromiss.
Gharlan: auf der addon page werden bei den plugins keine messages angezeigt (nach inst./aktivieren etc),
Wenn ich versuche, in der aktuellen Version (a505cfc) einen Datei-Export durchzuführen (in dem nur das assets-Verzeichnis enthalten ist), zeigt mir das Backend danach scheinbar den Export als Binärstring an (das tar-Archiv wird trotzdem korrekt erzeugt).
Scheint in Zeile 82 der addons/import_export/pages/export.php durch die doppelte Verwendung der $content-Variable hervorgerufen zu werden:
$content = rex_a1_export_files($EXPDIR);
// later ...
$content .= '
<h3 class="rex-hl2">'.rex_i18n::msg('im_export_export').'</h3>
....';
Mir ist aufgefallen dass die Syntax im Beispiel nicht ganz korrekt, wollte deswegen jetzt nicht Forken.
if(rex_addon::isAvailable("textile"))
müsste zu
if(rex_addon::get("textile")->isAvailable())
geändert werden.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.