bezahlte Downloads anbieten
Bei der Joomla Erweiterung DOCman habe ich die Möglichkeit vermisst sich Downloads bezahlen zu lassen.
Hier also ein kleines Plugin für DOCman mit dem dieser Mangel behoben wird.
- Es können für jedes Dokument eigene Preise und eigenen Steuern angegeben werden.
- Steuern können in % oder in ganzen Werten angegeben werden
- Preise können mit oder ohne Steuern berechnet bzw. angezeigt werden
- Es können flexible Preise angeben werden. d.h. der Kunde entscheidet wie viel er zahlen will.
Joomla Dropbox Plugin mit Ajax
In der aktuellen Version (0.9) des Dropbox Plugins für Joomla werden die Bilder (pic und gallery Funktion) asyncron per Ajax geladen. Das beschleunigt den Seitenaufbau, weil jetzt nicht mehr gewartet werden muss bis alle Bilder geladen sind.
Ein Experiment
Ich habe eine neue Version des Joomla Dropbox Plugins online gestellt
Diese Version hat einige interessante Neuerungen:
- die Bilder werden nach dem Download von dropbox zwischengespeichert und nur erneut runtergeladen, wenn sie bei Dropbox geändert wurden, das beschleunigt die „gallery“ und die „pic“ Funktion
- ein ganzes Verzeichnis kann als ZIP-Datei runtergeladen werden
- einige Icons werden angezeigt
- die Dateigröße wird angezeigt
- bei der Anzeige von einzelnen Bilder kann eine Bildüberschrift angegeben werden
- die Verzeichnisnavigation ist verbessert woden
- besserer Umgang mit Sonderzeichen in Datei- und Verzeichnisnamen
- Fehlerbehebung: lange Datei und Verzeichnisnamen werden korrekt dargestellt
- einige kleine Fehler wurden behoben
- etwas mehr Hilfe und Dokumentation
Da ich aber Geld verdienen muss starte ich mit dieser Version ein Experiment. Das Plugin muss bezahlt werden, aber jeder darf selber entscheiden wie viel es wert ist. Wenn du min 1EUR zahlst kannst du die neue Version runterladen.
Joomla Dropbox Plugin mit neuer Funktion
Ich habe Zeit gefunden an dem Dropbox Plugin weiter zu arbeiten.
In der Version 0.7 ist es mögliche, einzelne Bilder anzuzeigen. Für die Anzeige wird Enlarge It 1.1 verwendet.
Ausserdem gibt es eine Schwedische Übersetzung, mehr übersetze Texte, eine bessere Fehleranzeige und ein paar Kleinigkeiten mehr.
Also testen und bei Gefallen abstimmen.
Bei Problemen gibt es hier ein Support-Forum
Joomla Dropbox Plugin mit Galery Option
Die neueste Version des Dropbox Plugins kann jetzt ein Dropbox Verzeichnis als Galerie anzeigen. Dazu habe ich die Very Simple Image Gallery von http://www.bretteleben.de verwendet.
Zusätzlich wurden deutsche und englische Sprachdateien hinzugefügt.
Everntlist Plugin mit neuer Funktion
Bei der neuen Version des Joomla Eventlist Plugins können jetzt alle Termine eines Ortes angezeigt werden
Neue Version des Eventlist Plugins
Ein paar Bugs entfernt: Eventlist Plugin
Preview auf die nächste Version des Joomla Dropbox Plugins
Hier könnt ihr die nächste Version des Joomla Dropbox Plugins sehen: http://www.individual-it.net/Dropbox-Plugin-Demo-Seite-Preview-next-version.html
Diese Version hat eine Galerie Funktion, damit werde alle Bilder im Verzeichnis in einer einfachen Galerie angezeigt.
Für Anregungen und Feedback wäre ich dankbar: Dropbox Forum
Joomla Community Builder Multipage Registration
Wie bereits angekündigt möchte ich nun beschreiben wie es möglich ist mit Community Builder eine Registration einzurichten, die sich über mehrere Seiten erstreckt.
Einige Grundlegende Sachen
- Gleich zum Anfang eine Warnung: dies ist keine Out-of-the-box Lösung, sondern ein Hack.
- Ich versehe alle Änderungen mit Kommentaren um diese wieder zu finden, natürlich können diese enfernt oder weggelassen werden
- Ich übernehme natürlich keine Garantie für die Funktion, also erst mal BACKUP machen
- die Lösung funktioniert nicht ohne Javascript
- bei einer anderen CB Version als 1.2.1 kann alles ganz anders aussehen
Kommen wir nun zum Ablauf
- Zunächst installiert man normal die CB Komponente und das CB Login Modul. Ich benutze jeweils die aktuelle Version 1.2.1
- im „CB Tab Manager“ werden nun die Tabs angelegt die bei der Registration angezeigt werden sollen.
- mit „Registration ordering“ die Reihenfolge festlegen
- „Position“: Main area
- „Display type“ Tabbed pane
- der nächste Schritt ist immer noch nicht ungewöhnlich: im „CB Field Manager“ die gewünschten Felder anlegen
- Jetzt gehts los mit hacken in der Datei: components/com_comprofiler/comprofiler.html.php diese Zeile suchen:
$tabcontent = $tabs->getEditTabs( $user, $postvars, $output, 'tabletrs', 'register', false );
diese Zeile muss ersetzt werden durch:
//Versuche einer Multipage Registration //die Registration als divs anzeigen $tabcontent = $tabs->getEditTabs( $user, $postvars, $output, 'divs', 'register', true );
- In die Datei: components/com_comprofiler/plugin/templates/default/default.php kommt ab Zeile 222 dieser Code
<!-- www.individual-it.net 22.10.2009 Versuche einer Multipage Registration Javascript zur Ausblendung bzw. Einblendung der aktullen cbtab --> <script type="text/javascript"> function validate_and_switch_page(thisid,direction) { var nextid; for(i = 0; i < CBdivsAry.length; i++) { if (CBdivsAry[i] == thisid && direction=="forward") nextid=CBdivsAry[i+1]; if (CBdivsAry[i] == thisid && direction=="backward") nextid=CBdivsAry[i-1]; } allOK=true; var oldclassName; $A(document.getElementById("cbcheckedadminForm").elements).each(function(el) { el = $(el); if ((el.getTag() == 'input' || el.getTag() == 'select' ) && el.className.match("required") != null) { //validate just this page if (el.parentNode.parentNode.parentNode.parentNode.parentNode.id == thisid) { if (el.value.length<=0 || (el.getTag() == 'select' && el.value=='---') ) { thisOK=false; if (el.className.match("invalid") == null) el.className = el.className + " invalid"; } else { thisOK=true; oldclassName=el.className; el.className = oldclassName.replace(/invalid/g,""); } if (allOK && thisOK) allOK=true; else allOK=false; } } }); if (allOK) //if (true) { //auf der letzten seite ein "Submit" senden if (thisid==CBdivsAry[(CBdivsAry.length-1)] && direction=="forward") { document.getElementById("cbcheckedadminForm").submit(); } else { document.getElementById(thisid).style.display="none"; document.getElementById(nextid).style.display="block"; } //Back Button nicht auf der ersten Seite anzeigen if (nextid==CBdivsAry[0]) { document.getElementById("Back").style.display="none"; } else { document.getElementById("Back").style.display="block"; } } } </script>
- In der gleichen Datei diese Zeilen suchen:
// outputs all tabs, including contact tab and Terms & Conditions: echo $this->tabcontent; // outputs conclusion text and different default values:
diese Zeilen müssen gelöscht und einige Zeilen höher wieder eingefügt werden.
und zwar oberhalb von:?> <table id="registrationTable">
der ganze Abschnitt muss danach so aussehen:
<?php if ( $this->topIcons ) { echo '<div id="cbIconsTop">'; echo $this->topIcons; echo '</div>'; } echo $this->regFormTag; // '<form...>' // outputs all tabs, including contact tab and Terms & Conditions: echo $this->tabcontent; // outputs conclusion text and different default values: ?> <table id="registrationTable"> <?php if ( $this->introMessage && ( ! $this->moduleContent ) ) { ?> <tr> <td colspan="2"><?php echo $this->introMessage; ?></td> </tr> <?php } ?> <tr>
- Jetzt noch ein wenig CSS. In die Datei: components/com_comprofiler/plugin/templates/default/template.css dieses am Ende einfügen:
/*Artur Neumann www.individual-it.net 23.10.2010 der Versuch einer Multipage Registration registration table nicht anzeigen */ table#registrationTable { display:none; width:98%; border-width: 0px; border-collapse: collapse; margin: 0px; padding: 0px; }
- Jetz muss noch die CB Klasse angepasst werden. In der Datei administrator/components/com_comprofiler/comprofiler.class.php diese Zeile suchen:
function endPane( ) {
in diese Funktion, also zwischen { und } kommt ein wenig Javascript:
//Artur Neumann //info@individual-it.net //22.10.2009 //Versuche einer Multipage Registration //alle Tabs, bis auf das erste auf display:none setzen return ' <script type="text/javascript"> var liste = document.getElementById("CB"); var first=0; var CBdivsAry; listElements = liste.getElementsByTagName("div"); CBdivsAry = new Array(); for(var i = 0; i < listElements.length; i++) { if (listElements[i].id.search (/^cbtab\d+/)!=-1) { CBdivsAry.push( listElements[i].id ); if (first == 0) first=1; else document.getElementById(listElements[i].id).style.display="none"; } } //auf der ersten Seite kein Back Button anzeigen document.getElementById("Back").style.display="none"; </script> </div>';
- Und noch ein mal die gleiche Datei (administrator/components/com_comprofiler/comprofiler.class.php)
Suche die Zeile:function endTab( ) {
und füge hier wieder zwischen { und } diesen Code:
//Artur Neumann //info@individual-it.net //22.10.2009 //Versuche einer Multipage Registration //Vor und zurück Buttons anzeigen (nur beim registrieren) if ($_GET['task']=='registers') { return ' <input type="button" id="Back" value="Back to previous Step" onclick="validate_and_switch_page(this.parentNode.id,\'backward\');"> <input type="button" id="Proceed" value="Proceed" onclick="validate_and_switch_page(this.parentNode.id,\'forward\');"> </div>'; } else return '</div>';
Wenn man sich jetzt über das CB Login Modul registriert müsste ein mehrseitiges Formular erscheinen. Würde mich über Feedback freuen.