Gå til innhold

phpAIdmin - PHP Administrasjonspanel gjort enkelt!


Anbefalte innlegg

Hey,

 

I en årrekke så har jeg utviklet en rekke PHP applikasjoner, og ved alle disse PHP applikasjonene så har jeg brukt tid og krefter på og utvikle et bra administrasjonspanel som gjør det lett for en hvem som helst person og endre hva som helst på en nettside.

 

Problemet er at jeg alltid har ønsket og kunne redusere utviklingstiden ved at en gratis applikasjon, skrevet i PHP for PHP, kunne produsert et vel fungerende administrasjonspanel som fyller det jeg ser på som nødvendig ved et administrasjonspanel.

 

Dette akter jeg nå og gjøre noe med, og av den grunnen så har jeg nå startet mitt nyeste prosjekt "phpAdmin" (Midlertidig tittel) som akter og hjelpe alle web utviklere ved og redusere utviklingstiden med opp til 50%.

 

Ved hjelp av CodeIgniter 1.7 så skal jeg utvikle et system som bruker artifictal intelligence for og gjenkjenne databaser og assosiere moduler til de ulike tabellene. Dette skal være mulig og gjøre manuelt også selvfølgelig, men med en god artifictal intelligence eller kunstig hukommelse, så vil utviklingstiden reduseres ytligere.

 

Gjennomført so far:

Satt opp CodeIgniter + Ion Auth (Custom Auth skal selvfølgelig være mulig, men i starten så bruker jeg Ion Auth) + Custom Template klasse.

Laget en midlertidig template.

Laget et enkelt system som laster moduler dynamisk og kjører funksjonene dynamisk.

Laget en enkel nyhets modul.

 

To-Do:

Kunstig hukommelse

Flere moduler (Kom med ønsker i kommentar tråden :thumbup:)

Installerings script

 

Sist men ikke minst, her er et screenshot av åssen designet ser ut akkurat nuh:

Skjermbilde-2010-07-02-kl.-16.57.42.png

 

Så noen siste avsluttende ord: Hvis noen har lyst og hjelpe til i dette prosjektet så er de mer en velkommene. Jeg har et ønske om at dette skal bli en stor kjent gratis applikasjon på nettet, som blir utviklet av massene. Slik som for eksempel phpBB og CodeIgniter.

 

Systemet er basert på CodeIgniter 1.7. Hvis du har noen erfarig med dette så er det et stort pluss. Hvis ikke så er det lett og lære. Du burde ha ganske så god php og mysql erfaring, men hvis du er veldig interrisert i og lære så er det godkjent også. Jeg har lært opp et par tre stykker i PHP og MySQL før så jeg har erfaring med og være lærer :)

 

Kommentar tråd:

http://www.diskusjon...owtopic=1241864

 

Takk for meg,

TheRealL

Endret av TheRealL
  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

Update Søndag 4/7/2010 - 3:36

 

Jeg har nå jobbet enda mer, og det begynner og ta plass. Er snart ferdig med min første modul - et enkelt nyhetssystem. For de som lurer på åssen det ser ut så har jeg tatt med source koden under:

 

 

