Vorgehen beim Entwickeln neuer Module

Hallo
Hab mich mal mit der Erstellung eines neuen Moduls beschaeftigt.
Das war auf einem PC ohne Internetzugang. Dort hat alles funktioniert.
Installation mit folgendem Code

 	$component = 'Withings';
	install($component);


function install($component)
	{
	$path 	= 'C:\IPSLibrary\\';
   IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager($component);
   $moduleManager->LoadModule($path);
   $moduleManager->InstallModule();
	}

Wollte das jetzt auf meinem Server machen und dort geht es nicht.
Der Grund ist klar das Modul Withings gibt es im Repositry nicht

IPSModuleManager-Log-IPSModuleManager    2012-03-03 08:08:08.23  Module Download Ini File doesnt exists -> Load Ini File "https://raw.github.com/brownson/IPSLibrary--Test-/master/IPSLibrary\install\DownloadListFiles\Withings_FileList.ini"
IPSModuleManager-Log-IPSFileHandler      2012-03-03 08:08:08.23  Copy https://raw.github.com/brownson/IPSLibrary--Test-/master/IPSLibrary/install/DownloadListFiles/Withings_FileList.ini --> C:\Programme\IP-SYMCON2\scripts\IPSLibrary\install\DownloadListFiles\Withings_FileList.ini

Fatal error:  Uncaught exception 'IPSFileHandlerException' with message 'File C:\Programme\IP-SYMCON2\scripts\IPSLibrary\install\DownloadListFiles\Withings_FileList.ini could NOT be found on the Server !!!' in C:\Programme\IP-SYMCON2\scripts\IPSLibrary\install\IPSModuleManager\IPSFileHandler\IPSFileHandler.class.php:98
Stack trace:

Abhilfe hab ich mir geschaffen indem ich die fehlenden Files Lokal kopiert habe.

 	$component = 'Withings';
	install($component);


function install($component)
	{
	$path 	= 'C:\IPSLibrary\\';
	$file 	= $path . "IPSLibrary\\install\\DownloadListFiles\\Withings_FileList.ini";
	$ini  	= $path . "IPSLibrary\\install\\InitializationFiles\\default\\Withings.ini";

	copy($file, IPS_GetKernelDir() . "scripts\\IPSLibrary\\install\\DownloadListFiles\\Withings_FileList.ini" );
	copy($ini,  IPS_GetKernelDir() . "scripts\\IPSLibrary\\install\\InitializationFiles\\default\\Withings.ini" );
	copy($ini,  IPS_GetKernelDir() . "scripts\\IPSLibrary\\install\\InitializationFiles\\Withings.ini" );

   IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager($component);
   $moduleManager->LoadModule($path);
   $moduleManager->InstallModule();
	}

Danach braucht man braucht man das ja nicht.
Hab ich da was uebersehen oder besser wie sag ich dem Modulhandler,
dass die „ini“-Files nicht ONLINE sind ?

Hallo,

ich habe bereits angefangen einige Wiki Artikel zur Entwicklung neuer Module zu schreiben:

IPSLibrary - Modul Verwaltung

IPSLibrary - Development Environment

Der nächste ist dann bereits eine Step by Step Anleitung zur Entwicklung eines eigenen Modules.

Im Prinzip legt man alle benötigten Files mal in den IPS Foldern an, nutzt dann die DeployModule Funktion des IPSModuleManager’s um die Files in das lokale GIT System zu kopieren und danach kann man sie mit LoadModule auch von dort wieder laden.
Vorsicht, dass Du dir keine Files überschreibst (es werden aber ohnehin immer Backups angelegt).

Im Installations Script muss man sich an einige Regeln halten, insbesondere beim Generieren eines WebFronts, damit später die Deinstallation auch fehlerfrei funktioniert…

Hallo

Das Entfernen eines Moduls scheint noch nicht eingebaut.
So ist es im Wiki beschrieben aber bringt Fehler

  IPSUtils_Include ("IPSModuleManager.class.php","IPSLibrary::install::IPSModuleManager");
   $moduleManager = new IPSModuleManager('<<ModuleName>>');
   $moduleManager->DeleteModule();

ja richtig, darum da bin ich noch am Testen.
Deine benötigten Funktionen DeployModule() und LoadModule() sollten aber bereits funktionieren.

Nachdem ich mit Git noch nix zu tun hatte hab ich es irgendwie
hinbekommen.
Ich hab das Konzept
IPSLibrary - Development Environment
hinbekommen , ausser dem „Pull Request“ zwischen Privat und Official.
Ist auch besser so erst mal.
Irgendwo hast du gepostet

Ich werde die Default und Example Odner in Zukunkt in IPS nicht mehr anlegen - das führt nur zu Verwirrungen.

Heisst das , dass es auch kein default Konfiguration gibt ?
Wegen Deploy ins Repositry wenn ich am default was aendere.

Hallo
Nur ein Schoenheitsfehler .
In der Dokummentation wird das Laden eines Modules lokal folgend beschrieben

$moduleManager->LoadModule(‘C:\GIT\IPSLibrary\‘);

Das bringt aber Fehler

Parse error:  syntax error, unexpected ''C:\git\IPSLibrary\');
' (T_ENCAPSED_AND_WHITESPACE), expecting ')' in [IPSLIBRARYBASE\load_busbahn] on line 7

entweder

   $moduleManager->LoadModule('C:\git\IPSLibrary');

oder

   $moduleManager->LoadModule('C:\\git\\IPSLibrary\\');

Pull Request hab ich auch nocht nicht versucht - wird aber sichr bald kommen.

Default und Example Files werd ich in Zukunft nur in IPS nicht mehr registrieren. Im Datei System werden sie aber natürlich weiterhin existieren. Ex geht darum, das der normale User sonst nicht genau weiß, welcher File er ändern muß.
Über die INI Parameter des ModuleManagers kann man aber in Zukunft auch weiterhin steuern, ob sie registriert werden (für Developer ja durchaus sinnvoll).

WIKI hab ich ausgebessert - kannst aber in Zukunft ruhig selber Hand anlegen, falls Dir Fehler auffallen.

Und falls Dir noch Ergänzungen zu den WIKI Artikeln einfallen - feel free …

Wollt erstmal nix an deinem Wiki aendern aber in Zukunft
mach ich das selbst wenn mir was auffaellt .