Hallo,
ich erkläre euch heute, was IV CMS4 ist.
IV CMS4 ist ein CMS, das in PHP aufgebaut ist.
Es hat ein ADmin bereich, der sehr übersichtlicht ist und es ist kinderleicht ein Design im cms einzubauen.
Wie Installiere ich IV CMS4
Nachdem ich in der ersten Anleitung nur die einzelnen Module beschreiben habe, beschreibe ich hier nun den weg vom Download bis zur fertigen Seite.
Schritt eins - das Downloaden
Ja, auch das sollte man erklären, denn es gibt immer wieder neue Versionen. Download link:
[Only registered and activated users can see links. Click Here To Register...]
(download von der Offizellen Seite)
Nachdem Downloaden müsst ihr das CMS entpacken und dann auf eueren Server hochladen. Nun musst du den Ordner uploads noch erstellen und diesem sowie dem Ordner files die Rechte 777 geben.
Schritt zwei - Installation vorbereiten
Um bei der Installation zügig vorankommen zu können benötigst du folgende Daten:
- Datenbank host ( Meist localhost )
- Datenbank name ( ggf. eine Datenbank zuerst erstellen )
- Datenbank nutzer
- Datenbank passwort
Wenn du bei alle diesen Punkten die benötigten Daten hast, kannst du zu Schritt drei.
Schritt drei - die Installation
Rufe die Installationsdatei auf. DeineDomain.de/ZumCMS/install/
Nun kannst du dort alle Felder ausfüllen. Bei Prefix solltest du einen Prefix eintragen. Ein Prefix ist eine zeichenkombination, welche vor den eigentlichen Tabellen Namen geschrieben wird. Dies ermöglicht mehrfachenutzung eines IVs innerhalb einer Datenbank.
Nun musst du nurnoch auf Installieren klicken und das CMS ist fast fertig.
Schritt vier - das Arbeiten vorbereiten
Logge dich nun in das CMS ein DeineDomain.de/ZumCMS/admin.php z.Z. wird kein Capchter Code benötigt.
Gehe nun zu deinen Profieleinstellungen ( Allgemein->Profil ). Hier musst du nun unter "Einstellungen ändern" einen Syntaxeditor wählen und dann auf speichern klicken.
Schritt fünf - Desgin vorbereiten
Nun muss das Design noch vorbereitet werden.
Ein Design besteht meist aus 2 Teilen:
1. Dem Hintergrund auf dem die Boxen sitzen -> Layer
2. Die eigentlichen Boxen -> Panel
Den ersten Schritt, den ihr mit euerem Template nun durchführen müsst, ist die Panels vom Layer zu trennen. Diesen Schritt kann man nun leider nicht genau Beschreiben, da dies bei jedem Template anders ist.
Um sich die Arbeit leichter zu machen, fügt man, nachdem man die "Box" vom Template entfernt hat einen Platzhalter ein.
Platzhalter {WUNSCHNAME}
Um ein Template richtig vorbereiten zu können, sollte man sich mit diesem auskennen. Man sollte nach dem Bearbeiten also nicht Platzhalter haben wie {NAVIGATION}, {WUSSTEST-DU-SCHON}, {WERBUNG}
Sondern {LINKS}.
Hier fügt man nun alle Panels nacheinander ein, man benötigt nicht für jedes einen Platzhalter.
Schritt sechs - Desgin ins CMS einbaun
Als erstes erstellen wir einen Style. Dies können wir unter Content Verwaltung -> Templates machen. Nennen wir diesen Style 1. Nun wählen wir diesen Links aus und klicken auf Layertemplates. Dort erstellen wir ein neues Template und nennen dies Haupttemplate. Hier fügen wir nun den Code ein, der mit den Platzhaltern.
Nun klicke noch auf Speichern. Danach gehe auf Paneltemplates und erstelle dort Templates wie Boxen, Content usw. Füge auch dort den enstsprechenden Code ein.
In einem Paneltemplate stehen dir folgende Platzhalter zur verfügung:
* {TITLE} Wird durch den Titel des Panels ersetzt
* {BODY} Wird durch den Inhalt des Panels erstzt
Schritt sieben - Platzhalter verfügbar machen
Nun fügen wir unter Content Verwaltung -> Panelsgroups noch die entsprechenden Platzhalter ein. Unter Name gibst du dem Platzhalter einen beliebigen Namen. Dieser begegnet dir im ganzen CMS immer wieder, wähle diesen also eindeutig. Unter Platzhalter fügst du den Platzhalter ein, wie dieser auf dem Layertemplate steht, nur ohne {}.
Nun sind wid wir der eigenen Seite schon sehr nahe.
Schritt acht - der "Hello World" Content
Nun sind wir soweit. Bei jeder Programmiersprache schreibt man am anfang das "Hello World" Programm, was nichts anderes kann als Hello World auszugeben. Da wir hier aber keine Programmiersprache lernen, und auch nicht nur Hello World sehen wollen, führen wir dies erst jetzt durch.
Gehe unter Content Verwaltung -> Content Manager auf Layer erstellen. Gebe diesem den Namen "Startseite". Erstelle nun ein Panel, direkt darunter und nenne dieses "Hello World - Panel". Wähle bei Panelgroup, die, die für den Content gedacht ist, und bei dem Paneltemplate auch dies, das für den Content gedacht ist.
Klicke nun auf Inhalt bearbeiten, und schreibe "Hello World" hinen und klicke auf Speichern, danach auf Abbrechen. Nun wähle oben bei den Optionen Startseite aus.
Rufe nun die index.php auf, dort sollte nun dein Hello World stehen, wenn nicht hast du etwas falsch gemacht. Gehe in diesem Fall die Anleitung nochmals durch.
Usermodifikationen - Was ist das?
Usermodifikationen sind "Addon´s" für euer CMS.
Es gibt verschiedene dazu.
Zum Beispiel: News System, Grußbox, Bann System oder Dj Sagt (Shoutbox system)
Bann System
So, kann schnell gemacht:
SQL Querys: (Präfix anpassen)
Quote:
CREATE TABLE IF NOT EXISTS `iv_user_banned` (
`reason` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`id` int(255) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDb DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
|
Developer Tools> Dateiverwaltung >
Neues Modul
Rechte Verwaltung: Haken
Name: Bannsystem
$adminstyle->grid_start( "100%" );
$ban_tableinfo = new table_info( $prefix."user_banned" );
$ban_tableinfo->add( "id", "id", 1, "text" );
$ban_tableinfo->add( "name", "Name", 15, "text" );
$ban_tableinfo->add( "reason", "Grund", 15, "text" );
$ban_record_controller = new record_controller( $ban_tableinfo );
$ban_record_controller->write_form_box( "Bann", MODUL_SELF );
$ban_record_controller->write_list_box( "Banns" );
$adminstyle->grid_end();
PHP-Panel erstellen auf der Hauptseite: (Bisher noch nciht herausgefunden wie man die $userdata Klassen auch per include verwenden kann...)
$res = $db->get( $prefix."user_banned", "id >= 0 AND name = '$userdata[name]'" );
foreach( $res as $row ) {
echo "Du wurdest gebannt. Der Grund lautet: ".$row['reason']."";
session_destroy();
die;
}
Optional:
DeveloperTools > Menüverwaltung und ein Menü erstellen.
IV4 DJ-sagt Modul V1.0
Hi Leute,
da inzwichen fast täglich neue Webradios entstehen, habe ich mich entschieden mein DJ-sagt Modul für IV4 zu veröffentlichen.
Okay als erstes müssen 2 SQL codes ausgeführt werden(Bitte darauf achten das ihr das "cms_" durch euer Prefix ersetzt):
CREATE TABLE `cms_dj_sagt` (
`id` int(1) NOT NULL,
`text` longtext,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
und
INSERT INTO `hr_dj_sagt` (`id`, `text`) VALUES
(1, '');
So jetzt geht ihr zu Developer Tools->Dateiverwaltung und erstellt folgende Datei:
Dateiname: DJ-sagt Modul
Dateityp: Modul
Admin einbinden: Kein Hacken
Index einbinden: Kein Hacken
Interface einbinden: Kein Hacken
Rechtesystem: Hacken
So jetzt sucht ihr in der Dateiliste die Datei "DJ-sagt Modul" und in der Spalte "Aktionen" wählt ihr das erste Symbol von rechts aus.
$adminstyle->msgbox( '<font color=red><b>WICHTIG:</b></font> Wenn ihr mit eurer Sendung fertig seit, bitte auf "DJ-Sagt ausschalten" klicken. ' );
if ($_POST['setoff'] == 'off') {
$db->query('UPDATE '.$prefix.'dj_sagt Set text = ""');
}
if ($_POST['sagt'] != '') {
$text = $_POST['sagt'];
$db->query('UPDATE '.$prefix.'dj_sagt Set text = "'.$text.'"');
}
$adminstyle->cbox_auf('DJ-sagt');
$abfrage = $db->fetch_query('SELECT * FROM '.$prefix.'dj_sagt');
$mom = $abfrage[0]['text'];
echo 'Der DJ sagt <form action="" method="post"><input type="text" name="sagt" value="'.$mom.'" width="500"><br>
<input type="submit" value="sagen!"></form>
<form action="" method="post"><input type="hidden" name="setoff" value="off"><br>
<input type="submit" value="DJ-Sagt ausschalten!"></form>';
$adminstyle->cbox_zu();
So jetzt geht ihr wieder zu Developer Tools->Dateiverwaltung und erstellt folgende Datei:
Dateiname: DJ-sagt Panel
Dateityp: Script
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Hacken
So jetzt sucht ihr in der Dateiliste die Datei "DJ-sagt Panel" und in der Spalte "Aktionen" wählt ihr das erste Symbol von rechts aus.
Da schreibt ihr nun folgendes rein:
$abfrage = $db->fetch_query('SELECT * FROM '.$prefix.'dj_sagt');
if($abfrage[0]['text'] != '') {
$text = $abfrage[0]['text'];
echo '<marquee><b><font color="red">Der DJ sagt:</font> '.htmlspecialchars($text).'</b></marquee>';
}
if($abfrage[0]['text'] == '') {
$text = '<font color="red">Das DJ-sagt Modul ist momentan auf Offline gestellt.</font>';
echo '<marquee><b>'.$text.'</b></marquee>';
}
So jetzt geht ihr wieder zu Developer Tools->Scriptverwaltung und erstellt folgenden Script:
Name: DJ-sagt
Script-Datei: DJ-sagt Panel
Editor-Datei: Kein Editor
Und zu guter letzt gehen wir zu Developer Tools->Menüverwaltung und klicken Links auf Allgemein. Jetzt legt ihr folgendes Menü an:
Name: DJ-sagt
Icon: world.png
Datei: DJ-sagt Modul
Jetzt seit ihr fertig. Viel Spaß ;)
IV4 - RSS Feed Offizielles Newsystem V. 0.1
Allgemeines
So, nach langem Tüfteln habe ich nun mein erstes grösseres PHP-Projekt beendet und biete ihn nun an.
Bei Fragen kann man mir eine PN zukommen lassen oder dirket im Thread fragen.
Update
Aktuelle Version: 0.1
Behebung eines Fehlers im Grundsystem (Danke an Claudio)
Installation
Installation | Downloadverzeichniss
Logge dich auf deinem FTP-Server mir deinen FTP-Daten ein.
Nun legst du im selben Verzeichniss wo sich das IV4-System befindet
ein Verzeichniss an mir dem Namen "downloads". (Ohne Klammer!)
Gib diesem Ordner per CHMOD die Rechte 777.
Installation | Downloadmanager
Erstellen der Moduldatei in "Developer Tools -> Dateiverwaltung"
Code:
Dateiname: Downloadmanager
Dateityp: Module
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Haken
Nun füllen wir die Moduldatei mit Inhalt:
PHP Code:
$adminstyle->cbox_auf('Downloadmanager');
$adminstyle->cbox_auf('Upload');
$maxsize = 100000000000000000000000; // Maximal Dateigrösse
$path_for_uploads = 'downloads/';
$filetypes = array(
'.rar',
'.zip',
'.php',
'.html',
'.txt'
);
if(!empty( $_FILES )) {
$loglines = array();
foreach( $_FILES as $fupload ) {
if( !empty( $fupload['tmp_name'] )) {
if( $fupload['size'] <= $maxsize ) {
$extension = strtolower( strrchr( $fupload['name'], "." ));
if( in_array($extension, $filetypes) ) {
if( move_uploaded_file( $fupload['tmp_name'], $path_for_uploads.str_replace($extension, '', $fupload['name']).$extension )) {
$loglines[] = htmlspecialchars( $fupload['name']." wurde erfolgreich hochgeladen!" );
} else {
$loglines[] = htmlspecialchars( $fupload['name']." konnte nicht übertragen werden!" );
}
} else $loglines[] = htmlspecialchars( $fupload['name']." konnte nicht hochgeladen werden, da der Dateityp '".$fupload['type']."' unzulässig ist!" );
} else $loglines[] =htmlspecialchars( $fupload['name']." konnte nicht hochgeladen werden, da die maximale Dateigröße von ".$maxsize." Byte überschritten wurde!" );
}
}
echo '<p align="center">'.implode( '</p><p align="center">', $loglines ).'</p>';
} else {
$form = new form( MODUL_SELF );
$form->upload = true;
$form->add( 'file', 'Datei', '', 'file' );
$form->write( 'Upload starten' );
}
$adminstyle->cbox_zu();
$adminstyle->cbox_auf('Downloaddateien Übersicht');
function listFiles($dir="/downloads",$type= array(
'.rar',
'.zip',
'.php',
'.html',
'.txt'
) )
{
$x = 0;
foreach (@glob($dir."*.".$type) as $filename)
{
$dwlf[$x]['file'] = $filename;
$dwlf[$x]['size'] = filesize($filename) / 1024;
$dwlf[$x]['time'] = filemtime($filename);
$x++;
}
return @$dwlf;
}
$loadfile = listFiles("downloads/","zip", "rar", "php", "html", "txt");
$adminstyle->cbox_auf('Dateien');
for($x=0;$x<count($loadfile);$x++)
{
$file = $loadfile[$x]['file'];
$size = number_format($loadfile[$x]['size'], 1, ',', '.');
$date = date("d.m.Y, H:i:s", $loadfile[$x]['time']);
echo '<a href="'.$file.'">'.$file.'</a>'; echo "<br>";
echo ' Größe: ' . $size . ' KB - '; echo "<br>";
echo 'Letzte Änderung: ' . $date . ')';
echo '<br><br>';
}
$adminstyle->cbox_zu();
$adminstyle->cbox_zu();
$adminstyle->cbox_zu();
Installation | Menüpunkt
Erstellen des Menüpunktes in Developer Tools -> Menüverwaltung unter dem Menüpunkt "Administration"
Code:
Name: Download Manager
Icon: page_code.png
Datei: Downloadmanager
Changelog
Code:
26.05.2009 | Version: 0.1 Beta | Grundsystem fertig gestellt, danke an Cogax fürs testen und drüberschauen
Code:
19.09.2009 | Version: 0.1 Beta | Behebung eines Fehlers im Skript.
Geplante Änderungen
Code:
Version 1.0 | Implementierung eines Download-Panels. Mithilfe dieses Panels werden die Dateien zum Download bereit gestellt.
IV4 - Simple Volltextsuche V 0.2 [UPDATED]
Hier mal mein PHP-Panel für eine simple Volltextsuche im IV-CMS 4
Code:
Features
- Volltextsuche
- Links zu Layern inklusive Namen
- JavaScript um Automatisch den Fokus auf das Formular zu setzen
- vvm.
- Unter Entwicklung -> Wünsche werden umgesetzt (Falls erfüllbar)
Code:
Changelog
[19.06.2009] Grundfunktionen sind fertig gestellt.
[20.06.2009] Zusätzlich zum Link sieht man nun auch eine Vorschau!
[20.06.2009] Kleinere Bugfixes. Danke an WitKin!
PHP Code:
//Ausgabe des Formulars
echo '<form action="index.php" method="get">';
echo ' <input type="hidden" name="page" value="'.htmlspecialchars($_GET['page'], ENT_QUOTES).'" />';
echo ' <input type="text" name="suche" value="'.htmlspecialchars($_GET['suche'], ENT_QUOTES).'" />';
echo ' <input type="submit" value="Suchen" />';
echo '</form>';
//Beim laden immer Fokus aufs Formular setzen
echo '<script type="text/javascript"> document.getElementsByName("suche")[0].focus(); </script>';
//Wenn noch keine Eingabe erfolgt ist Einleitung ausgeben
if(!isset($_GET['suche']))
echo '<p>Um '.$conf['page']['name'].' zu durchsuchen, steht dir die Suche zur Verfügung. Als Wildcard dient *.</p>';
//Wenn gesucht wurde, jedoch ohne eine Eingabe
if(isset($_GET['suche']) && empty($_GET['suche']))
echo '<p>Wer nach Nichts sucht, der findet auch Nichts!</p>';
//Wenn die Suche weniger als 3 Zeichen hat Suche abbrechen
if($_GET['suche'][3]=='' && isset($_GET['suche']))
echo '<p>Dein Suchwort sollte aus mehr als 3 Zeichen bestehen!</p>';
//Wenn gesucht wird, die Suche nicht leer ist und mehr als 3 Zeichen hat
if(isset($_GET['suche']) && !empty($_GET['suche']) && $_GET['suche'][3]!=''){
//Suche in content_variable nach dem Suchwort, führe auf Panel zurück, führe auf Layer zurück, gebe id, name und value zurück.
$results = $db->fetch_query("SELECT l.id, l.name, v.value FROM ".$prefix."content_variable v " .
"LEFT JOIN ".$prefix."content_panel p ON (v.panel = p.id) " .
"LEFT JOIN ".$prefix."content_layer l ON (p.layer = l.id) " .
"WHERE v.value LIKE '%".str_replace("*", "%", $_GET['suche'])."%' " .
"AND p.status = 0 AND l.status = 0 LIMIT 30");
//Wenn exakt 30 zurückgegeben werden, so ist es hoch wahrscheinlich, dass es noch mehr gibt
if(count($results)==30)
echo '<p>Deine Such ergab zu viele Treffer. Konkretisiere sie!</p>';
//Wenn es keine Ergebnisse gibt sind wird natürlich traurig
if(!count($results))
echo '<p>Leider ergab deine Suche keine Treffer. Konkretisiere sie, oder nutze den Wildcard *.</p>';
//Andernfalls folgt eine ausgabe
else{
foreach($results as $data){
//Wenn ein Wildcard gesetzt ist, so müssen wir erstmal das ganze Wort herausfinden
if(strpos($_GET['suche'], '*')!==false){
preg_match('~'.str_replace('*', '.*?', $_GET['suche']).'~i', $data['value'], $word);
//Hier setzen wir das gefundene Wort auf den Wert vom Get-Parameter "suche"
$_GET['suche'] = $word[0];
}
//Berechnung der Stelle an der gefunden wurde
$foundat = stripos($data['value'], $_GET['suche']);
//Wenn die Textstelle größer als 30 ist, wählen wir ein Offset, damit das gesuchte Wort im Kontext steht. Ansonsten ist der Textanfang die beste Lösung
if($foundat>30) $foundat = $foundat-30; else $foundat = 0;
//Wenn wir ein Offset wählen machen wir dies durch Punkte sichtbar
if($foundat!=0) $add = '...'; else $add = '';
//Das Suchwort machen wir fett
$textausschnitt = str_replace($_GET['suche'], '<b>'.$_GET['suche'].'</b>', substr(strip_tags($data['value']), $foundat, 75));
//Sollten wir Anzeichen von PHP finden geben wir den String aus Code-Schutz-Gründen nicht aus.
if(eregi("'", $textausschnitt) || eregi('\$', $textausschnitt)) $textausschnitt = 'Keine Volltextvorschau verfügbar.';
//Die Suchergebnisse fassen wir in ein Array zusammen um sie schön trennen zu können
$output[] = '<p><a href="index.php?page='.$data['id'].'">'.$data['name'].'</a><br />' .
$add . $textausschnitt .'...</p>';
}
//Eine klare Ausgabe der Ergebnisse
echo '<p>Deine Suche ergab die folgenden Ergebnisse:<br />'.implode("<br />", $output).'</p>';
}
}
Users Online
Hallo hier gebe ich euch ein funktionsdüchtiges User Online mit hilfe von Kekub der mir geholfen hat. Das Script zeigt welche Users online sind.
Finde in index.php
PHP Code:
// Template ermitteln
und füge davor ein:
PHP Code:
// User Online updaten
if(getenv("HTTP_X_FORWARDED_FOR"))
$buser_ip = getenv("HTTP_X_FORWARDED_FOR");
else
$buser_ip = $_SERVER['REMOTE_ADDR'];
$last_active_uodel = time()-120;
$user_online = $db->del($prefix."user_online", "`lastactive` < '".$last_active_uodel."'");
$res_uoexist = $db->get($prefix."user_online", "`ip` = '".$buser_ip."'", 1);
if(is_array($res_uoexist))
$res_uo_write = $db->update($prefix."user_online", array("lastactive"=>time()), "`id` = '".$res_uoexist['id']."'");
else
$res_uo_write = $db->insert($prefix."user_online", array("ip"=>$buser_ip, "lastactive"=>time()));
PHP-Script:
PHP Code:
$res = $db->get($prefix."user_online");
foreach($res as $key => $row) {
$res_u = $db->get($prefix."user_data", "`last_ip` = '".$row['ip']."'", 1);
if(count($res_u) && !empty($res_u['name']))
$user_online[] = $res_u['name'];
}
if(count($user_online))
echo 'Users online: '.implode(", ", $user_online);
else
echo 'Keine User online.';
PHP-Script mit Userlist verlinkung:
PHP Code:
$res = $db->get($prefix."user_online");
foreach($res as $key => $row) {
$res_u = $db->get($prefix."user_data", "`last_ip` = '".$row['ip']."'", 1);
if(count($res_u) && !empty($res_u['name']))
$user_online[] = "<a href=\"?page=USERLIST&id=".$res_u['id']."\">".$res_u['name']."</a>";
}
if(count($user_online))
echo 'Users online: '.implode(", ", $user_online);
else
echo 'Keine User online.';
Datenbank (Eure Prefix eintragen statt iv):
PHP Code:
CREATE TABLE `iv_user_online` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(60) NOT NULL default '',
`lastactive` int(15) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
[Release] Userpic per URL [BETA V1]
Allgemeines:
Also ich versuchte dauernt ein Userbild zu machen dann kamm ich drauf wie man ein userbild mit url in das Profil einbauen kann.
Beschreibung:
Hiermit kannst du den User'n ermöglichen ein Userprofil Bild mit URL einzutragen.
installation:
Datenbank
Folgende Befehle in der Datenbank ausführen:
iv4 mit eurem Prefix ersetzen!
[mysql]ALTER TABLE `iv4_user_data` ADD `userpic` VARCHAR ( 255 ) NOT NULL AFTER `email`;[/mysql]
Script
Erstelle eine neue Datei unter Developer Tools -> Dateiverwaltung
Code:
Dateiname: Userbild Hochladen
Dateityp: Scripte
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Haken
Script einrichten
Gebe der erstellten Datei einen Inhalt Developer Tools -> Dateiverwaltung und bei der Datei "Userbild Hochladen" auf das erste Icon (Bearbeiten) klicken!
Code:
if($_POST['submit'] . '' != '') {
$db->id_update( $prefix."user_data", array( "userpic" => $_POST['text'] ), $userdata['id'] );
}
echo '<form action="" method="post">
<input name="text" style="width: 400px" type="text" /><br />
<input name="submit" type="submit" value="Hochladen!" />
</form>';
Profil
bei einer Stelle nach deiner wahl folgendes einfügen:
Code:
<img src="'.$user['userpic'].'" width="170" height="160" align="left"/>
So nur noch den Script aktivieren in der Scriptverwaltung und fertig. ;)
Bei Fragen oder verbesserungs vorschlägen bitte posten
IV4 Grußbox V1.0
Hi Leute,
da inzwichen fast täglich neue Webradios entstehen, habe ich mich entschieden meine Grußbox für IV4 zu veröffentlichen.
Was kann das Modul?
-Grußbox online/offline stellen
-Grüße lesen
-Grußbox leeren
Okay als erstes müssen 3 SQL Codes ausgeführt werden(Bitte darauf achten das ihr das "cms_" durch euer Prefix ersetzt):
CREATE TABLE `cms_gb_stat` (
`id` varchar(250) NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `cms_gb_stat` (`id`, `status`) VALUES
('', 1);[/mysql]
[mysql]CREATE TABLE `cms_gruse` (
`id` int(250) NOT NULL auto_increment,
`name` varchar(250) NOT NULL,
`nachricht` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
So jetzt geht ihr zu Developer Tools->Dateiverwaltung und erstellt folgende Datei:
Dateiname: Grußboxmodul
Dateityp: Modul
Admin einbinden: Kein Hacken
Index einbinden: Kein Hacken
Interface einbinden: Kein Hacken
Rechtesystem: Hacken
So jetzt sucht ihr in der Dateiliste die Datei "Grußboxmodul" und in der Spalte "Aktionen" wählt ihr das erste Symbol von rechts aus.
Da schreibt ihr nun folgendes rein:
PHP Code:
if($_GET['del'] != '') {
$db->query("DELETE FROM ".$prefix."gruse WHERE id = '".$_GET['del']."'");
$adminstyle->msgbox( "Der Gruß mit der id ".$_GET['del']." wurde erfolgreich gelöscht!" );
}
if($_POST['gbleer'] != '') {
$db->query("TRUNCATE TABLE ".$prefix."gruse");
$adminstyle->msgbox( "Die Grußbox wurde geleert!" );
}
if($_POST['nstat'] != '') {
$db->query('UPDATE '.$prefix.'gb_stat Set status = "'.$_POST['nstat'].'"');
}
$adminstyle->grid_start( "30%" );
$adminstyle->cbox_auf('Aktueller Status');
$abfrage = $db->fetch_query('SELECT * FROM '.$prefix.'gb_stat');
if($abfrage[0]['status'] == 1)
{
echo 'Die Grußbox ist <b><font color="gren">ONLINE!</font></b><br>
<form action="'.MODUL_SELF.'" method="post">
<input name="nstat" value="0" type="hidden">
<input type="submit" value="Offline stellen">
</form>';
}
if($abfrage[0]['status'] == 0)
{
echo 'Die Grußbox ist <b><font color="red">OFFLINE!</font></b><br>
<form action="'.MODUL_SELF.'" method="post">
<input name="nstat" value="1" type="hidden">
<input type="submit" value="Online stellen">
</form>';
}
$adminstyle->cbox_zu();
$adminstyle->cbox_auf('Nachrichten');
echo '<table border="0" cellspacing="15"><tr>
<td>ID</td>
<td>Name</td>
<td>Aktion</td>
';
$abfrage = "SELECT * FROM ".$prefix."gruse";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr>
<td>$row->id</td>
<td>$row->name</td>
<td><a href=\"".MODUL_SELF."&show=$row->id\"><img src=\"img/default_icons/actions/page_white_gear.png\" border=\"0\"></a>
<a href=\"".MODUL_SELF."&del=$row->id\"><img src=\"img/default_icons/actions/page_white_delete.png\" border=\"0\"></a>
</td></tr>";
}
echo '</table><form action="'.MODUL_SELF.'" method="post">
<input name="gbleer" value="1" type="hidden">
<input type="submit" value="Grußbox leeren!">
</form>';
$adminstyle->cbox_zu();
$adminstyle->grid_spacer();
$adminstyle->cbox_auf('Gruß');
if($_GET['show'] == '') {
echo '<i>Kein gruß ausgewählt ...</i>';
}
if($_GET['show'] != '') {
echo '<table border="0" cellspacing="15">';
$abfrage = "SELECT * FROM ".$prefix."gruse WHERE id = '".$_GET['show']."'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "
<tr>
<td><b>ID</b>:</td>
<td>$row->id</td>
</tr>
<tr>
<td><b>Name</b>:</td>
<td>$row->name</td>
</tr>
<tr>
<td><b>Nachricht</b>:</td>
<td>$row->nachricht</td>
</tr>";
}
echo '</table>';
}
$adminstyle->cbox_zu();
So jetzt geht ihr wieder zu Developer Tools->Dateiverwaltung und erstellt folgende Datei:
Dateiname: Grußboxpanel
Dateityp: Script
Admin einbinden: Kein Hacken
Index einbinden: Kein Hacken
Interface einbinden: Kein Hacken
Rechtesystem: Hacken
So jetzt sucht ihr in der Dateiliste die Datei "Grußboxpanel" und in der Spalte "Aktionen" wählt ihr das erste Symbol von rechts aus.
Da schreibt ihr nun folgendes rein:
PHP Code:
if($_POST['send'] != '') {
if($_POST['name'] != '') {
if($_POST['nachricht'] != '') {
$name = htmlspecialchars($_POST['name']);
$nachricht = htmlspecialchars($_POST['nachricht']);
$db->insert( $prefix."gruse", Array( "name" => $name, "nachricht" => $nachricht) );
echo '<font color="gren">Dein Gruß ist bei uns eingegangen!</font>';
} else
{
echo '<font color="red">Du musst eine Nachricht eingeben!</font>';
}
} else
{
echo '<font color="red">Du musst einen Namen angeben!</font>';
}
}
$abfrage = $db->fetch_query('SELECT * FROM '.$prefix.'gb_stat');
if($abfrage[0]['status'] == 1)
{
echo '
<form action="" method="post"><input name="send" type="hidden" value="1">
<table border="0" width="150">
<tr>
<td>Name:</td>
<td><input name="name" type="text"></td>
</tr>
<tr>
<td>Nachricht:</td>
<td><textarea name="nachricht" cols="15" rows="3"></textarea></td>
</tr>
</table>
<input type="submit" value="Ab die Post!">';
}
if($abfrage[0]['status'] == 0)
{
echo '
<b> Die Grußbox ist momentan <font color="red">OFFLINE!</font>';
}
So jetzt geht ihr wieder zu Developer Tools->Scriptverwaltung und erstellt folgenden Script:
Name: Grußbox
Script-Datei: Grußboxpanel
Editor-Datei: Kein Editor
Und zu guter letzt gehen wir zu Developer Tools->Menüverwaltung und klicken Links auf Allgemein. Jetzt legt ihr folgendes Menü an:
Name: Grußbox lesen
Icon: email.png
Datei: Grußboxmodul
Jetzt seit ihr fertig. Viel Spaß ;)
IV4 Nachrichtensystem Fronted *Voll Version*
Hallo,
da viele von euch immer gefragt haben, ob es auch ein Nachrichten System für das Fronted zur Verfügung steht, habe ich einfach das Backend System umgecodet.
Funktion: Du das Newssystem können nun auch User auf deiner Seite Private Nachrichten schreiben.
Geht unter Developer Tools aus Daten Verwaltung und erstellt ein neues Script:
Dateinamename: Nachrichten System
Dateityp: Script
Admin einbinden: Kein Hacken
Index einbinden: Kein Hacken
Interface einbinden: Kein Hacken
Rechtesystem: Hacken
Filtert nun nach Scripte und ihr klickt auf den Bearbeitungs Button vom Nachrichten System und folgendes kommt hinein:
PHP Code:
// Per GET Titel der Boxen bestimmen
if( isset( $_GET['outbox'] ))
$titel_box = "Postausgang";
elseif ( isset( $_GET['drafts'] ))
$titel_box = "Entwürfe";
elseif( isset( $_GET['msg'] ))
$titel_box = "Neue Nachricht schreiben";
else
$titel_box = "Posteingang";
// Sicherheits Mechanismen
if( !empty( $_GET['del'] ))
$_GET['del'] = (int) $_GET['del'];
if( !empty( $_GET['msg'] ))
$_GET['msg'] = (int) $_GET['msg'];
// MenÃÆâ€™¼ und dergleichen ausgeben
echo '<a href="'.PAGE_SELF.'&msg"><img src="http://www.elitepvpers.com/forum/images/postfach/verfassen.gif"></a>';
echo '<a href="'.PAGE_SELF.'"><img src="http://www.elitepvpers.com/forum/images/postfach/eingang.gif"></a>';
echo '<a href="'.PAGE_SELF.'&outbox"><img src="http://www.elitepvpers.com/forum/images/postfach/ausgang.gif"></a>';
// Posteingang ausgeben
if( !isset( $_GET['outbox'] ) && !isset( $_GET['msg'] )) {
// Funktion zum Nachrichten löschen
if( !empty( $_GET['del'] )){
$chright = $db->id_get( $prefix."user_msg", $_GET['del'] );
if( $chright['to'] == $userdata['id'] )
$db->id_del( $prefix."user_msg", $_GET['del'] );
}
// Query für Listenausgabe
$inbox = $db->fetch_query( "SELECT msg.id, msg.subject, msg.date, msg.content, von.name 'from', an.name 'to'
FROM `".$prefix."user_msg` msg
LEFT JOIN `".$prefix."user_data` von ON ( msg.`from` = von.id ) LEFT JOIN `".$prefix."user_data` an ON ( msg.`to` = an.id )
WHERE msg.owner = ".$userdata['id']." AND msg.`to` = ".$userdata['id'] );
// NachtrÃÆâ€™¤gliche Darstellungsmanipulation der Liste (date => Datum, f_uid => Name)
foreach( $inbox as $num => $val )
$inbox[$num]['date'] = date( 'd M Y, H:i', $val['date'] );
// Liste ausgeben
$liste = new liste( array( "subject" => "Betreff", "from" => "Autor", "date" => "Gesendet am" ));
$liste->addop( '<img src="img/default_icons/actions/page_white_edit.png" alt="Antworten" border="0">', PAGE_SELF."&msg=", false, "Antworten" );
$liste->addop( '<img src="img/default_icons/actions/page_white_delete.png" alt="Nachricht lÃÆâ€™¶schen" border="0">', PAGE_SELF."&del=", true, "Nachricht lÃÆâ€™¶schen" );
$liste->write( $inbox );
}
//Postausgang ausgeben
if( isset( $_GET['outbox'] )) {
// Funktion zum Nachrichten lÃÆâ€™¶schen
if( !empty( $_GET['del'] )){
$chright = $db->id_get( $prefix."user_msg", $_GET['del'] );
if( $chright['from'] == $userdata['id'] )
$db->id_del( $prefix."user_msg", $_GET['del'] );
}
// Query für Listenausgabe
$outbox = $db->fetch_query( "SELECT msg.id, msg.subject, msg.date, msg.content, von.name 'from', an.name 'to'
FROM `".$prefix."user_msg` msg
LEFT JOIN `".$prefix."user_data` von ON ( msg.`from` = von.id ) LEFT JOIN `".$prefix."user_data` an ON ( msg.`to` = an.id )
WHERE msg.owner = ".$userdata['id']." AND msg.`from` = ".$userdata['id'] );
// Nachträgliche Darstellungsmanipulation der Liste (date => Datum, f_uid => Name)
foreach( $outbox as $num => $val )
$outbox[$num]['date'] = date( 'd M Y, H:i', $val['date'] );
$liste = new liste( array( "subject" => "Betreff", "to" => "Empfänger", "date" => "Erstellt am" ));
$liste->addop( '<img src="img/default_icons/actions/page_white_edit.png" alt="Nachricht bearbeiten/beantworten" border="0">', PAGE_SELF."&msg=", false, "Nachricht bearbeiten/beantworten" );
$liste->addop( '<img src="img/default_icons/actions/page_white_delete.png" alt="Nachricht lÃÆâ€™¶schen" border="0">', PAGE_SELF."&outbox&del=", true, "Nachricht lÃÆâ€™¶schen" );
$liste->write( $outbox );
}
// Neue nachricht ausgeben
if( isset( $_GET['msg'] )) {
// Nachricht beantworten/lesen Variablen setzen,
if( !empty( $_GET['msg'] )) {
// Query zum checken ob die Nachricht für den benutzer bestimmt ist
$chright = $db->id_get( $prefix."user_msg", $_GET['msg'] );
if( $chright['to'] == $userdata['id'] || $chright['from'] == $userdata['id']){
// Benutzer ID für die Antwort holen
if( $chright['from'] == $userdata['id'] )
$chdata = $db->id_get( $prefix."user_data", $chright['to'] );
if( $chright['to'] == $userdata['id'] )
$chdata = $db->id_get( $prefix."user_data", $chright['from'] );
$to = $chdata['name'];
$ct_space = "\n\n----------------\n";
$content = $ct_space.$chright['content'];
$subject = "RE: ".$chright['subject'];
}
}
if( !empty( $_POST['subject'] ) && !empty( $_POST['content'] ) && !empty( $_POST['to'] )) {
// Query zum checken ob der Benutzer exisistiert und "Name" => "ID" konvertierung
$name = $db->get( $prefix."user_data", "name = '".$_POST['to']."'" );
if( $name ){
foreach( $name as $id )
$uid = $id['id'];
// Maximale Nachrichtenlänge checken
if( strlen( $_POST['content'] ) <= 10000 && strlen( $_POST['subject'] ) <= 32 ) {
if( $uid != $userdata['id'] ){
$db->insert( $prefix."user_msg", array( "date" => time(), "to" => $uid, "from" => $userdata['id'], "owner" => $userdata['id'], "subject" => $_POST['subject'], "content" => $_POST['content'] ));
$db->insert( $prefix."user_msg", array( "date" => time(), "to" => $uid, "from" => $userdata['id'], "owner" => $uid, "subject" => $_POST['subject'], "content" => $_POST['content'] ));
echo "<br>Deine Nachricht wurde erfolgreich an ".$_POST['to']." gesendet!";
} else echo "<br>Nachrichten mit sich selber zu schreiben, zeugt von Schizophrenie!";
} else echo "<br>Betreff oder Nachricht zu lang, bitte kürzen!";
} else echo "<br>Benutzer ".$_POST['to']." exsistiert nicht!";
}
$form = new form( PAGE_SELF."&msg" );
$form->add( "to", "Empfänger", $to, "text" );
$form->add( "subject", "Betreff", $subject, "text" );
$form->add( "content", "Nachricht", $content, "textarea", 12 );
$form->write( "Nachricht senden" );
}
echo '<br>';
Dann gehe noch mal unter Developer Tools --> Script Verwaltung und gebe in das Formular folgendes ein:
Name: Nachrichten System
Script Datei: Nachrichten System
Editor: Kein Editor
IV4 Codesystem 0.3 BETA
Allgemeines
Hier habt ihr jetzt das gesuchte Codesystem.
Für Verbesserungsvorschläge bin ich immer bereit! ;)
Beschreibung
Im Adminbereich legt ihr Codes an und gebt ihnen einen Wert. Diese Codes könnt ihr nun an User weitergeben. Sie können dann den Code auf der Seite einlösen und bekommen die Punkte. In der Toplist kann man dann sehen wer am Meisten Punkte gesammelt hat.
Installation
Datenbank
Folgende Befehle in der Datenbank ausführen:
iv4 mit eurem Prefix ersetzen!
[mysql]CREATE TABLE `iv4_codes` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`code` VARCHAR( 255 ) NOT NULL ,
`status` INT NOT NULL ,
`wert` INT NOT NULL ,
`from` INT NOT NULL ,
`create_by` INT NOT NULL ,
`create_date` VARCHAR( 255 ) NOT NULL ,
`update_by` INT NOT NULL ,
`update_date` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;
[/mysql]
[mysql]ALTER TABLE `iv4_user_data` ADD `punkte` INT NOT NULL AFTER `email`;
[/mysql]
Installation
Erstelle eine neue Datei unter Developer Tools -> Dateiverwaltung
Code:
Dateiname: Code System
Dateityp: Module
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Haken
Gebe der erstellten Datei einen Inhalt Developer Tools -> Dateiverwaltung und bei der Datei "Code System" auf das erste Icon (Bearbeiten) klicken!
Füge dann diesen Code ein:
PHP Code:
$adminstyle->grid_start( "35%" );
$tableinfo = new table_info( $prefix."codes" );
$tableinfo->delete = false;
$tableinfo->add( "id", "ID", 1 );
$tableinfo->add( "code", "Code", 7, "text" );
$tableinfo->add( "wert", "Wert", 7, "text" );
$tableinfo->add( "status", "Status", 7, "select", array( 'Eingelöst', 'Aktiv' ) );
$record_controller = new record_controller( $tableinfo );
$record_controller->write_form_box( "Codes", MODUL_SELF );
$adminstyle->grid_spacer();
$record_controller->write_list_box( "Alle Codes" , MODUL_SELF );
$adminstyle->grid_end();
Erstelle nun wieder eine neue Datei unter Developer Tools -> Dateiverwaltung:
Code:
Dateiname: Code Panel
Dateityp: Skripte
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Haken
Gebe der erstellten Datei einen Inhalt Developer Tools -> Dateiverwaltung und bei der Datei "Code Panel" auf das erste Icon (Bearbeiten) klicken!
Füge dann diesen Code ein:
PHP Code:
if (isset($_POST['code'])) {
$code = trim($_POST['code']);
$co = $db->get($prefix."codes", "code='$code' and status=1", 1, -1);
if (empty($co)) {
echo "Der Code ist nicht vorhanden oder wurde schon eingelöst.";
} else {
$neuepunkte = $userdata['punkte'] + $co['wert'];
$usersave = array( "punkte" => $neuepunkte );
$db->update( $prefix."user_data", $usersave, "id = '$userdata[id]'" );
$codesave = array( "status" => 0, "from" => $userdata[id] );
$db->update( $prefix."codes", $codesave, "id = '$co[id]'" );
echo "Du hast den Code erfolgreich eingelöst!";
}
} else {
$form = new form( PAGE_SELF );
$form->add( "code", "Code", '' , "text" );
$form->write( "Einlösen" );
}
Erstelle nun wieder eine neue Datei unter Developer Tools -> Dateiverwaltung:
Code:
Dateiname: Toplist Panel
Dateityp: Skripte
Admin einbinden: Kein Haken
Index einbinden: Kein Haken
Interface einbinden: Kein Haken
Rechtesystem: Haken
Gebe der erstellten Datei einen Inhalt Developer Tools -> Dateiverwaltung und bei der Datei "Toplist Panel" auf das erste Icon (Bearbeiten) klicken!
Füge dann diesen Code ein:
PHP Code:
echo "Punkteliste:<p>";
$resultat = $db->get($prefix."user_data", "punkte >= 1", -1, "punkte DESC");
foreach($resultat as $key) {
echo "$key[name] - $key[punkte] Punkte<br> ";
}
Menüpunkt
Erstelle einen Menüpunkt: Developer Tools -> Menüverwaltung
Wähle links die passende Kategorie und gebe in das Formular folgende Daten ein:
Code:
Name: Code System
Icon: key.png
Datei: Code System
WICHTIG: Ihr solltet wenn ihr den Codeeingabescript einbindet das Panel auf "Registred Only" setzen. Dann können nur eingeloggte User Codes eingeben.
Chancelog
Code:
29.01.2009 (0.1 BETA) | Grundsystem fertig! Danke an kekub fürs drüberschauen. :)
Code:
30.01.2009 (0.2 BETA) | Jetzt klappt das mit den Werten auch! ;)
Code:
07.02.2009 (0.3 BETA) | Jetzt hat der Script nur noch einen record_controller. So sollte es auch sein! ;)
Mehrere "Addon´s" kommen noch!
Ich werde, bald ein CMS Release, das Newssystem,Usersystem, Bann System u.s.w. beinhaltet!
Have Fun
Brust Lee