<?php
/*
* News Module Class
*
* This is a simple testing module for the dynamic module system
*
* @Author: Arne-Christian Blystad
*/
class module_news extends module_base {

public function __construct($moduleID)
{
	parent::__construct();

	// Database Requirements and Optional
	$this->required 		= array("NewsID","Title","Content");
	$this->optional 		= array("Author","AuthorID", "Datetime", "Excerpt","Published");
	$this->notInShortList 	= array("Content", "Excerpt");

	$this->obj->loadscript("modules/news/news");

	$langQuery = $this->db->get_where("backend_modules_lang", array("ModuleID" => $moduleID));
	$langResult = $langQuery->result_array();
	$this->lang = unserialize($langResult[0]["LangArray"]);

}
/* For the index page, just show the Manage Articles overview */
public function index($arg)
{
	$this->router(1, $arg);
}
/* Router. Send the user to the correct page */
public function router($id, $arg)
{
	switch($id)
	{
		case "1": // Manage Articles
			$this->setDatabase($arg)->function_manage_articles($arg);
		break;
		case "2": // Add Article
			$this->setDatabase($arg)->function_add_article($arg);
		break;
		case "3": // Deletion
			$this->setDatabase($arg)->function_delete($arg);
		break;
		case "4": // Update
			$this->setDatabase($arg)->function_update($arg);
		break;
		default:
			show_error("Function does not exist!");
		break;
	}
}
/* Deletion */
private function function_delete($arg)
{
	$uri = $this->obj->uri->uri_to_assoc();

	if(isset($uri[3]) && is_numeric($uri[3]))
	{
		$this->highlight("You successfully deleted the article.");
	} else {
		$this->error("Error. Either you did not supply a ID or the ID is not numeric. Please try again");
	}

	$this->router(1, $arg);
}
/* Management */
private function function_manage_articles($arg)
{

	if(in_array("php_time", $arg)) $this->data["date_argument"] = "php_time";

	// List through the data. Dynamic setting of fields.
	$select = null;
	foreach($this->fields as $field)
	{
		// Check if the collum fields are assigned.
		if(isset($this->collums[$field]) && !in_array($field, $this->notInShortList))
		{
			$collumLink[$field] = $this->collums[$field];
			$reverseCollumLink[$this->collums[$field]] = $field;

			$select .= "{$this->collums[$field]}, ";

			// Assign language to the header fields.
			$this->data["header"][$field] = $this->collums[$field];
			$this->data["header_text"][$field] = $this->lang[$field];
		}
	}
	$select = substr($select, 0, -2);


	// Extract data from database
	$query = $this->db->select($select)->from($this->table)->get();
	$this->data["result"] = $query->result_array();	
	$this->data["collumLink"] = $collumLink;
	$this->data["reverseCollumLink"] = $reverseCollumLink;
	$this->data["width"] = array("NewsID" => "15", "Title" => "300", "Author" => "150", "Datetime" => "150");
	$this->data["defaultWidth"] = "200";

	$this->load->view("modules/news/index", $this->data);
}

/* Add Articles */
private function function_add_article($arg)
{

	$this->obj->load->helper("form");
	$this->loadcss("uniform/uni-form")->loadcss("uniform/default.uni-form");

	$fieldType = array(	"NewsID" => "div", 
						"Title" => "text", 
						"Content" => "textarea", 
						"Author" => "text", 
						"AuthorID" => "text", 
						"Datetime" => "text", 
						"Excerpt" => "text", 
						"Published" => "checkbox");

	foreach($this->fields as $field)
	{
		// Check if the collum fields are assigned.
		if(isset($this->collums[$field]) && $field !== "NewsID")
		{
			$collumLink[$field] = $this->collums[$field];
			$reverseCollumLink[$this->collums[$field]] = $field;

			$this->data["item_text"][$field] = $this->lang[$field];
			$this->data["item"][$field] = $fieldType[$field];		
		}
	}		

	/* MySQL Query to insert data */
	if(!empty($_POST))
	{
		/* Run the MySQL Query to insert the data */
		/* FIXME: Add Validation */

		$insert = array();
		// Change into the correct collum
		foreach($_POST as $key => $value)
		{
			$insert[ $collumLink[ $key ] ] = $value;
		}

		if($this->db->insert( $this->table , $insert ))
		{
			$this->highlight("You successfully published a new article");
			$this->router(1,$arg);
		} else {
			$this->error("I am sorry, an error occurred with the SQL Query");
			$this->router(1,$arg);
		}

	} else {
		$this->load->view("modules/news/add", $this->data);
	}
}

/* Edit Article */
private function function_edit_article($arg)
{
	/* Base upon Add Article */
}

}

 

 

Som de av dere som forstår kode kan lese, så er det hele litt rotete akkurat nå. Mye repitering, og ikke veldig K.I.S.S. Så det er noe jeg på jobbe på :).

 

Viktigst av alt er at det fungerer, noe som gjør at jeg kan fortsette og lage flere moduler. Og modulene er 60%, så ja. Jeg føler meg ganske godt på vei med prosjektet allerede.

 

Har fundert litt på dette med mange database queries som kanskje blir unødvendige, så i en fremtidig versjon så antar jeg at jeg kommer til og lage et script som skaper og leser XML filer istede for databaser for nødvendige ting som menyer og dynamiske databaser.

 

Som sagt, har noen ønske om og være med - eller forslag så er det bare og slenge de i kommentar tråden. Takk :)

Lenke til kommentar

Prosjekt navnet har nå blitt forandret til phpAIdmin. Grunnen var rett og slett fordi phpAdmin var tatt på Sourceforge.net, men prosjektet var lagt dødt. Dessuten så er ikke dette et standard administrasjons panel, men heller et administrasjonspanel som tar nytte av Artifictal Intelligence, så da passa phpAIdmin :)

 

Kommentarer her: https://www.diskusjon.no/index.php?showtopic=1241864

Lenke til kommentar

Sånn, da var første modul gjennomført.

 

Nyhetsmodulen er for tiden en veldig enkel modul for sider som skal presentere nyheter. Den har bare noen få felter, men den har muligheten for og bli ekspandert til en mer avansert modul relativt enkelt.

Jeg kommer nok til og lage en simpel, og en mer avansert modul. Den simple er for standard nettsider som ikke krever så mye kontroll, mens den avanserte kommer til og ha funksjonalitet for og publisere innlegg lik den som er sett på feks Hardware.no :)

 

Nå starter jeg arbeidet på bruker modulen. Den blir nok hakket mer avansert enn nyhetsmodulen. Jeg ønsker fortsatt tilbake melding og forslag til flere moduler her: https://www.diskusjon.no/index.php?showtopic=1241864

Lenke til kommentar
  • 2 uker senere...

Har vært på ferie så har ikke fått gjort mye arbeid, men bruker modulen begynner og fungere. Jeg har ikke forandret stort på designet, bare det som jeg så som nødvendig.

 

c9ee9a99519c6a350aaf0c6cb516a179.png

 

Hele kildekoden er til en hver tid tilgjenglig her: http://github.com/TheRealL/phpAIdmin

 

Har også fått 2 medarbeidere på laget: sdragons og karq så det burde forhåpentligvis gjøre hele utviklingsprosessen kjappere :)

 

Bortsett fra det så håper jeg på flere kommentater fra brukere. Det har vært litt tørt i det siste. :(

Takk,

 

The Real L

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...