Hi ich mach einfach mal ein neues Thema auf nutze das eigentlich noch
einer ?
Wenn ja ich such noch Verbesserungen.
Ein Aktuelles update folgt die Tage noch.
Das Bilderskript wird wohl nicht mehr zum laufen zu bewegen sein (das
stammt aus Zeiten der Alten Reichelt Seite) daher war meine idee eine
Bildersammlung zumachen z.b. die von Eagle3d da die unter der GPL steht
ich würde den die Bilder automatisch anhand der Footprints setzen aber
so das man noch manuell Bauteile Hochladen kann.
was haltet ihr davon ? ich selber brauche sohnen schnikschnak nicht
allerdings ist es von einigen Betatestern gewünscht.
Die momentan Aktuelle Version gibt es unter folgenden Link:
http://www.mikrocontroller.net/attachment/49419/part-db.tar.gz (noch
nicht alle Änderungen drinnen möchte vorher noch etwas testen die neue
folgt die tage).
K. J. wrote:
> Hi ich mach einfach mal ein neues Thema auf nutze das eigentlich noch> einer ?
Komisches Thema.
Was ist denn ein "PART-DB RW 1.2", kann man das essen oder was oder wie?
Beschreib doch erst einmal, worum es überhaupt geht.
Oder muß man erst das RAR auspacken, um zu wissen, was das ganze soll.
Stehts da überhaupt drin?
Peter
Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die
einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so
sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.
Aber da ich bis heute nichts besser finden konnte, trete ich immer
wieder den Gang nach Canossa an ....
Ist meiner Meinung ein sehr gutes Programm. Nur bei einer grossen
Lagerhaltung verliert man sehr schnell den Ueberblick.
PS: Mit Vers. 0.1d hatte ich Probleme. Liegt schon soweit zurück, dass
ich mich an die Einzelheiten nicht mehr erinnern kann.
MfG aus Istanbul
Mehmet Kendi wrote:
> Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die> einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so> sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.>> MfG aus Istanbul
Ist nicht meine SW aber da sie unter GPL steht und vom ORG. Autor
scheinbar nicht weiterentwickelt wird hab ich mich der sache mal
angenommen da ich nichts ähnliches gefunden habe.
Jup da hab ich leider noch keine Lösung für gefunden der CODE ist etwas
Frikkelig Momentan bin ich dabei die ganzen BUGs zu beseitigen der
Ersteller der Org. SW hat leider alles auf seinen LAMP angepasst was
nicht so ganz optimal ist ich persönlich habe da aber nicht so hohe
Anforderungen dran solange es leuft :P
Hi, Hier nochmal die jetzt aktuelle Version es dürften alle Fehler
beseitigt sein, die Version läuft bei einigen Testern jetzt ohne
Probleme es fehlt noch der Style bei einigen dateien sobald das fertig
ist werde ich mal schauen das mann das Aussehen per CSS Ändern kann
dafür muss aber erstmal der Grundaufbau stehen.
Einige Bilder:
http://www.grautier.com/temp/mc.net/partdb/1.jpghttp://www.grautier.com/temp/mc.net/partdb/2.jpghttp://www.grautier.com/temp/mc.net/partdb/3.jpghttp://www.grautier.com/temp/mc.net/partdb/4.jpg
Changelog:
16.04.2009
- MOD Bilderupload die daten werden mit img_ + MD5 gespeichert somit
wird verhindert das ein Bild doppelt gespeichert wird.
- MOD Style catmgr.php, fpmgr.php, subpmgr.php, locmgr.php.
15.04.2009
- ADD More Stats
- MOD Style openlist.php, submgr.php
- MOV F*ing Code to /dev/null
- FIX Many BUGs
- FIX Bilder Upload und Anzeige
14.04.2009
- ADD openlist.php Öffentliche Liste aller Bauteile
13.04.2009
- MOD Style startup.php, nav.php
- ADD Bauteile in den Kategorien Verschieben. (www.mikrocontroller.net
Wiki)
- ADD SUB Kategorien Ausblenden (www.mikrocontroller.net Wiki)
08.04.2009
- ADD Patch Sortierung (Mikrocontroller.net Wiki)
- ADD Suche für Parts über AllDataSheet und Reichelt
Michael A. wrote:
> Part-db Lagerverwaltung vileicht?
Danke Michael, nun weiß ich wenigstens, worum es überhaupt geht.
Ist wohl für den OP ne zu große Zumutung, einfach erstmal das Thema zu
nennen oder wenigstens nen Link darauf zu posten.
Peter
Hallo,
also das Tool gefällt mir sehr gut.
Einzige Kritik bzw. Änderungswunsch/Verbesserungsvorschlag:
Wenn man einen neuen Artikel anlegt kann man nur die sehr wenige Dinge
eintragen. Es wäre schön wenn man dann gleich alles eintragen könnte,
wie z.B. Preis, Datenblatt und Bild....
So muß man erstmal die nötigsten Dinge eintragen, dann nochmals auf den
Artikel gehen und die anderen Sachen eintragen.
Gruß
Harry
Ja das stimmt ist ein guter Vorschlag, ich selber trage das alles nicht
ein dafür hab ich mir die suche für AllDataSheet gemacht das ist
wesentlich einfacher.
Das mit AllDataSheet find ich übrigens toll, wobei ich immer zusehe die
Datasheets lieber "zu Hause" zu haben auf meinen Server^^
Auch mit der verknüpfung zu Reichelt ist echt gut, so sieht man sofort
den aktuellen Preis und Typen. Könnte man das eigentlich noch ändern das
"trotz" eigenen Datasheet die Reichelt und AllDataSheet drin bleiben?
Denn wenn man ein eigenes einträgt sind die beiden weg.
Bei den Bildern trage ich immer die Anschlußbelegung ein aus den
Datasheets ist echt klasse das Tool!
Schön das es nun jemand weiter entwickelt!
Gruß Harry
Hi bei den Bildern wird sich noch was Ändern die tage dann ist es
möglich per Footprint die Bilder zu setzen das heist das du ein Bild in
den /img Ordner ablegen kannst mit namen des Foodprints und das wird
dann automatisch geladen des ist praktisch z.b. für ic Gehäuse die sind
ja eh alle gleich sind bei mir ist es schon drinne bin aber noch am
testen natürlich kannst du alternativ dazu noch wie gewohnt andere
Bilder laden.
Ja das Reicheltding ist leider recht beschissen weil das nur 100% genaue
Bezeichnugen findet ist etwas blöd aber bei standard teilen geht des
recht gut werde noch was einbauen das wen die Artikkelnummer vorhanden
ist mit der gesucht wird.
>Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die>einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so>sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.
Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei
gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen
Suchfunktionalität viel besser und überschaubarer!
Ich verwende MyComponents.
Wenn ich nach SMD-Widerständen suche gebe ich einfach Widerst* + SMD
ein, und alle eingegebene SMD-Widerstände werden in einer Liste
angezeigt.
Oder, wenn ich will, lege ich eben eine Artikelgruppe an.
> Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei> gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen> Suchfunktionalität viel besser und überschaubarer!>> Ich verwende MyComponents.>> Wenn ich nach SMD-Widerständen suche gebe ich einfach Widerst* + SMD> ein, und alle eingegebene SMD-Widerstände werden in einer Liste> angezeigt.> Oder, wenn ich will, lege ich eben eine Artikelgruppe an.
Naja das ist alles viel zu überdimensioniert im Hobby braucht keine 50
sortirungsmöglichkeiten es geht einfach darum ne liste zu haben um sich
überblick zu verschaffen.
MyComponents ist für mich keine Alternative weil es nicht dezentral
läuft bei Programmen die dbs abzugleichen ist wesentlich aufwendiger.
Naja wen ich mit part-db Widerstände suche gebe ich z.b. 0805 in die
Suche ein und hab ich alle was auch völlig ausreichend ist oder gehe
halt in die passende Kategorie.
Erschwerend kommt dazu das ich linux nutze und Windows Programme mit
Wine ist der läetzete Käse auserdem ist des alles fest und ich kann bei
Problemen nichts Ändern mach möchte sich ja auch was Hin biegen können
wenn man es braucht vor alledem bei gossen Datenbanken ist so was
wichtig.
Finde ich jedenfalls, PART-DB soll seinen dienst bei mir gut erfüllen
und nicht mehr und auch nicht weniger und es ist genau das drinnen was
ich brauche.
Edit: HAKU läuft ja Grade vorweg sie unten
Langsam mit den Pferdchen, theborg und meine Wenigkeit sitzen zusammen
mit noch ein paar anderen hier an einer nagelneuen Verwaltung. Zur Zeit
muss ich gestehen, dass ich der blockierende Faktor bin, da ich nicht
mit der Initialversion in die Puschen komm grins
Bauteileverwaltung wrote:
>>Also ich benutze es. Und wieder auch nicht. Die Tatsache, dass ich die>>einzellnen Unter-Kategorien nicht zusammenklappen kann, stört mich so>>sehr, dass ich mir stets vornehme, Dein Programm nicht mehr zu benutzen.>> Der selben Meinung bin ich auch. Ich finde die Idee mit einer frei> gestaltbare Artikelkodierung (Warengruppen) und einer mächtigen> Suchfunktionalität viel besser und überschaubarer!
Etwa so?
http://e.svgweb.de/filter.png
>Naja das ist alles viel zu überdimensioniert im Hobby braucht keine 50>sortirungsmöglichkeiten es geht einfach darum ne liste zu haben um sich>überblick zu verschaffen.
Wenn die Anforderungen so gering sind, dann reicht ein Excel- bzw.
Calc-Sheet mit integrierten Links doch aus.
Nein ebend nicht weil es nicht Dezentral abrufbar und editierbar ist bei
excel/OOo gibt es keine sinnvolle Eingabemaske fängt man an diese zu
Programmieren kann man des den auch per PHP und co. machen.
Und EXCEL nutzt diese VB Skript knacke ne dann kann ich ja gleich mit
BASCOM Proggen :P
Ist halt Ansichtssache darüber lässt sich streiten.
Und deswegen ist es OS jeder kann was Beitragen und wehr nichts Ändert
braucht auch nicht meckern.
Hallo,
ich habe eben gelesen :
<---
Naja wen ich mit part-db Widerstände suche gebe ich z.b. 0805 in die
Suche ein und hab ich alle was auch völlig ausreichend ist oder gehe
halt in die passende Kategorie.
<--
Das klappt leider nicht weil 0805 bei den Footprints zu 805 geändert
wird...
oder ist bei mir noch etwas falsch eingestellt?
Gruß Harry
Uff, dachte schon bei mir ist ein fehler in der Datenbank^^
Ich habe es Momentan auch so gelöst das ich '0805' schreibe...
Wenn man sucht findet er es ja trotzdem.
Servus
Zuerat einmal ein Dank für die Weiterentwicklung an Part-db.
Nachdem ich diese neue Version installiert habe, kriege ich aber einen
Fehler, den ich mir nicht erklaeren kann. Beiliegend das Bild.
Waere für einen Tip sehr dankbar.
MfG
:) also einen Datenbankserver habe ich, ganz bestimmt.
Und auch die alte Version 0.1d lieft ohne Probleme.
Soweit ich mich erinnere, musste ich bei einem Update nur eine Zeile in
lib.php für den Serverzugriff aendern.
Ja haste den die SQL Datei in deine Datenbank eingelesen ?
ansonsten müssen nur die daten noch in die lib.php ändern sieht so aus
als wen die Tabellen nicht gefunden werden.
Wenn du Runterscrolst steht da ne ROTE Meldung ?
Hallo,
ich find es super das an dem tollen Ansatz der Partdb wieder was
passiert, werde heute Mittag gleich mal die neue version auf den Server
hauen.
gruß Dennis
Hi momentan gerade nicht ab ziemlich viel momentan zu tun.
Bin gerade an der liste links bei da ich aber kein java kann wird des
noch etwas dauern vielleicht erklärt sich ja einer dazu bereit das zu
übernehmen.
Ansonsten ist die Todo Liste ziemlich lang :P
Was mal nett wehre ist wen mir jemand ein Screenshot macht wie das ganze
mit dem IE aussieht > 7.0
P.s. Was mir so aufgefallen ist weil es bei mir in den Serverstatistiken
auftaucht einige haben PartDB extern erreichbar und nicht mit HTACSSES
geschützt dieses solltet ihr umbedinkt machen.
Eine kleine Hilfe Funktion ist Grade in Arbeit wo das alles Erklärt wird
auch wie man die Öffentliche Liste benutzt ...
Hallo,
also im IE7 gibts wohl Probleme, Kategorien werden im Navigations frame
geöffnet... aber wer will schon den IE ^^
Wie wärs Eigentlich mit nem SVN/Bugzilla server?
Dennis
Danke !!! werde es mir mal anschauen.
Neue Version hab ich auch, bei den Preisen können jetzt auch ","
angegeben werden, und es gib einige extra Änderungen.
Ich empfehle alle php Dateien bis auf die lib.php zu löschen(vorher
Backup machen) und dann die neuen daten einzuspielen es hat sich in
Hinsicht der files was verändert alle ungenutzten habe ich raus genommen
und einige in extra Ordner verschoben.
Hallo an alle,
Ich hab mir Partdb 1.2 auch aufgesetzt. Beim Hinzufügen neuer Bauteile
bekomme ich jedoch eine Fehlermeldung (siehe Screenshot). Woran kann das
liegen??
Danke im Voraus
lg Robert
Das ist ein interessantes Projekt. Hab mir die Dateien auch mal besorgt.
Ich fände es toll, wenn jmd vllt. eine Art DemoDB bereitstellt. Dann
brauch man nicht immer alles selber komplett zu befüllen.
>Hallo,>>wegen der Liste könnte man doch folgendes nehmen:>>http://destroydrop.com/javascripts/tree/
Vllt. ist dann diese Iconlib ganz gut:
http://tango.freedesktop.org/Tango_Icon_Library
Falls es noch keine geben sollte...
Ich habe Deine Answeisung befolgt und ausser lib.php alles gelöscht.
Nun will die Software von mir Username und Password wissen (vor dem
Upgrade war dies nicht so), akzeptiert diese aber nicht und es erscheint
die Meldung:
Server error! The server encountered an internal error and was unable to
complete your request. Either the server is overloaded or there was an
error in a CGI script.
If you think this is a server error, please contact the webmaster.
Error 500
arg ja sorry da hat sich die .htacsess und .htpasswd mit
reingeschmukkelt ins Archiv einfach löschen den geht es wieder sorry.
b.z.w. gleich als vorlage für PW Schutz nutzen.
Hallo zusammen,
schön das wieder was passiert, bei mir läuft die part-db soweit gut.
Hier noch einige Wünsche von mir:
- Beim Anlegen eines Bauteils, sollte es möglich sein einen neuen
Lagerort/Lieferant oder Footprint zu erstellen
- Zudem, was aber auch schon gewünscht wurde, Preis, Datenblatt usw beim
Erzeugen eines Bauteils einstellbar
- Wird eine Lagerort/Lieferant oder Footprint erstellt sollte überprüft
werden ob es diesen evt. schon gibt.
- Erzeugung von Lagerorte erweitern z.b. K1-[0...100] erzeugt Lagerorte
K1-0 bis K1-100
- Suche oder Anzeigemöglichkeit für Lagerorte
gruß Dennis
@Dennis Kommt auf die ToDo liste, diese immer noch recht lang.
Die näste Änderung wird erstmal umbau auf CSS sein Hardcoded per html
suckt und sieht net wirklich gut aus.
Menü hab ich mittlerweile eingebaut THX @ barcany
Hi,
Ich hab des Dasein mal etwas angepasst würde mich mal über Feedback
freuen mittlerweile ist fast alles CSS2.0 basiert aber OPERA macht
zikken deswegen gibs noch kein neues relayse.
mfg tb
Hi nein die Logos des wird einfach ne liste mit den Bildern von den IC
Logos hab gerade 380stk eingepflegt.
Und bei den footprints bin ich noch nicht ganz sicher wie ich die mit
der Datenbankverknusper dachte als Default bilder wen man kein einendes
angegeben hat das dann dementsprechend in Abhängigkeit zu den
Footprintnamen angezeigt wird so wie es jetzt schon vorhanden ist,
ursprünglich war des einfach so als Vergleich gedacht damit man schauen
kann was man da überhaupt liegen hat.
So hier das Update.
Neues
- Footprintbilder (fehlen noch ne ganze Mänge)
- Hersteller Logos für IC Kernzeichnungen
- JS Menü
- Bugfixes
- 100% CSS Template
Bekante Bugs
- Das Menü läuft nicht mit Opera
ToDo
- Funktion zum umbenennen von Footprints.
- Erweiterte Eingaben bei neuen Bauteilen.
Viel Spass beim Testen.
Hallo K.J.
glaube du hast die Menubilder vergessen /img/menu/ ist leer ^^
Hab die Benötigten gifs mal von hier
http://destroydrop.com/javascripts/tree/ geholt, dann geht das menu
auch, sieht super aus!!
Auch die footprints sind cool. Wie läuft im Augenblick die Zurodnung der
Footprintbilder, Dateiname?
Cool wäre es wenn man beim Anlegen eines Footprints ein Footprintbild
zuordnen könnte, weil viele Hersteller Benennen ihre packs
unterschiedlich Bsp. SO14 SOIC14.
Um Bauteilen einen Hersteller Zuzuordnen müsste man die Datenbank ändern
oder? Dann könnte man nämlich dem Footprint noch ein Herstellerlogo
zuordnen.
Gruß Dennis
Hi jo irgentwas ist ja immer ;)
Hier nochmal nen neues Paket hab wohl geschlampt :P die bilder in img
können gelöscht werden des sind meine eignenden uploads :P.
Hi die automatische Zuordnung leuft anhand der Bildnamen in
/tools/footprints d.h. SOIC14 und das bild dazu heist den SOIC14.png ich
hab versucht die bezeichnugen gängig zu wählen nen Patentrezept gibt es
da leider nicht.
Ich hab nicht vor des nochmal zu ändern so wird des bleiben des ist ne
scheiß Arbeit was ich noch alles einpflegen werde weiß ich noch nicht
aber so des Gänigste auf jedenfall.
Erstmal kommt die tage noch ne Funktion um die namen der Footprints
Ändern zu können.
K. J., ich liebe Dich!!! :D
Eine Superleistung! Gratuliere.
Kannst Du mir bitte per PM Deine PayPal Nummer mitteilen, damit ich Dir
ein kleines Dankeschön zukommen lassen kann.
MfG
Mehmet Kendi schrieb:
> K. J., ich liebe Dich!!! :D
URG :-)
> Eine Superleistung! Gratuliere.
Danke !!!
>> Kannst Du mir bitte per PM Deine PayPal Nummer mitteilen, damit ich Dir> ein kleines Dankeschön zukommen lassen kann.
Ne muss nicht wie gesagt ist alles für lau :P
PayPal hab ich eh nicht weis ganicht warum des alles für spenden nutzen
da der Empfänger zahlt verdient nur Paypal dran.
Servus K. J.
Das mit PayPal stimmt schon, was Du sagst. Aber eine Banküberweisung aus
der Türkei ist mit ca. 30 Euro Spesen verbunden. Da ist PayPal schon
günstiger.
Das Program ist nun genaus so, wie ich es mir seit Jahren gewünscht
hatte, aber wegen Php-und Html-Unkenntnis nicht umsetzen konnte.
Nochmals vielen Dank.
Klappt hier auch wunderbar fettes lob :-)
wie wärs eigendlich mit ner funktion für mehrere lagerorte. so könnte
man partdb mit mehreren personen verwenden (so haben wir das hier
nämlich vor :-)) das spart eine menge arbeit was eintragen von
informationen angeht, weil ned jeder selber alle bauteile eintragen
muss.
mfg Nico
hm das halte ich ehr für unpraktisch wen man vom Normalfall ausgeht hat
man alle Bauteile des gleichen Typs an der gleichen stelle gelagert.
Dann muss man es zweimal anlegen und den unterschiedliche Lagerorte
angeben.
Muss da eigentlich jeder seine Bauteildaten selbst eingeben?
Oder gibt es da irgendwie öffentliche Bibliotheken?
Wäre ja naheliegend, sowas vorzusehen. Sogar die jeweiligen
Eagle/KICAD/...-libs könnte man gleich mit integrieren, damit die ewige
Sucherei mal ein Ende hat (Exportfunktion).
Nein des würde auch ein ewiges suchen bedeuten es gibt soviel bauteile
da ne lib anzulegen wehre ne Endlosarbeit es soll ja auch keine
Multilösung werden sondern eine Relativ einfach gehaltene Hobbylösung
das wichtigste ist ja vorhanden.
Wers erstmal noch die sachen die jetzt fehlen einbauen und dann mal
schauen aber zihl ist es es so einfach wie möglich zu halten.
LIBs fest mit einzubinden wie die Eagle libs geht schon alleine wegen
der Lizenzen nicht.
Moooment! ;-)
Eine Endlosarbeit ist es doch viel eher, wenn jeder immer wieder neu die
Daten eingeben muss, die doch bei einem bestimmten Bauteil für ALLE, die
es in ihre Datenbank eintragen, immer und immer wieder dieselben sind.
Sich diese Arbeit zu teilen, wäre für alle eine RIESIGE
Arbeitsersparnis.
Und mit den Eagle-Libs: Die Original-Eagle-Libs kann man möglicherweise
nicht verwenden (fragen kann man trotzdem). Aber es gibt genug von Usern
beigesteuerte Daten. Außerdem gibt's ja auch KICAD. Auch da ziemlich
viele Userlibs, aber auch da mehr oder weniger unsortiert.
In der Freie-Software-Bewegung wird das Lizenzproblem immer so
gehandhabt, dass das, was man wegen der Lizenzen nicht nehmen darf, von
den Leuten selbst nochmal gemacht wird. So wäre dieses Problem sicher
schnell behoben.
Der große Vorteil so einer Funktion wäre, dass man auf Knopfdruck eine
Bibliothek "Meine Bauteile" exportieren kann, sodass man in Eagle/KICAD
usw. nie mehr lange suchen und fragen muss.
Sowas würde natürlich einen Mechanismus erfordern, um die Daten mit
anderen Leuten und/oder einem zentralen Server austauschen zu können.
(Muss ja nicht alles sofort gemacht werden.)
Hi, ich habs mal auf meine ToDo liste geschrieben aber irgendwo am ende
:P
Zu den libs also was ich mal überlegt hatte ist die funktion für die
PDFs mit nen Uploder auszustatten man könte dann ja das so machen das
man damit dann aich libs und co. Hochladen kann.
Momentan bin ich an der Footprint Geschichte bei.
@ Bauteilegucker
Was verstehst Du genau unter "Muss da eigentlich jeder seine
Bauteildaten selbst eingeben?" Für mich macht es wenig Sinn, wenn ich
z.Bsp. auf all die tausend Bauteile von Farnell Zugriff haette. Wüsste
echt nicht, was ich damit anfangen sollte.
Aber vermutlich verstehe ich nicht, was Du meinst.
@ K. J.
Wenn Du auf Deiner ToDoList noch etwas Platz hast (kann auch ganz weit
unten sein) waere es praktisch, wenn man im Ansichtfenster die
angezeigten Spalten selbst waehlen könnte. Z.Zt. steht dort in der
letzten Spalte "Datenblätter".
Für mich persönlich waere es interessanter, dort den Preis zu sehen.
MfG aus Istanbul
Moin!
Hab mir das Script grade mal gezogen und erstmal muss ich sagen, dass es
einen netten eindruck macht.
Was mir sofort auffiel, dass die Links zu AllDataSheet und zu Reichelt
leider im main-Frame öffnen.
Wems besser gefällt, wenn die Links in einem neuen Fenster/Tab öffnen,
kann das ja auch spontan "nachrüsten.
Datei: showparts.php Zeilen 187,188
1
$Id:showparts.php,v1.112006/05/2321:47:14clExp$
im href-tag target=\"_blank\"
hinzufügen.
Und irgendwie wäre es schön, wenn man Datensätze mit anderen Usern
tauschen könnte, aber wie gesagt, so schaut des schon mal fein aus!
Gruß aus Hamburg,
Ole
Und nochmal.
Wollte grade mal das SMD package 0805 eintragen, aber die führende null
war dann weg.
in lib.php fand ich dann:
1
if(!is_numeric($value)){
2
$value="'".mysql_escape_string($value)."'";^
3
}
Aber in der DB ist das Feld für den Namen des footprints vom Typ
mediumtext.
Also warum nicht immer als string übergeben? In meinen Augen, macht es
die Sache einfacher besonders wenn man schon bilderchen für die
footprints hat, die mit führenden nullen benannt sind.
Ich habe die Funktion
1
functionsmart_escape($value)
kopiert und die kopie umbenannt nach
1
functionsmart_escape_pimp($value)
mit der Änderung:
1
if(!is_numeric($value))->if(1)
So wird nun jede eingabe als String verarbeitet.
Zusätzlich in fpmgr.php
1
if(strcmp($_REQUEST["action"],"a")==0)
2
{
3
$query="INSERT INTO footprints (name) VALUES (".smart_escape($_REQUEST["fpname"]).");";
4
debug_print($query);
5
mysql_query($query);
6
}
7
8
9
10
11
--->
12
13
if(strcmp($_REQUEST["action"],"a")==0)
14
{
15
$query="INSERT INTO footprints (name) VALUES (".smart_escape_pimp($_REQUEST["fpname"]).");";
16
debug_print($query);
17
mysql_query($query);
18
}
Mal sehen ob das anderswo Probleme bereitet.
Gruß aus Hamburg,
Ole
Hi, ja das sind so kleine macken die der jenige eingebaut hat der die DB
damals geschrieben hat da ich das nicht komplet neu schreiben wolte bin
ich grade bei so nach und nach alle fehler zu beseitigen.
hi leute,
ich bekomme beim aufrufen der Part-DB den gleichen Fehler wie Mehmet
weiter oben...
siehe: http://www.mikrocontroller.net/attachment/50059/part-db.jpg
Habe folgendes gemacht:
- XAMPP installiert
- Apache und Mysql erfolgreich gestartet
- mit mySqlAdmin Datenbank "partdb" erstellt und in lib.php eingetragen
siehe hier:
$link = mysql_connect ("localhost", "partdb", "");
mysql_select_db ("partdb");
- Tabellen mithilfe der sql-datei erstellt
- natürlich den user partdb angelegt, ohne Passwort.
Warum läuft das so nicht? Habe leider mit SQL bisher wenig Erfahrung,
bzw. bisher lief immer alles unproblematisch. Wer kann mir helfen?
Warum funktioniert das eigentlich nicht wenn ich ein Passwort angebe?
Ich bekomme dann eine Warnung weil PartDB nicht mit SQL vrbinden kann,
ohne PW kommt die Meldung nicht.
Gruss und schonmal Danke,
Chris
Ok, das oben habe ich nun doch hinbekommen, einfach nochmal alles neu
installiert, jetzt läufts. Muss irgendwie mit dem Passwort
zusammengehangen haben, habe mir diesmal von myPHPAdmin eins generieren
lassen, das ging dann.
Aber jetz: ein neuer Fehler, der mich noch viel Ratloser macht:
egal auf welchen der links auf der linken Seite ich anklicke, es
passiert nichts. Woran kann das nun liegen? Es kommt nichtmal ne
Fehlermeldung dass die Datei nicht gefunden wurde oder so.
Gebe ich den link direkt in die Adresszeile ein klappts.
Ich verzweifle noch...
ja und nein
der fehler mus was mit dem XAMP zu tun haben weis aber grade die lösung
nicht die links in der part-db sind nicht volstendig angegeben sondern
sind nur nen verweis auf ne datei.
sach mir mal welches xamp du verwendest den schue ich mal
Hi du!
Habe ich auch schon vermutet, muss irgendwas mit ner
Verzeichnis-Einstellung sein, denke ich. Weiß aber noch nicht wo, habe
mit Apache/ Xampp noch nicht wirklich viel gemacht.
Also: ich habe xampplite-win32-1.7.1 auf ner frischen XP Installation,
habe mir vor ein paar tagen nämlich nen neuen Werkstattrechner
installiert, wo dann auch ne gute Bauteileverwaltung Platz finden soll
;-)
Denke, wenn alles nichts hilft installier ich mit mal das "normale"
XAMPP.
Welches läuft denn bei dir ?
danke schonmal,
Chris
Hallo
@ Chris W.
ich hatte das gleiche Problem. Nach einigem Suchen bin ich auf den base
Tag (<base hre...> </base>)in der nav.php gekommen. Den habe ich
rausgenomen und nun läuft es.
Ich habe die Dateien direkt im www Verzeichnis liegen.
welchen Browser benutzt du ? wen ich das raus nehme bekomme ich in FF
das Menü nicht mehr aufgeklappt dafür funkt das Menü dann in opera echt
merkwürdig
Mittlerweile Firefox, dort lief die Part-DB zuletzt auch prima.
Allerdings muss ich sagen dass ich jetzt nach ausgiebigem Test lieber
das Programm "Teile" hier aus dem Forum benutze, das bietet einfach
etwas mehr Funktionen und Komfort. Gefällt mir (bisher) einfach besser.
Gruß Ch.
Hi zusammen!
Ich bin gerade dabei ein Parameter Template feature und eine
Baumstruktur bei den Lagerorten hinzuzufuegen.
D.h. im detail: jeder kategorie kann, muss aber nicht, ein Template
zugeordnet werden, das zusaetzliche Felder definiert. z.B. bei
Transistoren Umax, Imax, Ptot etc.. Beim anlegen eines Bauteils koennen
diese Felder dann befuellt werden.
Das ganze soll dann auch noch eine erweiterte Suchfunktion erhalten. So
dass z.B. alle Transistoren die Imax > 1A haben angezeigt werde.
Die Lagerorte sollen Baumartig strukturiert werde. So das ich z.B. einen
Lagerraum1 und Lagerraum2 haben kann, in Lagerraum1 steht dann z.B. das
Regal1 und dort in Fachboden3 liegt dann das Bauteil.
Wenn jemand an den Aenderungen interessiert ist kann er sich ja mal hier
melden. Dann stell ich mal hier die geanderte Version ein.
Gruss
Marc
Hallo,
seit langem such ich nach einer einfachen Lösung um mein Bauteilchaos
irgendwie in Griff zu bekommen.
Den Ansatz von Part-DB kenn ich schon seit längerem und war davon
eigentlich schon immer überzeugt. Die Problematik war, dass es immer
wieder Funktionsschwierigkeite gab.
Ich hab nun vor zwei Tagen die Rework Version auf einen XAMPP
installiert....
Leider tauchen nun ein paar Fehlermeldungen auf, vielleicht kann mir da
ja jemand von euch weiterhelfen. Eine der Fehlermeldungen hab ich mal
angehängt. Ein weiteres Problem stellt das hinzufügen von Bildern dar...
das funktioniert ebenfalls nicht.
Gruß Flo
Hi zu den bildern haste da ne fehlermeldung ? sind die rechte richtig ?
welche PHP version ?
bei der fehlermelung auf den bildern finde ich nichts könte an php
liegen
Arnulf schrieb:
> Es kann dir auch helfen, wenn du>> error_reporting(E_ALL);>> einfügst.
Das würde ich sowieso ganz dringend empfehlen, in jedem Skript.
Dass es nicht standardmäßig schon auf E_ALL steht, ist ein fahrlässiges
und ziemlich trauriges Bild und Relikt aus den Anfängen von PHP.
Ich habe mir da mal ein Python script zusammengekloeppelt um die Preise
automatisch runterzuladen, weil mich das originale Perlscript nicht
wirklich ueberzeugt hat.
Das Script funktioniert derzeit fuer Reichelt (Fuer Conrad und Pollin
sind stubs eingefuegt. Weitere Lieferanten kann man auch noch
hinzufuegen).
Es unterstuetzt die Suche nach den Reichelt Text-Bestell-"nummern" (also
fuer den Mega8 beispielsweise "ATMEGA 8-16 DIP"). Das script missbraucht
den Warenkorb um an den Preis zu kommen, weil die Suche zu
unzuverlaessig und oft merkwuerdige Ergebnisse liefert wenn man nach
Bestellnummer sucht.
Das Tool hat zwei Betriebsmodi: Alle Preise auffrischen (default) und
nur fehlende Preise einzutragen (--missing).
Das ganze funktioniert soweit ganz gut. Ich waere froh ueber
Rueckmeldungen.
Usage: ./partdb-autoprice.py [OPTIONS]
-H|--host HOSTNAME Use HOSTNAME as MySQL host (defaults to localhost)
-u|--user USER Use USER as MySQL user (defaults to root)
-p|--password PASS Use password PASS (defaults to prompt)
-d|--database DB Use the database DB (defaults to partdb)
-m|--missing Fetch and fill missing prices only (default off)
-h|--help Print this help text
Hallo,
habe die DB jetzt auch mal auf meinem Server aufgesetzt.
Es gibt auch keine Fehler alles funktioniert.
Außer das wichtigeste, das Menü :)
Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.
Es wird einfach nicht angezeigt.
Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte
hm kein Java/javascript ? denke mal so was wird des sein der einzige
Browser der bei dem Menü zikt ist eigentlich nur Opera, vielleicht wird
es auch wegen irgendwelcher Sicherheitseinstellungen geblockt.
Michael Buesch schrieb:
> Ich habe mir da mal ein Python script zusammengekloeppelt um die Preise> automatisch runterzuladen, weil mich das originale Perlscript nicht> wirklich ueberzeugt hat.>> Das Script funktioniert derzeit fuer Reichelt (Fuer Conrad und Pollin> sind stubs eingefuegt. Weitere Lieferanten kann man auch noch> hinzufuegen).> Es unterstuetzt die Suche nach den Reichelt Text-Bestell-"nummern" (also> fuer den Mega8 beispielsweise "ATMEGA 8-16 DIP"). Das script missbraucht> den Warenkorb um an den Preis zu kommen, weil die Suche zu> unzuverlaessig und oft merkwuerdige Ergebnisse liefert wenn man nach> Bestellnummer sucht.> Das Tool hat zwei Betriebsmodi: Alle Preise auffrischen (default) und> nur fehlende Preise einzutragen (--missing).>> Das ganze funktioniert soweit ganz gut. Ich waere froh ueber> Rueckmeldungen.>
Hi, Hab es noch nicht getestet aber würde es dich stören wen ich das ins
nächste Relyse mit intrigiere natürlich mit Namensnennung ?
Bin grade wieder dabei
So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup
habe :P
Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal
eingegebene preise das ist mehr als ungünstig.
Robin Tönniges schrieb:
> Es gibt auch keine Fehler alles funktioniert.> Außer das wichtigeste, das Menü :)> Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.> Es wird einfach nicht angezeigt.> Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte
Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt
in der nav.php.
Dort in der Zeile 86 ist öffnende Tag von PHP flasch.
es sollte
1
<?php
heißen.
Abspeichern und das Menü sollte funktionieren.
K. J. schrieb:
> So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup> habe :P>> Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal> eingegebene preise das ist mehr als ungünstig.
Das war kein fieser Fehler, sondern das ist so gewollt.
Ich habe das aber in der neuen Version (die diesem Beitrag anhaengt)
optional gemacht. Das Verhalten tritt jetzt nur noch auf, wenn man die
Option --override angibt.
A. M. schrieb:
> Robin Tönniges schrieb:>> Es gibt auch keine Fehler alles funktioniert.>> Außer das wichtigeste, das Menü :)>> Ich benutze Firefox habe es aber auch mit dem IE ausprobiert.>> Es wird einfach nicht angezeigt.>> Vieleicht kann mir da mal jemand nen Tipp geben woran das leigen könnte>> Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt> in der nav.php.> Dort in der Zeile 86 ist öffnende Tag von PHP flasch.> es sollte>
1
<?php
> heißen.> Abspeichern und das Menü sollte funktionieren.
Funktioniert leider auch nicht :(
Robin Tönniges schrieb:
> Funktioniert leider auch nicht :(
Vielleicht hast du eine Kategorie "IC's" angelegt? Deshalb hat bei mir
das Menü nicht funktioniert. Das "'" im Namen ist wohl ein Problem.
Michael Buesch schrieb:
> K. J. schrieb:>> So getestet und nen ganz fiesen Fehler gefunden gut das ich nen Backup>> habe :P>>>> Und zwar das wen er keinen Preis findet löscht das Ding auch schon mal>> eingegebene preise das ist mehr als ungünstig.>>> Das war kein fieser Fehler, sondern das ist so gewollt.> Ich habe das aber in der neuen Version (die diesem Beitrag anhaengt)> optional gemacht. Das Verhalten tritt jetzt nur noch auf, wenn man die> Option --override angibt.
Hi, super Arbeit funktioniert recht gut ist jedenfalls super wenn man es
nicht selber machen möchte habs mir aufm Server in nen crontab gebaut
damit es einmal die Woche abgeglichen wird ich hoffe mal Reichelt sperrt
das nicht irgendwann mal.
Hier ist eine neue Version von PartDB-autoprice.
Die Aenderungen sind:
* Pollin pricefetcher hinzugefuegt.
* Kleiner bugfix. Ein Fehlerbehandlungspfad in Reichelt-fetcher war
fehlerhaft (haha) und hat das script getoetet, wenn er denn ausgeloest
wurde. Der Fehlerpfad kann aber nur ausgeloest werden, wenn Reichelt die
homepage aendert und somit die regex nichtmehr zutrifft.
Der Pollin fetcher erkennt Bestellnummern im "00-000 000" oder "000 000"
Format. Leerzeichen spielen keine Rolle. Der Bindestrich wird zum
Erkennen der Variante genommen. Die Funktionsweise ist die gleiche wie
beim Reichelt fetcher ueber den Warenkorb.
Viel Spass!
Moin......
> Ja das stimmt. Hab es mir auch gerade runtergeladen. Das Problem liegt> in der nav.php.> Dort in der Zeile 86 ist öffnende Tag von PHP flasch.> es sollte>
<?php
> heißen.> Abspeichern und das Menü sollte funktionieren.
Der Fehler ist immer noch drinne, nun sind auch meine Menüs sichtbar...
Cooles Programm...
mfg Uwe
Uwe E. schrieb:
> Der Fehler ist immer noch drinne, nun sind auch meine Menüs sichtbar...> Cooles Programm...>> mfg Uwe
Ja ligt dadran das es noch keine neue version gibt hab noch einen bug
den ich vor der nästen ver weg haben möchte ich hoffe mal ich schaffe es
bis zum nästen we.
@ theborg0815:
Gibts irgendwo eine Beschreibung, wie man dein Paket installieren kann?
Ich habe im Moment part-db version 0.1d in einer virtuellen Maschine
installiert und würde gerne auf deine Version umsteigen.
Moin.....
Uhu Uhuhu schrieb:
> @ theborg0815:>> Gibts irgendwo eine Beschreibung, wie man dein Paket installieren kann?>> Ich habe im Moment part-db version 0.1d in einer virtuellen Maschine> installiert und würde gerne auf deine Version umsteigen.
@Uhu
würde ich mal per Mail machen, um das Forum nicht voll zu müllen.
@K.J.
Kann(darf) man eigentlich in diesem Wikiartikel hier zu Part-db als
Fremder (nicht Programmautor)auch reinschreiben ?? Ich würde dann die
Installation /Einrichtung etwas mehr beschreiben, oder unterstützen
wollen ??
mfg Uwe
@ Uwe E.:
Das hat leider nichts mit "Forum zumnüllen" zu tun. Siehe folgenden
Text.
@theborg:
Ich finde es wirklich schade, daß du dein Licht so unter den Scheffel
stellst und nichts dafür tust, den Zugang zu deinem Programm möglichst
leicht zu machen.
Ich hatte gestern versucht, über die Suchfunktion des Forums deinen
Wikiartikel zu finden - leider ohne Erfolg. (Von dessen Existenz wußte
ich von deinem Löschantrag für einen alten Artikel; der Löschantrag ist
aber offenbar mittlerweile selbst gelöscht ist.)
Wenn du in deinen vorheigen Beitrag einfach nur [[Part-DB RW -
Lagerverwaltung]] in [[]] geschrieben hättest, dann hätte ich ihn
schnell gefunden, statt hier erst mal sämtliche Beiträge durchsuchen zu
müssen, um dann im Beitrag "Re: PART-DB RW 1.2"
einen recht vagen Hinweis zu finden.
Mein Vorschlag: Setze doch einfach diesen Wikilink ans Ende jeden
Beitrags, den du hier schreibst. Das kostet keine Mühe und macht deine
schöne Arbeit anderen leicht zugänglich.
Wenn du willst, kann eine richtig schöne Installationsanleitung zu dem
Paket schreiben, die dann einfach mit ins Software-Archiv kopiert werden
kann.
Außerdem könnte man das gesamte Paket vorinstalliert in einer virtuellen
Maschine zum Download bereithalten. Das würde den Einstieg sehr
erleichtern.
Uhu Uhuhu schrieb:
> @ Uwe E.:> Das hat leider nichts mit "Forum zumnüllen" zu tun. Siehe folgenden> Text.>> @theborg:> Ich finde es wirklich schade, daß du dein Licht so unter den Scheffel> stellst und nichts dafür tust, den Zugang zu deinem Programm möglichst> leicht zu machen.>
Hm ich benutze immer grundsätzlich die Google suche auf der Hauptseite
die ist wesentlich besser.
Naja das hat auch gründe ich habe lange lange zeit OS SW geschrieben da
aber grundsätzlich ca.98% unproduktiv meckern hab ich da einfach keine
Lust mehr zu.
Ich Programmiere schon lange nicht mehr für andere sondern nur noch für
mich und das Veröffentlichen mach ich eigentlich nur noch nebenbei wenn
irgentwo mal zufällig Interesse besteht.
Part-DB RW - Lagerverwaltung
Mahlzeit....
>> Wenn du willst, kann eine richtig schöne Installationsanleitung zu dem> Paket schreiben, die dann einfach mit ins Software-Archiv kopiert werden> kann.
Das iss ja doll, ich beteilige mich auch gerne vieleicht als Quer oder
Korrekturleser oder so.... (iss sowieso mein Job)..
> Außerdem könnte man das gesamte Paket vorinstalliert in einer virtuellen> Maschine zum Download bereithalten. Das würde den Einstieg sehr> erleichtern.
Da habe ich keine Ahnung von... aber beim Programm kann ich auch noch
son paar Sachen mithelfen. Bin zwar kein Held in PHP und MySQL finde
aber ab und zu auch nen paar Macken:-)))
Haupsächlich bin ich an dem Programm interessiert. Ich ziehe gerade mit
meiner kleinen Hobby Werkstatt um und musste feststellen das ich diverse
Bauteile nun doppelt und dreifach habe.. 7805 habe ich jetzt 35 Stück.
Letzte Woche habe ich mir beim hiesigen Dealer noch welche gekauft.
grummel
Das Programm ist gut und nach meinem Geschmack..
@K.J. wenn ich was ändere schicke ich es Dir...
mfg Uwe...
Ok, abgemacht, ich kümmere mich um die Installationsanleitung und da ich
meine DB sowieso in einer VM installieren will, dokumentiere ich gleich
noch, wie ich sie zusammen gebaut habe und wie man sie zum Laufen
bringt.
Welche Web-Server benutzt ihr denn, um part-db zu betreiben?
Ich bin im Moment dabei, das Paket auf einer TurnKey MySql-Applience zum
Laufen zu bekommen. Dort ist Lighttpd (Ligthy) vorinstalliert. Dieser
Server läuft auch unter Windows.
Moin....
Uhu Uhuhu schrieb:
> Welche Web-Server benutzt ihr denn, um part-db zu betreiben?
@uhu
Ich nehme immer meine lokale linux Möhre.
ein schnelles opensuse 11.... ohne den grafischen schnickschnack. Das
ist meist in einer viertelstunde auf einem vorhandenen ausgemusterten
Rechner installiert.
Mysql einschalten
Apache einschalten
phpmyadmin draufspielen
zugangsdaten draufspielen
partdb raufkopieren, mittels samba die htdocs freigemacht,
passwortgeschnösel rausgeschmissen, da ist linux zu sicher das will ich
nicht.
Dann kannste von Windoof mittels Notepad++ an den php dateien spielen
und via webserver die Partdb bearbeiten.
Also das geht so gut bei mir.. das meine Söhne sich da jetzt auch schon
reinfummeln...
@K.J.
Meine EmailAddressen habe ich Dir per PM durch dieses Forum
geschickt....
So iss Sonntagnachmittag muss die Frau raustreiben..
Gruss Uwe
@ Uwe E.
Ich hab sowas schon öfters gemacht und ich muß doch sagen, daß es oft
nicht so glatt geht. Obwohl es relativ simpel gestrickt ist, steckt bei
bei part-db der Teufel im Detail und mit den bestehenden Beschreibungen
kommt man halt nicht weiter, wenn es auf Anhieb nicht klappt.
Deswegen ziehe ich für derlei Geschichten virtuelle Maschinen vor. Die
brauchen keine eigene Hardware und man kann sie in wenigen Minuten von
einer Systemplatte auf eine andere schieben.
Meine alte Version habe ich auf einer selbst zusammenkonfigurierten
Kommandozeilen-Linux-Version laufen. Hat aber den Nachteil, daß die
virtuelle Maschine relativ fett ist und damit kaum übers Web zu
verschicken ist.
Die TurnKey-Version kann man sich fertig mit Lighty, MySql, PhpMyAdmin
und Webmin als ~150 MB Zipfile herunter laden.
Allerdings rudere ich noch mit part-db, die die vorhandene und befüllte
DB aus irgendwelchen komischen Gründen nicht ansprechen will. Wenn ich
die angemeckerten Queries in PhpMyAdmin eingebe, dann funktionieren die
tadellos.
nabend
>Uhu Uhuhu schrieb:> Ich hab sowas schon öfters gemacht und ich muß doch sagen, daß es oft> nicht so glatt geht. Obwohl es relativ simpel gestrickt ist, steckt bei> bei part-db der Teufel im Detail und mit den bestehenden Beschreibungen> kommt man halt nicht weiter, wenn es auf Anhieb nicht klappt.
Bei der Part-DB ist eben noch alles recht einfach gestrickt. Aber man
erkennt schon die Grundzüge wie bei Joomla /Wordpress /oder anderen
solchen Websystemen, da hat man dann schon seine Erfahrung her.
Daher kann man schon erkennen, wenn es manchmal harkt. Nachdem die
Datenbankfehler dann alle weg waren, fehlte mir noch das Menü. Irgendwo
in diesem langen Tread hatte das auch schon jemand beschrieben (ein PHP
dingens fehlte noch irgendwo oder war falsch).
Ich habe das dann mal nachgetragen und ab da funktionierte das System.
Es ist zwar manchmal etwas eckig aber dafür ist es noch gut zu
überschauen.
> Deswegen ziehe ich für derlei Geschichten virtuelle Maschinen vor. Die> brauchen keine eigene Hardware und man kann sie in wenigen Minuten von> einer Systemplatte auf eine andere schieben.
Habe ich noch nie gemacht... VMs waren mir bis jetzt immer zu mächtig
> Allerdings rudere ich noch mit part-db, die die vorhandene und befüllte> DB aus irgendwelchen komischen Gründen nicht ansprechen will. Wenn ich> die angemeckerten Queries in PhpMyAdmin eingebe, dann funktionieren die> tadellos.
Hmmm, ich quäle mich gerade durch den HTML krams um die Menüs ein wenig
in eine andere Form zu bringen.... Ich hatte auch schon daran gedacht
eine Art AdminMode oder Menü für Datensicherungszwecke an/einzubauen
Nun ist das Wochenende vorbei mal sehen was die nächste Woche noch so
bringt...Das befüllen der Datenbank passiert schon gleichzeitig... :-)
Gruss Uwe
@theborg0815:
Firefox wird beim Betrieb von PartDB sehr schnell gähnend langsam. Ich
habe deshalb mal die Funktion "Validate Local HTML" des Add-ons
WebDeveloper gestartet und für die Anzeige von Teilen 8 Validation
Errors erhalten.
Es sind wohl im Wesentliche Tippfehler und fehlende Klammern, aber das
sind die Gurken, die FF erfahrungsgemäß zum Schleudern bringt.
Hi magste mir die Fehler ausgabe mal schikken ? hab zuhause leider
momentnan kein internet ca. ne woche noch alerdinks kann ich dan
schonmal vorarbeiten.
^^ sobald das inet bei mir wieder geht schike ich euch die mails mit der
aktuellen dev-version.
mfg tb
Pack nicht zu viel rein - das gelbe Fensterchen verschwindet nach kurzer
Zeit wieder. Wenn da zu viel Text drin ist, wirds nervig den zu lesen.
Das kannst du hier direkt ausprobieren:
Beitrag "Re: PART-DB RW 1.2"
Cursor über den Link halten...
@theborg0815:
Ich habe nochmal eine andere VM - diesmal mit apache2 - aufgesetzt und
stehe jetzt schon wieder vor demselben Problem, wie am Sonntag.
Folgendes habe ich nach dem Konfigurieren der VM gemacht:
- Über PhpMyAdmin eine Datenbank part-db angelegt
- Die Tabellen angelegt
- Meine Daten in part-db importiert
- Über Webmin einen User part-db ohne Paßwort angelegt
- Über PhpMyAdmin dem User part-db alle Änderungsrechte auf Daten in
der DB part-db gegeben
In PhpMyAdmin kann ich die Datenbank browsen. Siehe Screenshot2
- Part-DB-0.1.3b.tar.gz in /var/www entpackt
- das Verzeichnis /var/www/Part-DB umbenannt in /var/www/part-db
- chown -R www-data:www-data /var/www/part-db
- nano /var/www/part-db/lib.php
und dort folgende Änderungen in function partdb_init() gemacht:
$link = mysql_connect ("localhost", "part-db", "");
mysql_select_db ("part-db");
Wenn ich jetzt http://<ipadresse>/part-db aufrufe, dann kommt das Bild
wie im Anhang.
Was ist da kaputt?
Nachtrag:
Unter Lagerorte, Footprints, Kategorien, Lieferanten zeigt part-db keine
Einträge an, obwohl die DB dafür Daten enthält. (Sieht man im obigen
Screenshot2 daran, daß in der Spalte Action das Browse-Icon (das erste)
nicht ausgegraut ist.
Moin... nen bischen komisch geschrieben.....
Um auf eine Datenbank zuzugreifen, muss man sich bei der Datenbank
anmelden.
Mit Ipadresse/Hostname, Name, Passwort, Datenbankname.
Das wird im PHP Programm lib.php um die Zeile 50 herum gemacht.
Allerdings muss man auch seine Datenbank (MySQL) mit diesen Daten
einrichten.
Ich (grins) falle da jedesmal wieder drauf rein.... Wenn mal Zeit ist
muss man mal ein Admintool schreiben... Welches einen dabei hilft die
Vergesslichkeit zu verringern :-).....
Gruss Uwe
Hallo,
ich bin von der Part-DB sehr begeistert und würde diese
bauteilverwaltung gern in unserem Modellbahnverein einsetzten.
Vor keinigen Wochen konnte ich die Software live auf einer Ausstellung
bewundern.
Ein Aussteller hatte diese Software weitentwickelt. Er hatte
Exportfilter für PDF und Excel integriert, sowie eine Druckfunktion
direkt aus dem Browser heraus.
Diese version hatte auch eine Benutzerverwaltung und ein
Projektmanagment, man konnte Bauprojekte verwalten und die teile aus der
Datenbank wurden einbezogen.
Leider ist mir die Visitenkarte des Entwicklers verloren gegangen. Ich
weiß nur noch, dass er Frank wunderlich heißt und aus Dresden kam. Wir
hatten uns unterhalten und er sagte mir, dass er über dieses Forum auf
die Software aufmerksam wurde.
Vielleicht kennt hier jemand den Entwickler und kann mir seine
Kontaktdaten geben.
Danke.
Guten Morgen
Ich bin gerade dabei Part-DB ein wenig für den Eigenbedarf anzupassen.
Dabei habe ich festgestellt, dass es sehr mühsam ist Widerstände und
Ähnliche Bauteile einzupflegen. Grund: der Footprint, Lagerort usw.
setzt sich nach jedem Bauteil wieder zurück.
Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über
Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil"
Formular gespeichert werden
Einfach die zwei vorhandenen Dateien überschreiben (und ggf.
Sicherheitskopien erstellen).
Viel Spass damit
Uhu Uhuhu schrieb:
>> Wenn ich jetzt http://<ipadresse>/part-db aufrufe, dann kommt das Bild> wie im Anhang.>> Was ist da kaputt?
Normal du kanst in der config von MYSQL mehrere hostnamen angeben dann
klapt das auch z.b. DNS+Localhost+Locale IP....
Ist ne sicherheitzfunktion von MYSQL ebentso kanste aber auch ganze IP
bereiche da angeben.
Damit halt nicht jeder von überall Zugriff hat
Moin.....
Julian O. schrieb:
> Guten Morgen> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil"> Formular gespeichert werden>> Einfach die zwei vorhandenen Dateien überschreiben (und ggf.> Sicherheitskopien erstellen).>> Viel Spass damit
Danke, funktioniert.....
Gruss Uwe
Wolle noch anmerken wen jemand mitmachen möchte oder Aktuelle Betas
testen möchte kann mal unter folgenden Link schauen.
http://code.google.com/p/part-db/
Hallo K. J.
hab gleich mal die Beta installiert. Was bei mir nicht geht, umbenennen
von Fotprints.
Bei der 1.3b hab ich noch ein weiteres Problem (geht auch nicht bei der
Beta):
Hab von ner alten Version noch vom Christoph geupdatet. Irgendwie
bekomme ich es nicht hin, das er mir die schon vorhandenen Bilder der
Fotprints anzeigt.
Danke für deine Arbeit. Part-DB schaut so wirklich hervorragend aus!
Grüße,
Kille
Kille H. schrieb:
> Hallo K. J.>> hab gleich mal die Beta installiert. Was bei mir nicht geht, umbenennen> von Fotprints.>
Ja ist bekannt hänge da noch fest komme mit dem HTML Quatsch nicht klar
;(
> Bei der 1.3b hab ich noch ein weiteres Problem (geht auch nicht bei der> Beta):> Hab von ner alten Version noch vom Christoph geupdatet. Irgendwie> bekomme ich es nicht hin, das er mir die schon vorhandenen Bilder der> Fotprints anzeigt.
jo da hat sich einiges geändert die Bilder die du selber Hochgeladen
hast müssen nach ../img dann solte es wieder gehen.
Die Bilder die bei den Footprints schon mitgeliefert werden da steht
grob in der hilfe wie das geht.
wen du nen Fotprint bild hast /tools/foo..../ssop16.png z.b. dann wird
das nur angezeigt wen der Footprint ssop16 heist (Gross und
Kleinschreibung beachten).
K. J. schrieb:
> Die Bilder die bei den Footprints schon mitgeliefert werden da steht> grob in der hilfe wie das geht.>> wen du nen Fotprint bild hast /tools/foo..../ssop16.png z.b. dann wird> das nur angezeigt wen der Footprint ssop16 heist (Gross und> Kleinschreibung beachten).
Ahh danke für den Hinweis. Die Hilfe hab ich natürlich gelesen.
Allerdings hab ich das mit der Gross und Kleinschreibung nicht beachtet.
Jetzt funzts!
Was noch cool wär, wenn Du noch den Dateinamen unter Tools Fotprints
einblenden kannst.
Grüße
Kille
K. J. schrieb:
> Ja ist eins der vielen Sachen hätte die Liste da gerne PHP generiert und> nicht statisch wie es jetzt ist.
Dynamisch wär natürlich fein. Aber die Sachen die man selber hinzufügt
sollte man ja kennen.
Jetzt Hab ich mal meine Fotprints manuell umbenannt. Jetzt ist alles gut
;-)!
Grüße,
Kille
Uwe E. schrieb:
> Moin.....>>> Julian O. schrieb:>> Guten Morgen>>> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über>> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil">> Formular gespeichert werden>>>> Einfach die zwei vorhandenen Dateien überschreiben (und ggf.>> Sicherheitskopien erstellen).>>>> Viel Spass damit>>> Danke, funktioniert.....>>> Gruss Uwe
Grmppf funktioniert doch nicht.... Der Mindestbestand wird trotz
gesetztem Häckchen immer wieder auf "0" gesetzt obwohl ne 5
o.ä.eingegeben wurde....
Gruss Uwe
Moin... Hat das schon mal jemand mit den Bildern hinbekommen ????
Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe
hochgeladen... Das Bild wird nirgendwo gezeigt.... Das Bild ist auch
nicht sehr gross (6KB)
Was ist eigentlich mit einem "FOOTPRINT" gemeint?
Ich brauche den eigentlich nicht, muss Ihn aber überall zwingend
eingeben.
Da ich alles an Material in die Datenbank drücke, auch Dübel und
Schrauben, sehe ich den Sinn für ein Footprint nicht, wofür ist denn
dann das Bild (welches gerade im Moment bei mir nicht funktioniert).
Gruss Uwe
Uwe E. schrieb:
> Moin... Hat das schon mal jemand mit den Bildern hinbekommen ????>> Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe> hochgeladen... Das Bild wird nirgendwo gezeigt.... Das Bild ist auch> nicht sehr gross (6KB)>> Gruss Uwe
Hi das mit den bildern funktioniert bei mir jedenfalls sowohl bei der
0.1.3b als auch bei der SVN Version, gezeigt werden sollte es bei der
bauteielliste links neben dem Link zum editieren.
eventuel haste die rechte von /img nicht richtig ? liegt das Bild denn
da drinnen ?
Moin....
K. J. schrieb:
>> Ich habe mir ein Artikel Bild in JPG gebau und bei der Teile Eingabe>> hochgeladen... Das Bild wird nirgendwo gezeigt.... Das Bild ist auch>> nicht sehr gross (6KB)>>> Hi das mit den bildern funktioniert bei mir jedenfalls sowohl bei der> 0.1.3b als auch bei der SVN Version, gezeigt werden sollte es bei der> bauteielliste links neben dem Link zum editieren.>> eventuel haste die rechte von /img nicht richtig ? liegt das Bild denn> da drinnen ?
Die Rechte des Verzeichnisses sind hoch (47777) daran wir es nicht
liegen (hoffe ich) die Dateien sind in de Rechte auch sehr hoch und
liegen im Verzeichniss /img mit den Verzeichnisst Footprint und noch
zwei weitere...
Beide Browser IE8 und FF3.5 zeigen keine Bilder... Interessant ist das
der IE8 auch das CSS nicht richtig auseinanderfusselt. Bei IE8 ist der
Hintergrund komplett grün beim FF3.5 ist der Farbverlauf einwandfrei zu
sehen...
mfg Uwe
Hi Uwe,
>>> der Footprint, Lagerort usw. setzt sich nach jedem Bauteil wieder zurück.>>> Abhilfe: newpart.php und showparts.php angepasst. Man kann jetzt über>>> Checkboxen auswählen ob und wenn ja welche Daten im "neues Teil">>> Formular gespeichert werden>>>> Danke, funktioniert.....>>> Grmppf funktioniert doch nicht.... Der Mindestbestand wird trotz> gesetztem Häckchen immer wieder auf "0" gesetzt obwohl ne 5> o.ä.eingegeben wurde....
habs gefixt. War ein ck statt einem c in einem Variablennamen.
Vielleicht sollte ich in Zukunft doch früher ins Bett...
@theborg:
>Wolle noch anmerken wen jemand mitmachen möchte oder Aktuelle Betas>testen möchte kann mal unter folgenden Link schauen.>http://code.google.com/p/part-db/
ähm: wie kann man da partizipieren? Gibts da irgend eine art
"To-Do"-Liste?
Moin...
Ich habe auch ein File angepasst, ich habe nur das Aussehen von der
Maske versucht anzupassen,... bin halt auch kein HTML in PHP Freak....
Ansonst werde ich mal mit Subversion rumspielen und hoffe da es uns
helfen kann unsere Files besser bereit zustellen...
aber die Zeit die Zeit.....
gruss Uwe
Hi kanst auch gerne die dateien / diffs hier Posten ich schau mir an
finde es auch wichtig das nicht alles übernommen wird sondern nur das
was sinnvoll ist
So hab grade mal nen neues Paket gepackt allerdings sind immer noch
einige Fehler drinnen.
z.b.
Umbenennen der Footprints
Das mit den Titel popups geht noch nicht.
und es hat sich was geändert die Config Daten stehen jetzt in der
config.php das macht das updaten einfacher, also beim einspielen drauf
achten das man die Daten da einträgt.
http://part-db.googlecode.com/files/Part-DB-0.1.4RC1.tar.gz
Hallo theborg,
vielen Dank für eine neue Version.
Habs mal gleich getestet! Wo genau liegen da die unterschiede?
Was mir aufgefallen ist:
Es lassen sich kategorien löschen wenn sie unterkategorien haben.
Bilder für reichelt und datasheet gehen jetzt.
Die Part-DB Version die oben angezeigt wird ist noch 1.3...
Ansonsten find ichs Prima!
Grüße,
Kille
Hallo zusammen,
ich weiss, der Beitrag ist schon älter, aber meine Wünsche passen eben
gut in diesen Thread :-)
Ich nutze die Part-DB schon seit über zwei Jahren und habe kürzlich erst
die neue Version von theborg installiert - ein wahrer Fortschritt!
Da ich kaum Ahnung von PHP habe, würde ich mir wünschen, dass folgende
Funktion implementiert wird:
- Auflisten der Bauteile an einem bestimmten Lagerort
Ich benutze eine Kiste als Lagerort, in der Neuzugänge erst mal gelagert
werden, bevor sie einsortiert werden. Oft würde ich gerne wissen, was
denn noch in der Kiste drin ist - verliere oft den Überblick :-(
Andere Wünsche wurden schon genannt, z.B: mehrere Lagerorte pro Bauteil
(z.B. 5 Stk. im Kleinteilemagazin, 2 Stk zum Einsortieren und 1000 Stk
in der Überbestandskiste). Die Bauteile nochmal mit anderen Lagerorten
anzulegen hat diverse Nachteile (z.B. Mindestbesstand, Bestelliste).
Vielleicht kann man das in den nächsten Evolutionsschritt mit einbauen,
wäre eine echte Bereicherung.
Ciao ...
Baumix
Hallo Zusammen,
wollt auch nochmal nen Wunsch mitteilen, wäre es möglich, eine Historie
darüber zu erstellen wann Bauteile geändert/hinzugefügt/entnommen
wurden?
Ein weiter Wunsch, der auch schon mal gewünscht wurde, wäre mehrere
Lagerorte gleichzeitig zu Erstellen z.B. Kiste1_[1..100] erstellt
Kiste1_1 Kiste1_2 ... Kiste1_100
Gruß Dennis
Und noch was, ein Button Entnehmen/Hinzufügen hinter jedem gefunden
Bauteil in der Suchergebnistabelle wäre doch auch Nützlich oder? Das
erspart einem oft das Öffnen, Menge eingeben und Entnehmen/Hinzufügen
klicken
Gruß Dennis
(ps sorry editieren geht nicht)
Hallo zusammen,
Erstmal großes Lob an die Leute die das Projekt am Leben erhalten und
weiterführen! Habs auf meinen Server hochgeladen und funktioniert auch
alles tadellos. Das einzige Problem was ich habe ist das ich das Python
Script, um die Preise zu updaten, nicht zum laufen bekomme. Muss ich das
hochladen und im Browser irgendwie aufrufen oder in der index.php oder
irgendeiner anderen php seite ausführen? Wenn ja mit welcher Codezeile
bewerkstellige ich das? Vielen dank schonmal im vorraus
Wow, richtig fix die Leute hier! Gerade mal einen Monat musste ich auf
ne brauchbare Antwort warten. Reife Leistung wenn man bedenkt das ein
Großteil der Leute hier das Teil schon zum laufen gebracht hat. Traurig
das nur mit nachdruck die Ignoranz der User hier zu durchbrechen ist.
Das ist im übrigen nicht nur hier der Fall sondern auch in vielen
anderen Threads in diesem Forum (also für den Fall das jetzt jemand auf
die Idee kommt mich hier als kleinlich zu betiteln)
Bevor mir jetzt irgendeiner wutentbrannt diverse Posts um die Ohren haut
was mir wohl einfallen würde mich hier über eine Nichtbeantwortung
meiner Anfängerfrage aufzuregen:
Ja mir ist klar das das hier kein Supportcenter ist
achja: Der Beitrag ist mir bekannt. Es steht schließlich nicht umsonst
über dem Eingabefenster: " - erst lesen, dann posten!"
Pascal N. schrieb:> Das ist im übrigen nicht nur hier der Fall sondern auch in vielen> anderen Threads in diesem Forum (also für den Fall das jetzt jemand auf> die Idee kommt mich hier als kleinlich zu betiteln)
Andreas nimmt gerne deine Accountabmeldung entgegen - dann hast du
keinen Grund mehr, dich hier langweilen zu lassen.
Uhu Uhuhu schrieb:> Andreas nimmt gerne deine Accountabmeldung entgegen - dann hast du> keinen Grund mehr, dich hier langweilen zu lassen.
so sehe ich die Sache auch.
Braucht jemand Hilfe, wartet man einen Monat. Äussert man seine Meinung
wird binnen einer Stunde auf dem Post reagiert... Was läuft hier falsch,
das der kleine unwissende user grundlos mit ignoranz gestraft wird wenn
er hilfe braucht?
Langweilen lassen? Auch für dich gilt: " - erst lesen, dann posten!".
Kann mich nicht daran erinnern etwas von langweilen lassen geschrieben
zu haben. Naja es ist schon ein schweres Los wenn einen die ganzen
Buchstaben verwirren...
Überrascht mich jetzt nicht das hier direkt mit Accountlöschung reagiert
wird, das war abzusehen....
Hm, verstehe dein Problem nicht genau du hast es erfasst es steht da
oben irgentwo alles weitere musste halt schauen nicht jeder hat die zeit
hier permanent rein zuschauen zumal die posts in diesen forum anhand der
menge auch mal untergehen, b.z.w. wie du das mit php/crontab ... und co.
ausführst hat nichts mit der Part-DB direkt zu tun sondern ehr mit
deinen Server oder deinen eigenden intebsionen.
Per PHP direkt oder über die part db wird das nie gehen weil das eine
funktion wehre die sicherheitztechnisch fragwürdig ist b.z.w. auch nicht
unterstützt wird (savemode...)
Hallo zusammen,
ich habe ein paar Features eingebaut, hier die Hauptänderungen:
- Buttons zum Entnehmen/Hinzufügen in Such und Listenansicht hinzugefügt
- Suche nach Lagerorten hinzugefügt
- Suchliste zeigt jetzt auch thumbnails an
- Im Teile Hinzufügen Dialog direkteingabe von Lagerorten, Footprints
und Lieferanten möglich (nicht existierende werden erzeugt)
- Beim Hinzufügen eines Teils kann jetzt auch gleich ein Bild angehängt
werden
Gruß Dennis
Hallo zusammen,
Hier noch ein paar Verbesserungen,
- Dialoge sind jetzt modal
- Dialoge werden automatisch nach submit geschlossen
- Haupttabelle wird nach eine Änderung automatisch neu geladen
Gruß Dennis
Hi, thx sieht gut aus einige kleinere Sachen die mir so aufgefallen sind
aber da schaue ich am we nochmal drüber, b.z.w. ich tu mich mit den html
form Geschichten immer etwas schwer so als Idee konnte man statt den
Buttons nicht einfach nen up/down Pfeil machen die sind kleiner und man
kann sie direkt neben der mengenangabe platzieren.
mfg k.j.
Ach Mist - nun habe ich zu lange gewartet. Ich hatte die PART-DB
schonmal umgeschrieben auf OOP und CSS Nutzung, aber das nun wieder
einzumischen wäre ein Horror.
So, nun habe ich dann mal den aktuellen Stand besorgt. Ich hätte ein
Bitte für ein Feature (was ich bei mir auch noch nicht implementiert
hatte): Bei den Ablageorten würde ich meine Sortierkästen eintragen (da
diese durchnummeriert sind) und würde gerne die Fachnummer mit angeben.
Gleiches für die hier bei Biozym bestellten SMD Boxen. Somit fehlt mir
bei den Ablageorten eine Unterinformation. Deluxe Edition wäre dann
natürlich, wenn man Ablagetypen definiern kann (Also Typ + Fächer) und
dann einfach bei den Ablageort den Typ angibt und somit gleich die
Fächer hat.
Ich weiss nur nicht wann ich mal wieder Zeit finde, weil dann würde ich
nochmal schauen die CSS und OOP Änderungen erneut zu implementieren.
K. J. schrieb:> ich tu mich mit den html> form Geschichten immer etwas schwer
ging mir ähnlich ^^ vorallem das man forms nicht verschachteln kann;)
K. J. schrieb:> so als Idee konnte man statt den> Buttons nicht einfach nen up/down Pfeil machen die sind kleiner und man> kann sie direkt neben der mengenangabe platzieren.
Ja das ist keine schlechte Idee;) werde nächste Woche mal danach
schauen.
Thomas K. schrieb:> Bei den Ablageorten würde ich meine Sortierkästen eintragen (da> diese durchnummeriert sind) und würde gerne die Fachnummer mit angeben.
Hm klingt nicht schlecht ich habe eigentlich das gleiche Problem, mal
schauen ob das einfach geht ^^
Gruß Dennis
Hallo,
ich habe PartDB jetzt auf auf einem neuen Webspace installiert. Wie kann
ich die bisherigen Einträge importieren, in welcher Datei sind diese
Einträge gespeichert.
Wie kann ich den Zugriff auf die PartDB vor unbefugten Personen
schützen?
Danke
Gruß txt
txt schrieb:> Hallo,>> ich habe PartDB jetzt auf auf einem neuen Webspace installiert. Wie kann> ich die bisherigen Einträge importieren, in welcher Datei sind diese> Einträge gespeichert.>> Wie kann ich den Zugriff auf die PartDB vor unbefugten Personen> schützen?>> Danke>> Gruß txt
Wenn du das schon auf nen alten Server hattest musst du einfach nur die
MSQL DB auf den neuen übertragen.
Wenn nicht das SQL file in eine frische DB laden und die Daten in der
config.php anpassen.
K. J. schrieb:> Wenn du das schon auf nen alten Server hattest musst du einfach nur die>> MSQL DB auf den neuen übertragen.>>>> Wenn nicht das SQL file in eine frische DB laden und die Daten in der>> config.php anpassen.
Hat jetzt geklappt, danke. Auch die Zugriffsbeschränkung mit htaccess
läuft.
Gruß txr
Hi,
vielen Dank für das gute Tool. Mir ist beim eingeben meiner Teile in
part-db aufgefallen, dass man eingegebene Teile nicht in eine andere
Kategorie verschieben kann. (Fatal error: Call to undefined function
ebug_print() in /var/www/part-db/editpartinfo.php on line 54). (Part-DB
V0.1.4RC2 und VM: Turnkey lamp).
Gruss Ansgard
Hallo Ansgard,
da hat sich wohl der Fehlerteufel eingeschlichen,
ich kann aktuell kein Update des svn rep. machen, daher im Anhang die
gefixte file. Einfach die alte mit der im file im Anhang überschreiben.
Gruß Dennis
Hallo
Alles läuft bei mir bis auf das script für die Preise.
Wenn ich das starten will kommt eine Fehlermeldung(siehe Bild). Die
angegebene Datei existiert gar nicht. Ich habe mal nach der Datei
gesucht und sie im Verzeichnis /opt/lampp/var/mysql/ gefunden.
Kann man das Script irgendwie unschreiben das es im anderen Verzeichnis
sucht?
mfg
Dmxfreaky
Wenn ich mich nicht täusche wird ~/.my.cnf ausgewertet. Wo das unter
Windows zu finden ist kann ich dir aber nicht sagen.
Spricht etwas dagegen "-H 127.0.0.1" an das Script zu übergeben?
Gruß
f
Hallo,
ist es bei euch möglich das zu erweitern,
wollte das beim
"Neues Teil in der Kategorie" Footprint ,Lieferant und Lagerort per
eingab durchgeführt werden können und nicht wie jetzt durch vor
erstellte Auswahl.
und das bei der "Anzeige der Kategorie" die Typen Footprint ,Lieferant
und Lagerort erscheinen!
geht das!
wehre Nett wen sich einer meldet
ich benutze die 1.4 Version
Dimma schrieb:> weist einer warum bei mir die Bilder nicht dargestellt werden!> siehe Anhang
Hi, mach mal rechte Maustaste auf das Bild und dann Bildereigenschaften
und schau ob der Link passt, normalerweise ist für Dioden standardmäßig
kein Footprintbild gesetzt haste das bild selber hochgeladen ?
nein die dateien werden nicht in der db abgelegt sondern in nem ordner
auf der platte und php, der webserver und der user müssen dadrinne
schreib und leserechte haben b.z.w. schreibrechte die partdb setzt die
leserechte nach dem upload automatisch
Stas schrieb:> Hallo,> ist es bei euch möglich das zu erweitern,>> wollte das beim> "Neues Teil in der Kategorie" Footprint ,Lieferant und Lagerort per> eingab durchgeführt werden können und nicht wie jetzt durch vor> erstellte Auswahl.>> und das bei der "Anzeige der Kategorie" die Typen Footprint ,Lieferant> und Lagerort erscheinen!>> geht das!>> wehre Nett wen sich einer meldet>> ich benutze die 1.4 Version
Hallo,
in der neusten version ist das doch bereits integriert?
Einfach in das Eingabefeld neben der Auswahlliste den zb lagerort
eingeben, wenn dieser nicht existiert, wird er angelegt.
Vielleicht könnte k.j. mal das aktuelle repository packen und verlinken?
Gruß Dennis
und ist es noch möglich das anzupassen,das wenn ich ein Kommentar
verfasse dieser auch die den Zeilensprung(durch Enter)im Fenster
Detailinfo mit übernommen wird und nicht einfach dahinter gesetzt wird.
Das mir der Grafik Upload wäre auch noch wichtig:welche Infos benötigt
Ihr dazu von mir.
Dennis L. schrieb:>> in der neusten version ist das doch bereits integriert?> Einfach in das Eingabefeld neben der Auswahlliste den zb lagerort> eingeben, wenn dieser nicht existiert, wird er angelegt.>> Vielleicht könnte k.j. mal das aktuelle repository packen und verlinken?>> Gruß Dennis
jap werde ich heute Abend mal machen
kann mir einer ein Ansatz geben wo ich die Sache mit den Kommentar finde
(den Code oder Datei dafür) um es selber ändern zu können!
und den Code oder Datei mit den Bild Uploaden
Moin moin,
ich teste gerade auch mal partDB (0.1.4RC3) und habe ein paar Fragen
dazu:
- Die Footprints sind nur rein informativ, werden also nirgends mit den
Bauteilen verknüpft?
- Wofür sind die Logos? Werden die irgendwo verwendet?
- Wie kann man abschalten, dass die Popups modal sind? In Zeiten von
tabbed browsing ist das eher kontraproduktiv finde ich.
- Gibt es Vorlagen für Kategorien oder kann/muss die sich jeder selber
anlegen?
Ansonsten gefällt mir das Ding bisher recht gut, tolle Arbeit!
Gruß
Dominique Görsch
Dominique Görsch schrieb:> - Die Footprints sind nur rein informativ, werden also nirgends mit den> Bauteilen verknüpft?
Anhand der Fottprint daten d.h. du hast ein das SOIC16W heist ist das
automatisch mit dem bild SOIC16W.png verknüpft in /tools/footprints.
> - Wofür sind die Logos? Werden die irgendwo verwendet?
Rein informatif es ist eine samlung aus IC logos + Hersteller
> - Wie kann man abschalten, dass die Popups modal sind? In Zeiten von> tabbed browsing ist das eher kontraproduktiv finde ich.
Gibt keine Funktion dafür.
> - Gibt es Vorlagen für Kategorien oder kann/muss die sich jeder selber> anlegen?
Muss sich jeder selber anlegen.
Dominique Görsch schrieb:> - Wie kann man abschalten, dass die Popups modal sind? In Zeiten von> tabbed browsing ist das eher kontraproduktiv finde ich.
Die modale darstellung wird benötigt um die Seite nach einer Änderung zu
aktualisieren, allerdings gefällt mir das handling auch nicht besonders,
da man ja gerne mal noch was schauen möchte, abhilfe wäre den browser
zweimal zu starten.
Dennis
So jetzt muss ich hier auch mal meinen Senf dazugeben :D
Aber erstmal ein grosses Lob, das "Programm" ist echt super gelungen!
Was mich momentan aber noch etwas stört ist die Tatsache, dass man beim
anlegen eines neuen Teiles den Preis nicht angeben kann. Man muss ja
immer erst das Teil anlegen, Danach auf den entsprechenden Eintrag in
der Liste klicken, auf "Ändern" klicken, und kann erst dann den Preis
angeben.
Das wäre doch keine grosse Sache, das noch zu machen oder?
Leider bin ich in PHP nicht wirklich fit, sonst würde ich das auch
selber machen ;)
Was auch noch ganz genial wäre, wenn man bei der "config.php" Die
Währung bestimmen könnte, damit die Schweizer (wie ich^^) nicht nach
jedem Update überall das "€" durch "SFr." ersetzen müssen :D
Aber das wäre natürlich das "Tüpfchen auf dem I".
Das soll einfach als Anregung gedacht sein. Wenn es zeitlich nicht
drinliegt da noch was zu machen (ich weiss nicht wie aktuell das Projekt
noch ist?!) dann wirds halt eben nicht gemacht ;)
Grüsse aus der Schweiz
Urban
Alles klar, danke dir schonmal im voraus :)
Jetzt kommt endlich etwas Ordnung in mein ganzes Sortiment... Bin schon
stuuundenlange am Teile eingeben, umsortieren, beschriften usw. aber ich
denke mal das lohnt sich total :)
Hallo,
erst mal von mir auch ein großes LOB !
Heute habe ich auf den letzten Stand vom SVN upgedated.
Dabei stellte ich fest das es nicht mehr funktionierte. Lag an meiner
mysql config, nur wurde kein Fehler ausgegeben, da dies bisher nicht
ausgewertet wird.
Mein Vorschlag wäre die config.php so abzuändern:
1
function partdb_init()
2
{
3
/* Enter your MySQL username and password here. For
4
optimal protection you should adjust the UNIX perms
5
of this file in a way only the PHP interpreter can read
6
it. But this does not protect your data from malcious
7
users. Each user should run his PHP scripts with his
Danke !!! Ist schon mal im SVN drinnen, werde es aber noch etwas
erweitern mal schauen wann ich dazu komme wollte das Projekt eh mal
wieder auskamen.
mfg tb
So hab wieder etwas gebastelt, nicht viel aber ich werde mich in Nester
zeit wieder etwas darum kümmern.
DL:
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.1.4RC5.tar.gz&can=2&q=
Hab die Logos Überarbeitet (noch nicht ganz fertig)(suche da noch Hilfe
wie man die Bilder transparent bekommt per Skript)
Tool -> Footprints werden automatisch gelistet.
DBcheck THX to jsachs
Hi,
habe heute versucht, die neue Version aufzuspielen. Leider gelang es mir
nicht sofort. Der Browser öffnete sich mit richtiger Bezeichnung, aber
die Seite war leer. Nach längeren suchen stellte ich fest, das in der
config.php die Zeile "if ($link)" nach "$link = mysql_connect
("localhost", "part-db", "PARTdb")" fehlte. Durch einsetzen der Zeile
funktioniert es jetzt auch bei mir.
Gruß Ansgard
Nachdem ich nun endlich dazu gekommen bin mich intensiver damit zu
befassen, habe ich auf die schnelle zwei kleinere Bugs entdeckt:
- bei den Footprints werden führende Nullen abgeschnitten. So wird aus
"0805" nachher "805".
- Liste zum Bearbeiten der Kategorien ist nicht alphabetisch sortiert
Wishlist:
- Name des Footprints als Tooltip über den Bildern unter
Tools/Footprints
- Footprint, Lagerort und Lieferant keine Pflichtangaben
- Nachfragen wie "Wirklich löschen?" alternativ per Javascript anstatt
der Seite als Zwischenschritt. Vielleicht auch alternativ ganz
deaktivierbar?
Gruß Domi
Dominique Görsch schrieb:> Auch nach über drei Wochen kein Kommentar dazu? Schade!
Hi, ja ist bekannt momentan habe ich aber einfach nicht die Zeit dafür,
aber steht auf der ToDo liste.
Hi, hab die Footprints Tabellen gefixt damit führende Nullen drinnen
bleiben
Entweder ihr stellt es in der DB auf longtext(15) um, oder ihr ladet
einfach die createtabels.sql (aus dem SVN) neu in die DB, Backup machen
nicht vergessen.
Hi,
ich habe gerade erfolgreich die Version 0.1.3 installiert und ein wenig
damit rumgespielt. Dabei bin ich darüber gestolpert, daß ich ein BAuteil
nur eintragen kann, wenn auch ein Lieferant eingetragen ist. Klar kann
ich einen Dummy erzeugen, wenn ich keinen Lieferanten habe, aber
leerlassen des Feldes sollte auch gehen.
Ansonsten gefällt mir das Program schon recht gut. Möglicherweise finde
ich dann demnächst auch mal meinen ganzen Kleinkram wieder:-)
Gruß
hm da du noch eine alte Version drauf hast magst mal testen ob mit FF4
das menü noch geht ?
bei mir will es nicht mehr bin mir aber nicht sicher ob es an FF4 liegt
oder woanders dran.
@ deiner Anmerkung ja das ist mir auch schon negativ aufgefallen.
Dominique Görsch schrieb:> - Name des Footprints als Tooltip über den Bildern unter Tools/Footprints
Ich hab die footprints.php mal dahingehend angepasst, dass nun die
Bezeichnungen als Tooltips angezeigt werden.
Einfach die die vorhandene Datei ersetzen und es sollte funktionieren.
Getestet mit V0.1.4RC5.
Dimma schrieb:> und ist es noch möglich das anzupassen,das wenn ich ein Kommentar> verfasse dieser auch die den Zeilensprung(durch Enter)im Fenster> Detailinfo mit übernommen wird und nicht einfach dahinter gesetzt wird.
Dazu in der Datei partinfo.php die Zeile 96 durch folgendes ersetzen
Hallo,
Ich habe mir gerade die neuste Version vom SVN runtergeladen und
installiert unter Ubuntu 11.04.
Nun funktioniert aber das Menü nicht mehr, also ich kann es nicht mehr
aufklappen. Alles andere funktioniert. Muss also irgendwie ein Problem
mit Javascript sein oder?
Ich habe die Dateien nach /var/www/part-db kopiert und folgende Befehle
ausprobiert:
sudo chown www-data:www-data -R /var/www/part-db
sudo chgrp -R www-data /var/www
sudo chmod g+w /var/www
sudo chmod 0775 /var/www
sudo /etc/init.d/apache2 restart
Mein Benutzer ist Mitglied der Gruppe www-data.
Ich muss sagen, ich bin nicht so vertraut mit den oben genannten
Terminal-Befehlen. Stimmt da etwas nicht?
Ich glaube sogar, dass der Fehler seit dem Update auf Ubuntu 11.04
auftritt.
Weiss da vielleicht jemand was man da machen kann?
mfg
theborg1 schrieb:> hi benutzt du Firefox4 ?>> wen nicht welchen browser ?
Hoppla, ganz vergessen zu erwähnen ;)
Jap, benutze Firefox 4.0.1
Habe schon bei Google und direkt auf ubuntuusers.de gesucht, konnte aber
nichts passendes finden.
Wenn sich das Problem länger nicht lösen lässt, werde ich wohl mal im
Ubuntu Forum nachfragen.
mfg
Hi lade dir mal die nav.php aus dem svn die sollte unter 4.0.1
funktionieren, es gibt leider noch andere Probleme leider die ich
momentan nicht fixen kann da ich kein javascript kann.
z.b. läd die seite wen man ein Footprintbild anklickt...
ansonsten hat sich generell im SVN die letzten tage eine menge getan.
Hallo,
wollte heute das mit der "Footprints" Tabelle ausprobieren. Datenbank
gelöscht und neu erstellt, Import createtables.sql. Leider kommt beim
Import folgender Fehler.
-- Table structure for table `footprints`
--
CREATE TABLE `footprints` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` longtext( 15 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;
MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near '(15) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM' at line 9
Viele Grüße
Ansgard
Hi, ist gefixt wen du das von hand machen möchtest in der .sql
zeile 49 muss wie folgt ausehen ansonste ist es jetzt auch im SVN.
`name` longtext NOT NULL,
mfg theborg
theborg1 schrieb:> Hi lade dir mal die nav.php aus dem svn die sollte unter 4.0.1> funktionieren, es gibt leider noch andere Probleme leider die ich> momentan nicht fixen kann da ich kein javascript kann.>> z.b. läd die seite wen man ein Footprintbild anklickt...>> ansonsten hat sich generell im SVN die letzten tage eine menge getan.
Hallo,
OK also habe nochmal das komplette Paket "Part-DB-0.1.4RC5"
runtergeladen und nach "/var/www" kopiert.
Leider hat das nichts gebracht, das Menü funktioniert nach wie vor
nicht. Ich kann zwar Hauptkategorien anklicken und die Teile werden
angezeigt, aber aufklappen kann ich das Menü nicht.
Mit der Datenbank kann das ja nichts zu tun haben, oder? Sonst könnte
ich mal die DB neu installieren.
Übrigens funktioniert die "config.php" nur, wenn ich den else-Zweig
entferne. Wenn dieser drin ist, lädt überhaupt nichts, nur weisser
Bildschirm.
Gruss
Urban
hi, in dem Archiv ist der FIX noch nicht drinnen du musst schon die
nav.php aus dem svn nehmen, werde die tage aber noch nen neues Paket
zusammen Packen.
Ach soo, jetzt habe ich das erst richtig verstanden mit dem SVN^^ Ich
dachte, das Archiv wird auch automatisch aktualisiert...
Jetzt mit der neuen nav.php funktioniert das Menü wieder!!
Vielen Dank! :D
Hi da.
Würde die Anwendung mir gerne einmal anschauen.
Auf der Homepage dieser steht:
"Seit 27.02.06 gibt es die Möglichkeit, die part-db online
auszuprobieren"
Leider ist die Online-Demo scheinbar gerade nicht verfügbar oder dyndns
löst nicht richtig auf.
Kann der Besitzer hiergegen evtl. etwas machen?
Gruß, Björn
hm du meinst sicher die Seite von cl-Projekts die ist schon seit
Ewigkeiten tot zum online ausprobieren gibt es momentan nichts werde
mich mal darum kümmern vielleicht schaffe ich das nachher noch.
neuer DL:
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.1.4RC6.tar.gz&can=2&q=
das ist jetzt erst mal aktuell aber immer noch etwas buggy.
Hi, so hab es jetzt geschaft eine Testversion aufzusetzen diese findet
ihr unter http://partdb.grautier.com/ viel spass beim testen.
Die Testdatenbank wird einmal die Woche automatisch aus dem SVN geholt
Hab mal die Part-DB V0.1.5 von sämtlichen html Fehlern bereinigt, die
openlist in openlist und list geteilt damit man der Fram korrekt
Programmiert ist.
Die seite ist jetzt W3C Tidy.
Die editpartinfo.php hab ich leider noch nicht, da sind sehr viele PHP
PrintF drin. In der Partanzeige(showpart wie openlist-> list) sind jetz
der Kommentar im VOlltext. Bei bedarf setze ich die Änderungen auf das
Orig zurück mit W3C Tidy.
Ein wirklich schönes Feature wäre, wenn man eine Bestückungsliste
anlegen könnte. Darin enthalten sind einfach die Artikel, die ich zum
Herstellen einer bestimmten Platine benötige. Zumindest ich baue eine
Platine nicht nur einmal auf.
Das könnte so aus sehen, das man pro Artikel folgende Felder hat:
- Artikel (Aus PartDB)
- Artikel Bezeichnung (Aus PartDB)
- Optionales Feld Bestück Positionen wie "R21,R4,R17"
- Anzahl des Artikel
- Alternativposition oder Hauptposition (siehe unten)
Wird das ganze geprüft, wird einem Angezeigt, was noch im Lager
vorhanden ist, und die "Bestückung auf einmal zu entnehmen oder auch nur
Positionsweise.
Man sieht so sofort was man noch bestellen muss. Zudem ist das entnehmen
von "Hühnerfutter" doch recht mühselig und würde so vereinfacht werden.
Es sollte natürlich berücksichtigt werden das es auch Alternativen zu
einem Bauteil geben kann. Daher kann man markieren ob dies eine
Alternative Position ist oder eine Hauptposition.
Es gäbe hierzu nochmal eine Liste "Bestückungen" mit den Funktionen
"prüfen", "bearbeiten", "löschen", "neu"
Ich habe mir das schon ein paar mal überlegt und auch mal angesehen ob
ich das umsetzen kann, allerdings fehlt mir da der Überblick und die
Zeit.
Mir ist klar das die PartDB dadurch schon zu einer kleinen WaWi wird,
aber es wäre einfach Praktisch.
Gruss
Juergen
Hallo Jürgen,
ich habe sowas wie du beschreibst auch schon lange im Kopf. Ich habe die
letzten tage mal was gebastelt was die Grundfunktionen von deiner Idee
enthält. Aktuell steht alles im SVN, jemand müsste mal noch ein archiv
davon in den Downloadordner stellen. Um die "Baugruppen"-Funktion nutzen
zu können müssen zwei neue MYSQL Tabellen angelegt werden, Script
befindet sich im "Readme" Ordner.
Gruß Dennis
Hallo,
ist ja super :)
Hab eben mal eine svn update gemacht und das script
createdevicetables.sql ausgeführt.
Leider tut es nicht so richtig.
Und sobald ich auf "Baugruppen" klicke, bekomme ich folgende
Fehlermeldung:
1
"PHP Notice: Undefined index: action in device.php on line 28, referer: nav.php"
Wähle ich eine Baugruppe aus, hagelt es gleich richtig :(
1
PHP Notice: Undefined index: action in deviceinfo.php on line 30, referer: device.php
2
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 65, referer: device.php
3
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 79, referer: device.php
4
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 86, referer: device.php
5
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 92, referer: device.php
6
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 98, referer: device.php
7
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in deviceinfo.php on line 272, referer: device.php
8
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined variable: lieferanten in deviceinfo.php on line 386, referer: device.php
9
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
10
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
11
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
12
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
13
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: sup_id in deviceinfo.php on line 387, referer: device.php
14
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 402, referer: device.php
15
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 409, referer: device.php
16
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 418, referer: device.php
17
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 432, referer: device.php
18
[Mon Jan 23 22:16:46 2012] [error] [client 10.6.2.201] PHP Notice: Undefined index: action in deviceinfo.php on line 508, referer: device.php
Eine schnelle Idee was da schiefgeht ? Es liegt wohl an meinen
Tabellen...
Gruss
Juergen
Dennis L. schrieb:> jemand müsste mal noch ein archiv> davon in den Downloadordner stellen. Um die "Baugruppen"-Funktion nutzen
Hab ich heute morgen gemacht mfg tb
http://code.google.com/p/part-db/downloads/detail?name=Part-DB-0.2.0RC1.tar.gz&can=2&q=Jürgen Sachs schrieb:> Hab eben mal eine svn update gemacht und das script> createdevicetables.sql ausgeführt.> Leider tut es nicht so richtig.
Hi, das Problem hab ich hier auch das liegt eventuell an den veralteten
SQL Files werde die am WE nochmal überarbeiten, bekomme folgendes:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL
result resource in
/var/www/vhosts/grautier.com/subdomains/partdb/httpdocs/deviceinfo.php
on line 272
hatte aber auch Probleme die Tabellen zu erstellen siehe:
http://code.google.com/p/part-db/issues/detail?id=2#c0
Hallo zusammen,
wurden denn die beiden Tabellen, devices und device_part richtig
erstellt? Am besten mal einen Screenshot aus phpmyadmin posten oder so.
Ich bin übrigens kein html/sql/php experte kann nur c programmieren ;)
Zudem läuft auf meinem Server eine ziemlich alte MYSQL Version (4.1) da
die neue auf meinem QNAP Server nicht richtig läuft.
Gruß Dennis
So mal Vorschlag:
Eine Zusätzliche Information in die Datenbank mit der Datenbank Version.
Das ist ein simpler Zahlenwert der bei Änderungen um eins erhöht wird.
Beim öffnen der Datenbank wird geprüft ob die Version der Datenbank
denen im Skript gleich ist (php wird auch eine Datenbank Versions
Konstante gepflegt.
Es gibt eine dbupdate.php in der die Versionsänderungen gepflegt werden.
Das könnte dann wie folgt aussehen:
1
if(dbversion < mustdbversion)
2
{
3
lock database //falls mehrere versuchen ein update zu machen
4
while(dbversion < mustdbversion)
5
{
6
switch(dbversion)
7
{
8
case 1:
9
//alles um version 1 auf 2 zu bringen
10
break
11
case 2:
12
//alles um version 2 auf 3 zu bringen
13
break
14
.....
15
} // switch
16
} // while
17
} //if
18
unlock database
Der Trick ist, erst die Version zu prüfen. Falls ein update notwendig,
ein lock der Datenbank. Danach nochmals Version prüfen, diese kann sich
ja bereits geändert haben. Ab jetzt hat man ja exklusiven Zugriff.
Nun die Datenbank von einer Version zur nächsten ändern. Der Vorteil
ist, das man so von jeder Version zur nächsten kommt, es dauert eben ein
wenig.
So wird das oft gemacht. Der Nutzer muss sich nicht mehr um Datenbank
updates zu kümmern.
Schön ist es natürlich wenn noch eine Sicherheitsabfrage kommt und man
eventuell angeboten bekommt eine sqldump downzuloaden. aber das ist dann
schon das "i" Tüpfelchen....
Gruss
Juergen
Dennis L. schrieb:> Hallo zusammen,>> wurden denn die beiden Tabellen, devices und device_part richtig> erstellt? Am besten mal einen Screenshot aus phpmyadmin posten oder so.> Ich bin übrigens kein html/sql/php experte kann nur c programmieren ;)> Zudem läuft auf meinem Server eine ziemlich alte MYSQL Version (4.1) da> die neue auf meinem QNAP Server nicht richtig läuft.>> Gruß Dennis
Hallo Jürgen,
also die Tabellen sehen richtig aus. Besteht der Fehler denn noch? Ich
gehe mal davon aus das du mit aktuellem php und mysql arbeitest, was ich
ja nicht tue, daher vermutlich die fehler. Bei mir funktioniert es
korrekt. Ich werde mal eine Virtual box mit aktuellem php und mysql
aufsetzen und schauen ob ich deinen Fehler reproduzieren kann. Was für
ein System benutzt du denn?
Das mit dem db updaten ist eine gute Idee ;) Wer macht es?
Gruß Dennis
Also die Fehler in der device.php sind weg. Die kommen daher, dass beim
Aufruf der "Baugruppen" aus der Sidebar "action" nicht gesetzt ist.
Mann sollte vor dem Zugriff prüfen, ob die überhaupt gesetzt wurden.
Dazu einfach ein "if (isset($_REQUEST["action"]))" um die Abfrage bauen
und der Fehler ist weg. Ich sehe mir mal den Rest an.
Kann dir auch gerne ein svn diff schicken...
Gruss
Juergen
PS: mit dem Database Update, mal sehen, ich habe halt auch fast keine
Zeit.
Einen Fehler dem ich gerade verfolge ist ein mysql Fehler
Die ausgeführte Abfrage ist
1
SELECT parts.name, parts.comment, parts.id, footprints.name, part_device.quantity, parts.instock, storeloc.name, suppliers.name, preise.preis FROM parts JOIN part_device, footprints, storeloc, suppliers ON (parts.id = part_device.id_part AND footprints.id = parts.id_footprint AND storeloc.id = parts.id_storeloc AND suppliers.id = parts.id_supplier) LEFT JOIN preise ON (preise.part_id = parts.id)WHERE id_device = 4 ORDER BY parts.id_category,parts.name ASC;
und der Fehler von mysql
1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON (parts.id = part_device.id_part AND footprints.id = parts.id_footprint AND st' at line 1
Dennis L. schrieb:> Hallo Jürgen,>> also die Tabellen sehen richtig aus. Besteht der Fehler denn noch? Ich> gehe mal davon aus das du mit aktuellem php und mysql arbeitest, was ich> ja nicht tue, daher vermutlich die fehler. Bei mir funktioniert es> korrekt. Ich werde mal eine Virtual box mit aktuellem php und mysql> aufsetzen und schauen ob ich deinen Fehler reproduzieren kann. Was für> ein System benutzt du denn?> Das mit dem db updaten ist eine gute Idee ;) Wer macht es?>>> Gruß Dennis
Ich kann mir das mit den DB update am Wochenende mal ansehen.
Natürlich nur den Weg bereiten, die zukünftigen Updates muss dann der
jeweilige Entwickler eintragen.
Dachte mir das so:
- Beim laden des "index.php", wird einmalig der DB Status geprüft und
ggf. aktualisiert.
- Die Aktualisierungs Routinen kommen alle in eine eigne php Datei, z.B.
"db_update.php"
- Ich versuche das so zu machen, das man nur eine Variablen Array mit
allen notwendigen Schritten füllt und danach alles Step by Step
ausgeführt wird UND auch auf Fehler überwacht.
Allerdings sollte ich wissen ob schon jemand daran arbeitet, bevor ich
loslege :-)
Gruss
Juergen
Hallo Jürgen,
jetzt hab ich nochmal etwas genauer Hin-geschaut und doch was gefunden.
Der aktuelle MYSQL Server mag wohl eine Klammer bei der JOIN Anweisung,
daher die PHP Fehler. Ich habe es in trunk eingespielt und ein SVN
update sollte deine Probleme fixen;)
Gruß Dennis
Danke Dennis,
Funktioniert tadellos :-)
Was jetzt noch prima wäre, wenn man noch Positionsbezeichnungen eingeben
könnte. Also "R24,R25,R23", "C12,C1".
Das würde es vereinfachen.
Es wäre hier vermutlich nur Sinnvoll jede Position einzeln in der
Datenbank zu speichern. Hintergrund ist, dass Layout Programme wie
Eagle, eine Bauteilliste erstellen kann, hier sind die Positionen aber
einzeln aufgeführt. So könnte man in der Zukunft über ein Importscript
die Daten übernehmen :-)
Gruss
Juergen
PS: Ich sehe mir das jetzt mal mit dem DB Update an....
So, ich habe das mit dem DB Update mal Entwickelt und getestet und für
gut befunden.
Jetzt ist nur die Frage, wie und ob das so übernommen werden soll....
Ich denke es nun sehr einfach das einzupflegen, da immer nur 2 Stellen
angepasst werden müssen in einer Datei.
Der Aufruf sollte in startup.php passieren, so wird nicht zu oft
geprüft.
Gruss
Juergen
Hallo Jürgen,
ich habe die Positionsbezeichnung mal implementiert. Allerdings erstmal
nur als einzelnen DB Eintrag. Es lässt sich also ein beliebiger String
speichern. Ich wüsste nicht wofür ich eine Einzelne Zuordnung
gebrauchen könnte, höchstens vielleicht noch zum Speichern eines
Bauteilewerts, dieser könnte man aber genauso in den String mit
aufnehmen.
Zusätzliche habe ich die Exportfuntion erweitert und für "zu Bestellende
Teile" implementiert. Somit lasse sich jetzt schnell Warenkörbe bei
Reichelt importieren.
Gruß Dennis
p.s. Es gibt natürlich wieder ein Script um die Tabellen zu erweitern,
siehe Readme Ordner
Dennis L. schrieb:> Hallo Jürgen,>> ich habe die Positionsbezeichnung mal implementiert. Allerdings erstmal> nur als einzelnen DB Eintrag. Es lässt sich also ein beliebiger String> speichern. Ich wüsste nicht wofür ich eine Einzelne Zuordnung> gebrauchen könnte, höchstens vielleicht noch zum Speichern eines> Bauteilewerts, dieser könnte man aber genauso in den String mit> aufnehmen.> Zusätzliche habe ich die Exportfuntion erweitert und für "zu Bestellende> Teile" implementiert. Somit lasse sich jetzt schnell Warenkörbe bei> Reichelt importieren.>> Gruß Dennis>> p.s. Es gibt natürlich wieder ein Script um die Tabellen zu erweitern,> siehe Readme Ordner
Oder Du machst es mit meiner db_update.php.
Wäre ein guter Test.
Ist seit einer Stunde im svn. Das Comitten hat mich nerven gekostet, bis
ich bemerkt habe, das Google so ein komisches Passwort Würfelt...
Ich kann mir das ja mal kurz ansehen und umsetzen :-)
Gruss
Juergen
Hi,
habe mir eben part-db aus der SVN aktualisiert. Leider bekommen ich
folgenden Fehler angeizeigt.
"DBVersion: 1, benötigt ein Update.
your Database version 1 is outdated an will now be updated to 3
Get lock of database
CREATE command denied to user 'part-db'@'localhost' for table 'internal'
Table 'part-db.internal' doesn't exist
Update failed, aborting
Unlocking Database
Update Failed"
Ich habe meine Part-db Datenbank gelöscht. Mit dem Script
"createtables-FOR-V0.2.1.sql" neue Tabellen erstellt und dann mit
mysqldumper die Daten wiederhergestellt. Wo liegt der Fehler?
Vielen Dank
Gruß Ansgard
Ansgard schrieb:> CREATE command denied to user
Da liegt das Problem. Er kann die neue Tabelle nicht anlegen.
Du müßtest die Rechte für den User 'part-db' erweitern.
Grüße
Sven
Ja, part-DB kann zwar nun die Datenbank selbstständig aktualisieren,
aber der Nutzer braucht natürlich die entsprechenden Rechte.
In der "createtables-FOR-V0.2.1.sql" ist die fehlende Tabelle nicht
vorhanden, da diese ja Theoretisch selbstständig angelegt wird.
Der partdb mysql Nutzer sollte schon mindestens zusätzlich die Rechte:
- create table
- alter table
haben.
Delete Table oder gar Database sind hingegen nicht notwendig.
Ist das ein Problem ?
Sonst müsste man das so machen, das das Datenbankupdate
- Nur optional aktiv ist
- Unter einem anderen Nutzer durchgeführt wird, der höhere Rechte hat
Gruss
Juergen
Wie wehre es das nicht automatisch zu machen sondern über eine abfrage
also mit Userbestätigung ?
Aber eigentlich sollte das kein Problem sein in der Standartnutzung sind
DBs rein Userbasiert.
Ich werde das Morgen so Umbauen, das man über ein Setting das Explizit
aktiveren muss, oder abschalten kann...
Theoretisch ist das einfach, aber es gibt bei partDB noch keine
"Webseite" für die Konfiguration, wo ich so etwas unterbringen kann.
Mit dem Benutzer Fragen ist so eine Sache. Wenn der Nein sagt zum
Update, geht es ja auch nicht, da die Datenbank nicht zur partDB passt.
Daher der Gedanke es soll Automatisch geschehen.
Mann könnte dann zwar einen Fehler ausgeben oder gar den Zugriff ganz
sperren (wäre nicht so schön).
Es wäre Interessant was die Nutzer gerne hätten:
- Lieber alles von Hand updaten
- Auf Wunsch Automatisch (Würde ich mir Wünschen :-) )
Daher wäre mein Ansatz das über eine Konfigurations Seite abschaltbar zu
machen. Das habe ich schon vorgesehen. Nur fehlt die Konfig Seite in
Part DB bisher. So konnte ich das nicht einbauen. Dazu muss man nur die
Navigationsleiste ändern und eine neue Seite einfügen.
Das Setting (und andere) kann man dann in der neuen Tabelle "internal"
unterbringen.
Gruss
Juergen
Hi,
vielen Dank für die schnelle Antwort von heute Nachmittag. Konnte die
Rechte jetzt erst einrichten. Leider erscheint jetzt im Schritt 2
folgender Fehler.
"DBVersion: 2, benötigt ein Update.
your Database version 2 is outdated an will now be updated to 3
Get lock of database
Duplicate column name 'mountname'
Update failed, aborting
Unlocking Database
Update Failed"
Ich habe meine alte DB mit MySQLDumper zurückgespielt, danach das Script
"updatetables-FOR-V0.2.1" gestartet. phpMyAdmin meldet danach ""ALTER
TABLE `part_device` ADD `mountname` mediumtext NOT NULL AFTER `quantity`
;". Danach tritt obiger Fehler auf.
Vielen Dank
Gruß Ansgard
Hallo Ansgard,
das liegt daran, das Du bereits eine aktuelle Datenbank hast, aber der
notwendige Hinweis in der Datenbank fehlt.
Bitte aktualisiere nochmals den SVN und sei so nett und leg die
Datenbank nochmal neu an mit "createtables-FOR-V0.2.1.sql" Ab dann
sollte es gehen.
Die Update Logic denkt du hast noch eine alte Datenbank und versucht das
Update durchzuführen. Tatsächlich hast Du schon eine aktuelle Variante,
daher geht es schief.
Hierdurch wird jetzt der fehlende Eintrag generiert.
Von jetzt ab sollte es Problemlos Funktionieren.
Sorry, diese Konstellation hatte ich nicht bedacht.
Gruss
JSachs
Danke,
ich habe meine Datenbank komplett gelöscht, sie mit sqlDumper
wiederhergestellt und die part-db Seite ohne einen Import der
"Createtable..." Dateien aufgerufen. Danach tritt der Fehler nicht mehr
auf. (SVN aktualisiert auf R227)
Vielen Dank
Gruß Ansgard
Hi,
vielen Dank nochmal für die gestrige Hilfe, so kann ich jetzt weiter
meine Bauteile einpflegen.
Dazu hätte ich noch 2 Fragen. Wenn ich das Bauteil µA7805 anlege,
erscheint kein Name im Feld und ich kann dieses erst mit phpMyAdmin
weiter bearbeiten. Erstens in dem man es löscht (dann hat man eine Lücke
in der vortlaufenden ID) oder man erstellt den Namen direkt in der
Tabelle.
Daraus ergibt sich eine weitere Frage. Ich möchte mir ein Bauteil von
Reichelt anlegen, welches ich an seinem Namen erkenne. Die Abfrage des
Datenblattes schlägt dann fehl.(z.B. einen RJ12 Stecker, die
Bestellnummer ist aber MP 6-6).
Könnte man den Aufruf eines Datenblattes dei Reichelt mit einer Abfrage
versehen, welche als erstes die Bestellnummer prüft und wenn das Feld
leer ist dann den Namen nutzt?
Danke
Gruß Ansgard
Hallo Ansgard,
leider kann ich dein Problem nicht nachvollziehen. In welchem Feld
erscheint keine Name? Also ich kann ohne Probleme ein Bauteil mit dem
Namen µA7805 anlegen und bearbeiten.
Die Datenblatt Sache lässt sich ändern.
Gruß Dennis
Hallo!
Gibt es auch eine Möglichkeit die Lagerorte weiter zu unterteilen?
Wenn ich z.B. als Lagerort Sortimentskasten 1 angebe, dann hat dieser
auch weitere einzelne Fächer.
Diese sind bei mir alle mit einem Nummernsystem versehen.
Wenn ich nun alle (weit über 100) Fächer hinzufüge, dann wären das in
meinen Augen zu viele Lagerorte. Ebenso wäre bei der Eingabe neuer
Bauteile in einen Lagerort mir Unterfach auch ein Haken für "voll"
sinnvoll, denn dann könnte man die Eingabe in so weit optimieren, dass
nur leere Lagerfächer angegeben werden.
Wenn man nun dem Ganzen nun noch die Krone aufsetzen darf, wäre folgende
weiterführende Funktion genial:
Wenn ich sagen wir einen 1K Widerstand ins System eingeben möchte und
ich selbst aber nicht weiß ob er schon da ist, könnte er mir bei der
Eingabe auch das Fach nennen wo er schon drin liegt und mich darauf
hinweisen. Setzt vermutlich aber eine exakte Eingabe voraus.
Hallo Dennis,
liegt wahrscheinlich an meiner SQL Version (5.1). Wenn ich die Spalte
auf UTF-8_unicode_ci wechsle zeigt er mir zumindest etwas an. Mit
Umlauten ist es genau so. Muss mal sehen ob ich meine QNAP updaten kann.
Danke
Gruß Ansgard
Guido R. schrieb:> Gibt es auch eine Möglichkeit die Lagerorte weiter zu unterteilen?> Wenn ich z.B. als Lagerort Sortimentskasten 1 angebe, dann hat dieser> auch weitere einzelne Fächer.> Diese sind bei mir alle mit einem Nummernsystem versehen.> Wenn ich nun alle (weit über 100) Fächer hinzufüge, dann wären das in> meinen Augen zu viele Lagerorte.
Ich fürchte das wird in der Bedienung zu komplex. Die 100 Fächer
hinzuzufügen ist ja inzwischen kein Problem mehr (Serienfunktion).
Vielleicht verwaltest Du die Sortimentskastennummer mit im Kommentar?
Dank selektiver Suchfunktion sollte das ein gangbarer Weg sein.
> Ebenso wäre bei der Eingabe neuer> Bauteile in einen Lagerort mir Unterfach auch ein Haken für "voll"> sinnvoll, denn dann könnte man die Eingabe in so weit optimieren, dass> nur leere Lagerfächer angegeben werden.
Geht es Dir nur um die einfachere Eingabe, oder drum zu sehen das dort
voll ist? Für Letzteres würde ich den Lagerort umbennenen: "Kiste"zu
"Kiste_voll"...
> Wenn man nun dem Ganzen nun noch die Krone aufsetzen darf, wäre folgende> weiterführende Funktion genial:> Wenn ich sagen wir einen 1K Widerstand ins System eingeben möchte und> ich selbst aber nicht weiß ob er schon da ist, könnte er mir bei der> Eingabe auch das Fach nennen wo er schon drin liegt und mich darauf> hinweisen. Setzt vermutlich aber eine exakte Eingabe voraus.
Wenn ich bei mir in der Suche "1K" eingebe, finde ich ein halbes Duzend.
Wie soll das sinnvoll in die Eingabemaske passen?
Grüße
b
Hi,
naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es
ja schon vorhanden!
So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine
Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für
Lagerort, zweite für Lagerkiste.
Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).
Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich
testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der
Eingabe verzeichnen können.
Haken für Kiste voll:
Da geht es mir in der tat nur darum um zu sagen, dass die Kiste voll
ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur
für das System voll, damit dort keine neuen Bauteile eingelagert werden.
Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen
Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich
da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen"
Lagerplätze ausgeblendet werden.
Guido R. schrieb:> naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es> ja schon vorhanden!> So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine> Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für> Lagerort, zweite für Lagerkiste.> Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).> Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich> testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der> Eingabe verzeichnen können.
Die Idee finde ich auch nicht schlecht.
> Haken für Kiste voll:> Da geht es mir in der tat nur darum um zu sagen, dass die Kiste voll> ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur> für das System voll, damit dort keine neuen Bauteile eingelagert werden.
Im Prinzip willst Du quasy eine Liste aller deiner Lagerorte haben und
eine Übersicht in welchem ein Bauteil zugewiesen ist ?
Reicht es nicht einen "Knopf" Freie Lagerorte zu haben und dann bekommt
alle Lagerorte wo nichts hinterlegt ist ?
Kann hilfreich sein.
> Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen> Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich> da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen"> Lagerplätze ausgeblendet werden.
Ja macht Sinn...
So kann man seine Regale effektiv nutzen.
Gruss
JSachs
Jürgen Sachs schrieb:> Guido R. schrieb:>> naja komplex würde ich jetzt nicht mal sagen. Bei den Kategorien ist es>> ja schon vorhanden!>> So etwas müsste man ja "nur" kopieren. Bisher ist ja nur eine>> Dropdown-Liste vorhanden. Wenn nun 2 hinter einander wären. Erste für>> Lagerort, zweite für Lagerkiste.>> Da ich nicht so Programmiergewand bin, kann ich es nicht alleine :-).>> Die php abändern so, dass sie wie die Kategorie funktioniert, habe ich>> testweise schon gemacht. Ich habe bisher aber nicht einen Erfolg bei der>> Eingabe verzeichnen können.> Die Idee finde ich auch nicht schlecht.
Schön, dass ich Zustimmung bekomme!
>> Haken für Kiste voll:>> Da geht es mir in der tat nur darum um zu sagen, dass die Kiste voll>> ist. Oder belegt. Sie muss ja nicht physikalisch voll sein, sondern nur>> für das System voll, damit dort keine neuen Bauteile eingelagert werden.> Im Prinzip willst Du quasy eine Liste aller deiner Lagerorte haben und> eine Übersicht in welchem ein Bauteil zugewiesen ist ?> Reicht es nicht einen "Knopf" Freie Lagerorte zu haben und dann bekommt> alle Lagerorte wo nichts hinterlegt ist ?> Kann hilfreich sein.
Klar würde das reichen. Hauptsache man kann unterscheiden wo was liegt
und wo nix liegt.
Meistens kennt man ja in etwa seine ganzen Tüten, Schubladen, Schachteln
Sortimentskästen. Nur halt nicht im Detail.
>> Was ich als zweites meine war, dass die Lagerkisten dann bei der neuen>> Eingabe ausgeblendet werden. Das Umbenennen des Lagerplatzes halte ich>> da für umständlich. Es wäre eine elegantere Lösung, wenn die "vollen">> Lagerplätze ausgeblendet werden.> Ja macht Sinn...>> So kann man seine Regale effektiv nutzen.
So stelle ich mir das vor.
Hi,
das Problem mit den Umlauten liegt im VServer der QNAP. Der
Migrationsmanager hat Probleme mit den Umlauten in Mysql. Sobald man
folgende Zeile ( <meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/> ) in den Header eingefügt hat, funktioniert es auch bei
mir. Vielleicht könntet Ihr diese Zeile irgendwann mal mit einpflegen?
Vielen Dank
Gruß Ansgard
hm naja ist eigentlich nicht so sinnvoll man stellt seine DB auf einen
Zeichensatz ein wen jetzt das Skript was anderes Verlangt ist das
Problematisch.
soweit habe ich nicht gedacht. Wie gesagt liegt das Problem nicht in der
DB sondern im Virtalisierungsserver der QNAP. Vielleicht gibt es bis zur
Lösung durch ein QNAP Update noch eine andere Variante (Verweis) diese
Zeile für QNAP Nutzer einzufügen.
Gruß Ansgard
Hallo,
Ich habe heute wiedermal die neuste Version vom SVN installiert. Schaut
echt gut aus, da hat sich einiges getan seit dem letzten Update, vielen
Dank dafür!
Ein Problem ist mir aber gleich aufgefallen: Das Kopieren von Baugruppen
scheint nicht zu funktionieren. Es legt zwar die neue Baugruppe an,
allerdings enthält sie keine Artikel.
Und dass man jetzt die Währung in der config.php angeben kann ist genial
für uns Schweizer :-) Aber dort wo der Gesamtpreis einer Baugruppe
angezeigt wird, wird diese Information nicht genutzt, da steht trotzdem
Euro.
Und was ich persönlich noch schade finde, ist dass man den Preis nicht
angeben kann beim Erstellen eines neuen Bauteiles. Ich habe meistens die
Internetseite meines Elektronikhändlers noch offen nebenbei, dann wäre
das keine grosse Sache den Preis noch mitanzugeben...
Gruss
Urban
EDIT: Ach ja, fast vergessen: Wäre es vielleicht sogar noch möglich,
z.B. in der config.php die Grösse des PopUp-Fensters anzugeben, das beim
Anlegen eines Teiles erscheint? Das Fenster ist standardmässig ziemlich
klein geraten finde ich. Aber warum scrollen wenn doch noch Platz
vorhanden wäre auf dem Bildschirm ;-)
Urban B. schrieb:> Ein Problem ist mir aber gleich aufgefallen: Das Kopieren von Baugruppen> scheint nicht zu funktionieren. Es legt zwar die neue Baugruppe an,> allerdings enthält sie keine Artikel.
Hm bei mir gehts:)
Urban B. schrieb:> Und dass man jetzt die Währung in der config.php angeben kann ist genial> für uns Schweizer :-) Aber dort wo der Gesamtpreis einer Baugruppe> angezeigt wird, wird diese Information nicht genutzt, da steht trotzdem> Euro.
Ändere ich am Wochenende
Urban B. schrieb:> Und was ich persönlich noch schade finde, ist dass man den Preis nicht> angeben kann beim Erstellen eines neuen Bauteiles. Ich habe meistens die> Internetseite meines Elektronikhändlers noch offen nebenbei, dann wäre> das keine grosse Sache den Preis noch mitanzugeben...
Das auch;) Nervt mich nämlich auch.
Urban B. schrieb:> EDIT: Ach ja, fast vergessen: Wäre es vielleicht sogar noch möglich,> z.B. in der config.php die Grösse des PopUp-Fensters anzugeben, das beim> Anlegen eines Teiles erscheint? Das Fenster ist standardmässig ziemlich> klein geraten finde ich. Aber warum scrollen wenn doch noch Platz> vorhanden wäre auf dem Bildschirm ;-)
Bestimmt;)
Übrigens habe ich eine Bauteile Import Funktion für die Baugruppen
geschrieben. Hauptsächlich gedacht für Eagle. Ich Speichere die Bauteile
ID (Die jetzt auch angezeigt wird) als Attribute und exportiere diese
mittels modifiziertem bom-ex.ulp.
Zudem lassen sich jetzt Bauteile ohne Lagerort / Footprint anlegen.
Gruß Dennis
Genial, Danke! :-D
Das mit dem Kopieren muss ich dann wohl mal genauer anschauen, mach ich
dann morgen oder am Wochenende.
Und das mit der Währung ist übrigens allgemein auf der ganzen
Baugruppen-Seite, also auch in den Tabellen der Fall (habs zuerst nur
ganz unten gesehen, beim Totalpreis^^)
Aber das mit dem Gesamtpreis passt mir gar nicht, jetzt merke ich dass
meine Platinen eigentlich viel teurer sind als ich mir das vorgestellt
habe^^ Eine config-Variable "hide_total_price" wär doch was^^ Nein
Spass.
mfg
Hm das mit den Baugruppen geht bei mir komplett nicht ich kann zwar
Teile Adden aber sie werden nicht angezeigt auch mit ner komplett neu
aufgesetzten DB geht das nicht.
siehe: partdb.grautier.com
EDIT: hat sich erledigt geht seit heute morgen :P
Also bei mir funktioniert das Kopieren von Baugruppen wirklich nicht,
aber vielleicht mach ich ja was falsch. Habe eine neue part-db
folgendermassen angelegt (in einer VM mit Ubuntu):
Die neuste Version herunterladen
in phpmyadmin einen neuen Benutzer "part-db" anlegen (ohne Passwort,
alle Rechte).
Dann eine neue Datenbank "part-db" anlegen, und die Datei
/var/www/part-db/readme/createtables-FOR-V0.2.1.sql wählen. Wird
erfolgreich Importiert.
Der Benutzer "part-db" bekommt alle Rechte an dieser datenbank (scheint
er automatisch zu bekommen?!)
mit
1
sudo gedit /var/www/part-db/config.php
das Passwort auf "" setzen (löschen), speichern.
Und dann ausprobieren: Ein Footprint, ein Lagerort, ein Lieferant und
eine Baugruppe anlegen. Das Bauteil zur Baugruppe hinzufügen,
funktioniert wunderbar und wird auch so gespeichert. Klick auf
"Kopieren" --> Eine neue Baugruppe wird angelegt (KopieVon...), enthält
aber kein Bauteil.
Was könnte hier falsch gelaufen sein?
Ansonsten scheint alles zu funktionieren in part-db.
Ich verwende die offiziellen Ubuntu-Pakete, also
- apache 2.2.17
- php5-mysql 5.3.5
- mysql-server 5.1.54
Urban B. schrieb:> Die neuste Version herunterladen
Das sich momentan quasi täglich was ändert, müsstest Du hier die
Revisionsnummer mit angeben.
Grüße
b
OK also habe jetzt gerade nochmal die neuste Version installiert, und
das war Revision 242. Da geht das kopieren immer noch nicht.
Also ich muss sagen, ich habe allgemein nicht soo viel Ahnung von dem
Zeug (heisst: es ist schon möglich dass ich etwas falsch gemacht habe),
aber wenn doch sonst alles funktioniert sollte doch auch das Kopieren
gehen?
Gruss
Urban
Da ich die Datenbank auf meinem Webspace laufen hab und er damit immer
und überall erreichbar ist, habe ich mal einen Passwortschutz
eingebastelt. War bissel nervig, da ich jede PHP anpassen musste :-(.
Bis jetzt läuft es aber recht gut. Ist halt nur die Sache mit den
Lagerorten die etwas unübersichtlich sind.
Ich weis nicht ob es für andere auch Interessant ist und ein Login
langfristig mit eingepflegt wird.
mit ner .htaccess im root müsste das doch im nu lösbar sein oder nicht?
Ansonsten fände ich es auch sehr wichtig das hier ein Login integriert
würde.
Derzeit bin ich schwer am überlegen ob nun alle Daten in EleLa oder
Part-DB besser aufgehoben wären.
Optisch gefällt mir dieses System besser.
Wäre voll cool gewesen wenn die Datenbankstrukturen gleich wären und man
entweder oder nutzen kann :)
Bin echt hin und her gerissen mit Euren beiden Projekten...
Björn
Guido R. schrieb:> Da ich die Datenbank auf meinem Webspace laufen hab und er damit immer> und überall erreichbar ist, habe ich mal einen Passwortschutz> eingebastelt. War bissel nervig, da ich jede PHP anpassen musste :-(.
Das hätte man vielleicht auch zentral in lib.php regeln können.
> Ist halt nur die Sache mit den> Lagerorten die etwas unübersichtlich sind.
Ist seit Revision 250 geändert.
> Ich weis nicht ob es für andere auch Interessant ist und ein Login> langfristig mit eingepflegt wird.
Prinzipiell ja, aber es muss konfigurierbar sein. Viele benötigen das
Feature sicher gar nicht, da der Webserver lokal läuft und einigen
reicht der Schutz durch die .htaccess.
Schick mal deinen Patch (https://code.google.com/p/part-db/people/list).
Grüße
b
Dennis L. schrieb:> Hallo,>> - kopier Funktion sollte jetzt überall funktionieren (DB Fix)> - Neue Bauteile lassen sich jetzt gleich mit einem Preis versehen>> Gruß Dennis
Funktioniert, vielen Dank Dennis!
Und auch das mit der Pupup-Fenstergrösse ist genial!
Die nächste Idee wär dann eine Uploadfunktion für Footprint-Bilder, dann
müsste man bei einem neuen Bild auch nicht extra auf den Server
zugreifen :-)
Und bei den Baugruppen hätte ich noch eine Idee. Wenn man eine etwas
längere Bauteilliste hat (so dass man nach unten scrollen muss), und
weiter unten ein Teil hinzufügen oder löschen will (inkl. Änderung der
Bestückunsdaten), dann muss man dieses Teil zwei mal in der Liste
suchen. Zuerst um die Anzahl zu ändern, dann wird die Liste neu geladen,
und dann muss man den Eintrag nochmal suchen um die Bestückungsdaten
abzuändern.
Es gäbe jetzt mehrere Möglichkeiten, das zu verbessern. Einerseits
könnte man alle Buttons entfernen, und nur noch in der letzten Spalte
einen Button "Speichern" hinmachen, welcher dann alle gemachten
Änderungen an diesem Eintrag speichert. Das würde aber heissen, dass man
die Stückzahl wohl durch ein Eingabefeld austauschen müsste.
Andererseits könnte man ja auch alles so lassen wie es ist, ausser dass
beim Klicken auf einen der Buttons "+" oder "-" auch gleich die
Bestückungsdaten mitabgeändert werden. Ist aber irgendwie noch so ganz
die "saubere" Art, weil wenn man nicht weiss dass das so funktioniert
wird man diese Funktion auch nicht nutzen (nicht selbsterklärend).
Ich überlasse es mal euch, ob und wie ihr das realisiert :-)
Gruss
Urban
Okay, bestens.
Und ich hätte auch schon den nächsten Vorschlag:
In der Baugruppen-Übersicht (Menüeintrag "Verwalten") wäre eine
zusätzliche Spalte noch cool, in der die jeweiligen Gesamtpreise der
Baugruppen angezeigt werden. Dann sieht man gleich in der Übersicht, was
die einzelnen Platinen so kosten. Und wenn man mehrere
Bestückungsvarianten (z.B. eine Variante "Vollbestückt" und eine
"LowCost-Variante") von einer Platine abspeichert, sieht man auch gleich
den Preisunterschied zwischen den einzelnen Bestückungsvarianten.
Ich hoffe ich nerve nicht mit den ganzen Vorschlägen :-) Wenn ich PHP
könnte, würde ich sehr gerne auch selber Hand anlegen. Habe gestern mal
(mehr aus Neugier) angefangen ein PHP Tutorial zu lesen, aber das kann
noch eine Weile dauern bis ich soweit bin^^
Habe das mit der Preis-Spalte heute mal ausprobiert selber zu machen,
die neue Spalte habe ich hingekriegt, aber den richtigen SQL-Befehl um
den Gesamtpreis zu bekommen war dann ein bisschen zu viel für mich ;-)
mfg
Hallo,
ich hätte noch eine Frage zur Baugruppenverwaltung / Export. Ist es
möglich, eigene Scripte für den CSV Export selber zu erstellen und
eizufügen bzw in welcher Datei müsste man ändern? So könnte man z.B. mit
der neuen Dymosoftware Etiketten für Bauteile bzw. Lagerort erstellen.
Gruß Ansgard
Hi, hatte ich mich auch schon gefragt hab es mir mal angeschaut aber
nicht verstanden, ich hätte gerne ne Exportfunktion fürs dokuwiki, werde
es mir morgen mal genauer anschauen crustom per Script wird wohl nicht
gehen aber man könnte einige Standarte einpflegen, den rest müste man
halt per exel oder OOo nachformetieren.
Hi.
Ich habe mir Euer Projekt einmal etwas genauer angeschaut.
Was mir aufgefallen ist:
1) Wenn ich in Chrome ein Bauteil öffne kommt ein neues Fenster welches
aber extrem klein oben links im Bildschirm geöffnet wird. Größe und
Position wird für das nächste Öffnen leider nicht gespeichert.
2) Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu
einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl
SchubladeA-1 für erstes Fach in der Schublade?
Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
Wie schon geschrieben - bin grade zwischen EleLa und hier am
vergleichen.
Aber wahnsinn wie flott die Website so arbeitet :)
Gruß, Björn
PS.: Da ich irgendwie nicht mehr so ganz hinterher komme wer jetzt von
Euch genau was an dem Projekt programmiert, spreche ich also alle
Programmierer an :)
Schaut mal bitte auf diesen Thread:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung ab V1.2.11A26"
Evtl. könnte man ja hier etwas tun...
Ansgard schrieb:> Sobald man> folgende Zeile ( <meta http-equiv="Content-Type" content="text/html;> charset=utf-8"/> ) in den Header eingefügt hat, funktioniert es auch bei> mir. Vielleicht könntet Ihr diese Zeile irgendwann mal mit einpflegen?
Siehe config.php ab Revision 267...
Grüße
b
Björn G. schrieb:> Wenn ich in Chrome ein Bauteil öffne kommt ein neues Fenster welches> aber extrem klein oben links im Bildschirm geöffnet wird. Größe und> Position wird für das nächste Öffnen leider nicht gespeichert.
Die Demo-Datenbank (http://partdb.grautier.com/) macht das auch so.
Meine lokale Testinstallation funktioiert.
Ist die config.php auf dem neusten Stand?
Grüße
b
Urban B. schrieb:> Und ich hätte auch schon den nächsten Vorschlag:> In der Baugruppen-Übersicht (Menüeintrag "Verwalten") wäre eine> zusätzliche Spalte noch cool, in der die jeweiligen Gesamtpreise der> Baugruppen angezeigt werden. Dann sieht man gleich in der Übersicht, was> die einzelnen Platinen so kosten. Und wenn man mehrere> Bestückungsvarianten (z.B. eine Variante "Vollbestückt" und eine> "LowCost-Variante") von einer Platine abspeichert, sieht man auch gleich> den Preisunterschied zwischen den einzelnen Bestückungsvarianten.
Ist in der aktuellen revision;)
Urban B. schrieb:> Und bei den Baugruppen hätte ich noch eine Idee. Wenn man eine etwas> längere Bauteilliste hat (so dass man nach unten scrollen muss), und> weiter unten ein Teil hinzufügen oder löschen will (inkl. Änderung der> Bestückunsdaten), dann muss man dieses Teil zwei mal in der Liste...
Das auch, ich glaube jetzt ist es etwas übersichtlicher.
Ansgard schrieb:> ich hätte noch eine Frage zur Baugruppenverwaltung / Export. Ist es> möglich, eigene Scripte für den CSV Export selber zu erstellen und> eizufügen bzw in welcher Datei müsste man ändern? So könnte man z.B. mit> der neuen Dymosoftware Etiketten für Bauteile bzw. Lagerort erstellen.
Die Export Funktion ist direkt in PHP geschrieben. Grundidee ist es
mittels Bauteile Import in Onlineshops direkt die exportierten Teile zu
importieren. Gleiche Exportfunktion gibt es ja für die "zu bestellende
Teile".
Denkbar wäre natürlich auch eine Export für die Lagerorte.
Björn G. schrieb:> 2) Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu> einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl> SchubladeA-1 für erstes Fach in der Schublade?
Genau so nutze ich es;) T1-15 -> Turm1 Fach15
Gruß Dennis
Björn G. schrieb:> Lagerort ohne Fachnummer. Ich fände es übersichtlicher wenn man zu> einem Lagerort eine Fachnummer eintragen könnte. Wie nutzt Ihr das? Evtl> SchubladeA-1 für erstes Fach in der Schublade?
Du kannst seit neuestem die Lagerorte hierarchisch ordnen (so wie die
Kategorien). Damit ist sowas machbar: ... -> Gebäude -> Raum -> Schrank
-> Fach
> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?
Wie stellst Du Dir das Feature vor?
Was soll auf die Etiketten drauf?
Grüße
b
@Dennis
Das geht ja schnell hier!
Wenn jetzt das mit der Footprint-Uploadfunktion auch noch klappen würde,
wäre ich vorerst mal ganz zufrieden :D
Ansonsten melde ich mich wieder ;-)
Vielen Dank und Grüsse
Urban
Ansgard schrieb:> Könnte man den Aufruf eines Datenblattes dei Reichelt mit einer Abfrage> versehen, welche als erstes die Bestellnummer prüft und wenn das Feld> leer ist dann den Namen nutzt?
done. Revision 271
Guido R. schrieb:> Wie kriege ich denn> die ganzen Updates auf meine Version?
Recht elegant geht es unter Windows mit TortoiseSVN.
Dazu sind folgende Schritte notwendig:
* die damalige Version in ein neues Verzeichnis auschecken z.B.:
svn checkout --revision 100 http://part-db.googlecode.com/svn/trunk/
part-db
* die geänderten Dateien in dieses Verzeichnis reinkopieren
* jetzt ein Update (svn update) durchführen, wenn es Konflikte gibt kann
man bei TortoiseSVN per Doppelklick das Programm TortoiseMerge aufrufen
und an den roten Stellen entscheiden, wie der zukünftige Code aussehen
soll.
* wenn alles glatt geht, hat man eine aktuelle Version mit den eigenen
Änderungen
Grüße
b
P.S.: Alternativ kannst Du auch die php-Dateien in ein .zip-File packen
und hier reinstellen.
Zu "meinem" Login:
Ich habe die Dateien aus dem Link oben auf meinem Webserver geladen und
nach der beschreibung angepasst. jede php hatte dann noch
1
session_start();
2
if(!isset($_SESSION['username']))
3
{
4
echo(wegenSpamwarnungentfernt);
5
exit;
6
}
bekommen.
das wars eigentlich. Nun ist die Startseite halt in meinen Favoriten
anders hinterlegt. Das ist in meinen Augen keine elegante Lösung. Ist
aber die erste die funktionierte :-D
Da ich überwiegend mit Apple arbeite und die DB auf einem externen
Webserver liegt und hier nur via FTP erreicht wird, klappt das wohl mit
TortoiseSVN nicht :-(
Guido R. schrieb:> Da ich überwiegend mit Apple arbeite und die DB auf einem externen> Webserver liegt und hier nur via FTP erreicht wird, klappt das wohl mit> TortoiseSVN nicht :-(
Alles klar. Kein Problem. Kannst Du bitte ein .zip-File hier einstellen?
Grüße
b
Björn G. schrieb:> @b.r.> Ich habe auch auf der Testinstalllation herum gespielt.> Dachte das müsste ja die aktuellste sein.>> Björn
Ja ist sie allerdings muss die config.php immer per Hand upgedatet
werden das kann ich bei den Änderungen momentan jeden Tag machen
deswegen dauert das immer eine weile.
b.r schrieb:> Alles klar. Kein Problem. Kannst Du bitte ein .zip-File hier einstellen?
Von was genau? Dem gesamten Projekt? Wie gesagt das ist noch nicht mal
die aktuellste Version und außer dem was ich oben geschrieben habe, habe
ich nix verändert...
Sehe daher wenig Sinn drin hier den Inhalt als Zip anzuheften :-)
b.r schrieb:>> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?> Wie stellst Du Dir das Feature vor?> Was soll auf die Etiketten drauf?
In etwa so:
http://www.mikrocontroller.net/attachment/116345/Bild1.png
Hier habe ich mit Markus zusammen das für EleLa gebastelt:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung"
Funktioniert nun wirklich sau gut.
Ich nehme nun z.B. einen neuen Widerstandstyp in meine Box auf und sag
dem Programm das es mir einen "Schuber" dafür generieren sollte.
Aufzählrichtung, Größen und abzudruckende Daten kann man einstellen und
schon kann man es ausdrucken.
Danach nur ausschneiden und in den Klarsichtdeckel der Box legen -
fertig.
Auch kann man sehr einfach die Aufkleber für die einzelnen Schubladen
von stehenden Sortimentskästen machen.
Hier einfach auf ein DINA4-Etikett drucken und kurz ausschneiden.
Sieht optisch dann auch schick aus im Bastelraum ;)
...sowas in der Art.
Björn
Guido R. schrieb:> Von was genau? Dem gesamten Projekt?
Ja, bitte vom gesamten Projekt. Mir reichen die php-Dateien.
> Wie gesagt das ist noch nicht mal> die aktuellste Version
Das macht nix.
> und außer dem was ich oben geschrieben habe, habe> ich nix verändert...
Jaja. Das sagen alle ;-)
> Sehe daher wenig Sinn drin hier den Inhalt als Zip anzuheften :-)
Aber ich. So kann ich viel besser sehen, was wo eingefügt/verändert
wurde, als die vage Beschreibung in Deinem Forumsbeitrag.
Soll das Feature nun mit rein in die offizielle Version, oder nicht? Ich
brauche es nicht und werde es daher auch nicht selbst neu entwickeln.
Grüße
b
Björn G. schrieb:>>> Kommt in Zukunft noch ein Etikettendruck Feature mit rein?>> Wie stellst Du Dir das Feature vor?>> Was soll auf die Etiketten drauf?>> In etwa so:> http://www.mikrocontroller.net/attachment/116345/Bild1.png
Also ungefähr das Format
[Lagerort]
Name1: Footprint
Name2: Footprint
Namex: Footprint
sehe ich das richtig?
Sowas sollte sich machen lassen.
Grüße
b
...und da bin ich auch schon wieder :-)
Jetzt wo ich schon ein paar Baugruppen angelegt habe, wirkt das Menü
doch schon langsam etwas überfüllt. Man stelle sich vor, da wird für
jede Baugruppe, die man "im Leben" so erstellt, ein Menüeintrag erzeugt.
Das gibt eine ganz schön lange Liste.
Daher mein Vorschlag: Kategorien für Baugruppen, inkl. aufklappbares
Menü, genau wie bei den Bauteilen. Wäre super wenn das klappt!
mfg
Urban
Ja hab ich auch schon festgestellt, werde mich darum kümmern, finde eh
man müsste das ganze Menü mal überarbeiten langsam wird das recht groß,
ich setze das mal auf meine toodoliste.
heyy,
falls es dir was bringt, ich habe mich mal rangesetzt und mit copy&paste
und search&replace die Baugruppen umfunktioniert, so dass sie jetzt auch
hierarchisch eingeordnet werden können und ein Menü generiert wird.
Ich habe dabei die Datei "catmgr.php" Kopiert, und als "devmgr.php"
abgespeichert. Diese ersetzt nun die Datei "devices.php".
Der Link "Verwalten" ist jetzt unten bei "Bearbeiten" im Menü, mit dem
Namen "Baugruppen".
Das Datenbankupdate habe ich auch eingefügt, damit ein "parentnode" in
der Tabelle "devices" erzeugt wird.
Was noch fehlt: Beim Kopieren einer Baugruppe wird die Info "parentnode"
nicht in die neue Baugruppe übernommen, sie erscheint in der höchsten
Ebene im Menü. Ich wäre froh, wenn du das noch machen könntest.
Ich habe mir Mühe gegeben, aber ich kann nicht garantieren dass sonst
alles fehlerfrei ist. Wie ich schon erwähnte habe ich nahezu keinerlei
Erfahrung mit php, aber ein bisschen Rumkopieren geht auch ohne die
Erfahrung :-)
Bei mir scheint alles soweit zu funktionieren.
Ach ja, ich habe das Suchfeld links oben noch um 3 Stellen kürzer
gemacht. Das bewirkt bei mir, dass der Button "Los!" noch rechts neben
dem Suchfeld Platz hat, und das Menü wird wieder ein bisschen kürzer.
Ich weiss aber nicht ob das nicht stark vom Browser und der
Bildschirmauflösung abhängt, dann bringt das natürlich nichts wenn du
das auch so übernimmst.
mfg
ups, war schon spät gestern, da hab ich gar nicht gemerkt dass jetzt ja
die Baugruppen-Übersicht weg ist. Also die Seite wo man schön die Preise
aller Baugruppen sehen kann, das war natürlich nicht meine Absicht.
Mal schauen, vielleicht schaff ich es, die wieder einzubauen :-)
Hi,
bringt mir ja nur nicht viel, wenn ich schon einiges an Daten in die
Datenbank eingegeben habe und ich alles löschen muss, weil er mir bei
der Ausführung sagt:
Die Fehler könne ignoriert werden, es geht nur um die Erstellung der
internal Tabelle:
Alternativ einfach das ausführen:
CREATE TABLE `internal` (
`keyName` CHAR(30) CHARACTER SET ASCII UNIQUE NOT NULL,
`keyValue` CHAR(30)
) ENGINE=MyISAM;
INSERT INTO `internal` SET `keyName`='dbVersion', `keyValue`='4';
nun bekomme ich:
DBVersion: 4, benötigt ein Update.
your Database version 4 is outdated an will now be updated to 5
Get lock of database
Can't DROP 'PRIMARY'; check that column/key exists
Update failed, aborting
Unlocking Database
Update Failed
Dennis L. schrieb:> Die Fehler könne ignoriert werden, es geht nur um die Erstellung der> internal Tabelle:> Alternativ einfach das ausführen:>> CREATE TABLE `internal` (> `keyName` CHAR(30) CHARACTER SET ASCII UNIQUE NOT NULL,> `keyValue` CHAR(30)> ) ENGINE=MyISAM;>> INSERT INTO `internal` SET `keyName`='dbVersion', `keyValue`='4';
Da sollte man nicht tun !
Die Update Routine erkennt das die Tabelle fehlt und legt diese
selbstständig an.
Außerdem sollte man NIE die Datenbankversion selbst setzen. Das setzen
auf "4" ist wirklich fatal.
Um das Automatische Update sicher zu machen, geht man von einer Version
zur nächsten.
Ist die Aktuelle Version 1 und aktuell 5, mach das Skript erst update
auf 2, dann auf 3, dann auf 4 und auf 5.
Dabei darf nie ein Fehler auftreten, sonst wird abgebrochen. Im Skript
zu bewerten was schief geht und ob man weiter machen kann ist nicht
einfach.
Setzt man jetzt die Datenbankversion händisch, also von 2 auf 4, dann
funktioniert das nicht mehr.
Wichtig ist nur das der partDB Datenbanknutzer alle notwendigen Rechte
hat.
Gruss
Juergen
Guido R. schrieb:> nun bekomme ich:> DBVersion: 4, benötigt ein Update.>> your Database version 4 is outdated an will now be updated to 5> Get lock of database> Can't DROP 'PRIMARY'; check that column/key exists> Update failed, aborting> Unlocking Database> Update Failed
mach mal bitte einen
- show tables;
- describe part_devices;
Dann wissen wir welchen stand deine Datenbank hat und können das
anpassen...
Gruss
Juergen
PS: Nochmals die Bitte die Datenbankversion NIE selbst verändern.
Das automatische erzeugen hat bei mir jedenfalls noch nie funktioniert.
Das auf Version 4 setzen war ungewollt sorry, hat irgendwer in die
createtables gemacht.
Dennis
Jürgen Sachs schrieb:> Guido R. schrieb:>> nun bekomme ich:>> DBVersion: 4, benötigt ein Update.>>>> your Database version 4 is outdated an will now be updated to 5>> Get lock of database>> Can't DROP 'PRIMARY'; check that column/key exists>> Update failed, aborting>> Unlocking Database>> Update Failed> mach mal bitte einen> - show tables;> - describe part_devices;>> Dann wissen wir welchen stand deine Datenbank hat und können das> anpassen...>> Gruss> Juergen>> PS: Nochmals die Bitte die Datenbankversion NIE selbst verändern.
Ich hab hier PHPMyAdmin...
möchtest du, dass ich dir eine Liste der Tabellen gebe, sowie die
Spalten der part_devices?
Gruß
@Guido,
dein Fehler deutet darauf hin das deine Tabellen nicht mit dem gleichen
Ausgangszustand angefangen haben wie die Versionierung. Gehe in
part_device und setzte part_id als primary key und öffne part-db neu.
Dann müsste es gehen.
Gruß Dennis
Urban B. schrieb:> ...und da bin ich auch schon wieder :-)>> Jetzt wo ich schon ein paar Baugruppen angelegt habe, wirkt das Menü> doch schon langsam etwas überfüllt. Man stelle sich vor, da wird für> jede Baugruppe, die man "im Leben" so erstellt, ein Menüeintrag erzeugt.> Das gibt eine ganz schön lange Liste.>> Daher mein Vorschlag: Kategorien für Baugruppen, inkl. aufklappbares> Menü, genau wie bei den Bauteilen. Wäre super wenn das klappt!>> mfg> Urban
Ist drinnen, allerdings noch ohne Catigurin
http://partdb.grautier.com/
hmm aber die nav.php scheint noch Fehler zu enthalten, bei mir lädt sich
das Menü nicht und es kommt irgend so ein Scriptfehler von Firefox.
Einerseits gibt es einen Konflikt mit dem Menüeintrag "Verwalten", denn
diesem hast du ja die ID 1 zugewiesen. Bei mir existiert aber schon eine
Baugruppe mit dieser ID, das kollidiert dann natürlich. Man sollte
vielleicht ein DB-Update einbauen, das die ID 1 freiräumt.
Und dann hast du in der Funktion "baugruppentree" ganz am Schluss die
Zeile
1
buildtree ($d[0], $pid);
drin, welche aber ja die Funktion von den Kategorien aufrufen würde. Das
müsste wohl
1
baugruppentree ($d[0], $pid);
heissen. Allerdings verweigert mein Firefox das Laden immernoch, wenn
ich diese Zeile auskommentiere funktioniert es. Das kann aber daran
liegen, dass eben die ID 1 schon von einer Baugruppe verwendet wird...
Urban B. schrieb:> hmm aber die nav.php scheint noch Fehler zu enthalten, bei mir lädt sich> das Menü nicht und es kommt irgend so ein Scriptfehler von Firefox.>> Einerseits gibt es einen Konflikt mit dem Menüeintrag "Verwalten", denn> diesem hast du ja die ID 1 zugewiesen. Bei mir existiert aber schon eine> Baugruppe mit dieser ID, das kollidiert dann natürlich. Man sollte> vielleicht ein DB-Update einbauen, das die ID 1 freiräumt.>
Oh ja nicht bedacht.
> Und dann hast du in der Funktion "baugruppentree" ganz am Schluss die> Zeile>
1
buildtree ($d[0], $pid);
> drin, welche aber ja die Funktion von den Kategorien aufrufen würde. Das> müsste wohl>
1
baugruppentree ($d[0], $pid);
> heissen. Allerdings verweigert mein Firefox das Laden immernoch, wenn> ich diese Zeile auskommentiere funktioniert es. Das kann aber daran> liegen, dass eben die ID 1 schon von einer Baugruppe verwendet wird...
hm bei mir geht es hab es nochmal geändert ich schau mir das aber
nochmal an.
K. J. schrieb:> hm bei mir geht es hab es nochmal geändert ich schau mir das aber> nochmal an.
Ja, jetzt wo es noch keine Kategorien gibt in den Baugruppen sollte die
Zeile
1
buildtree ($d[0], $pid);
noch keinen Einfluss haben. Sobald aber die Kategorien hinzukommen wird
diese Zeile aber ein Fehlverhalten verursachen wenn ich das soweit
richtig verstanden habe.
Irgendwie ist der Skriptfehler aber wohl doch nicht wegen der ID 1. Wenn
ich die ID für den Eintrag "Verwalten" auf 99 setze (es existiert keine
Baugruppe mit dieser ID) meckert der Firefox trotzdem. Muss das mal
genauer anschauen was da los ist...Vielleicht habe ich mittlerweile auch
irgendwo was selber verbastelt, werde mal eine komplette Neuinstallation
versuchen.
Urban B. schrieb:> K. J. schrieb:>> hm bei mir geht es hab es nochmal geändert ich schau mir das aber>> nochmal an.>> Ja, jetzt wo es noch keine Kategorien gibt in den Baugruppen sollte die> Zeile>
1
buildtree ($d[0], $pid);
> noch keinen Einfluss haben. Sobald aber die Kategorien hinzukommen wird> diese Zeile aber ein Fehlverhalten verursachen wenn ich das soweit> richtig verstanden habe.>
Ja genau ist jetzt raus
> Irgendwie ist der Skriptfehler aber wohl doch nicht wegen der ID 1. Wenn> ich die ID für den Eintrag "Verwalten" auf 99 setze (es existiert keine> Baugruppe mit dieser ID) meckert der Firefox trotzdem. Muss das mal> genauer anschauen was da los ist...Vielleicht habe ich mittlerweile auch> irgendwo was selber verbastelt, werde mal eine komplette Neuinstallation> versuchen.
Ja ist normal wen es die Node nicht gibt schmiert das Script ab die 99
gibt es nicht hab mich den halben morgen damit rumgeärgert.
Hab Grade nen Bugfix eingepflegt die IDs des Menüs sind jetzt die der
driveid+1 mir ist das nicht aufgefallen ich hab keine driveid = 1
in etwa müsste folgendes raus kommen:
baugruppen = new dTree('baugruppen');
baugruppen.add(0,-1,'');
baugruppen.add(1,0,'Verwaltung','device.php"','','content_frame');
baugruppen.add(2,1,'test','deviceinfo.php?deviceid=1','','content_frame'
);
baugruppen.add(5,1,'KopieVontest','deviceinfo.php?deviceid=4','','conten
t_frame');
baugruppen.add(7,1,'KopieVonKopieVontest','deviceinfo.php?deviceid=6',''
,'content_frame');
baugruppen.add(8,1,'KopieVonKopieVonKopieVontest','deviceinfo.php?device
id=7','','content_frame');
document.write(baugruppen);
aaah ja jetzt läuft es :-D
Der Fehler hat meine Virtuelle Maschine voll in die Knie gezwungen,
konnte kaum mehr neu starten :-)
Bei den IDs hatte ich ein Durcheinander mit den IDs vom Menü und den IDs
von den Baugruppen. So wie du es jetzt gemacht hast ist es natürlich
ganz simpel und logisch xD
Meine Idee, wie man das mit den kategorisierten Baugruppen machen
könnte, wäre folgende:
* Ein DB-Update einbauen, das bei den devices noch die Spalte
"parentnode" einfügt. Ein paar Beiträge früher habe ich ja eine
Zip-Datei angehängt, da habe ich das Update schon eingebaut.
* Zum Verwalten der Baugruppen könnte man genau die gleiche Seite nehmen
wie bei den Kategorien (catmgr.php), einfach mit dem Namen devmgr.php.
In meiner ZIP-Datei wäre genau eine solche devmgr.php drin.
Funktionieren sollte sie, habe es schon getestet.
* Im Baugruppenmenü gibt es dann kein "Verwalten" mehr auf oberster
Ebene, wenn man das haben möchte legt man einfach eine solche Kategorie
an.
* Sobald man im Baugruppenmenü nun einen Eintrag anklickt, erscheinen
entweder die darin enthaltenen Teile, oder aber wenn diese Baugruppe
noch Unterbaugruppen besitzt, dann erscheint die Übersichtsseite, welche
dann die darin enthaltenen Unterbaugruppen auflistet.
Verstehst du wie ich das meine? Eventuell könnte man auch die Seite für
die Baugruppenübersicht und die Seite zum Bearbeiten der Baugruppen
(devmgr) als eine Seite Zusammenfassen.
Was meinst du dazu?
Dennis L. schrieb:> @Guido,>> dein Fehler deutet darauf hin das deine Tabellen nicht mit dem gleichen> Ausgangszustand angefangen haben wie die Versionierung. Gehe in> part_device und setzte part_id als primary key und öffne part-db neu.> Dann müsste es gehen.>>> Gruß Dennis
Danke!
Das war's gewesen!
Zu den Baugruppen:
Jetzt mal ganz ober Krass wären noch Daten für die Baugruppe. So was wie
Schaltpläne, Anleitungen. Ein Foto für die Baugruppe wäre auch noch
nice!
Hallo,
schön wäre auch die Spalte Datenblätter in der Baugruppenansicht zu
haben. Das würde den Aufbau bzw. die Inbetriebnahme erleichtern, da man
ja in dieser Ansicht alle benötigten Bauteile dieser Baugruppe hat.
Gruß Ansgard
PS.: könntet Ihr mir bitte erklären, wie ich eine eigene CSV Datei
erstellen kann und wo ich sie einfügen muss (Etikettendruck mit
Dymosoftware).
Danke
Ich habe mal in SVN einen Anfang für die Konfig Seite eingebaut.
Zu erreichen unter "Verwaltung/Tools->Bearbeiten->partDB Konfiguration".
Das ist erst mal so, damit ich nicht immer den Änderungen "Hinterher
Hinke" :-)
Ich überlege im Moment ob es nicht Sinn macht, im Fall eines benötigten
Updates diese Seite, statt der Start Seite auf zu rufen. Der Benutzer
würde Informiert und könnte Selbst entscheiden ob er weiter machen
möchte.
Nur mal als Idee.
Gruss
Juergen
Das Automatische Datenbank Update kann nun Ein und Ausgeschaltet werden.
Per Default ist es Ausgeschaltet.
Bei Problemen bitte kurzes Feedback...
Gruss
Juergen
Ansgard schrieb:> PS.: könntet Ihr mir bitte erklären, wie ich eine eigene CSV Datei> erstellen kann und wo ich sie einfügen muss (Etikettendruck mit> Dymosoftware).
Ein Beispiel für CSV-Export gibt es auf der Suchergebnisseite.
Wie muß denn das Format für Dymo aussehen?
b
Guido R. schrieb:> Jetzt mal ganz ober Krass wären noch Daten für die Baugruppe. So was wie> Schaltpläne, Anleitungen. Ein Foto für die Baugruppe wäre auch noch> nice!
Es wäre sowieso zu überlegen, das man zu jedem Bauteil statt Bilder +
Datenblattlinks sowas wie interne (png, jpg, gif, pdf) und externe
Dokumente (Links) macht. Das wäre eine Funktionalität die sich auch für
die Baugruppen verwenden läßt.
b
Guido R. schrieb:>> - show tables;>> - describe part_devices;>> Ich hab hier PHPMyAdmin...> möchtest du, dass ich dir eine Liste der Tabellen gebe, sowie die> Spalten der part_devices?
Ja, genau.
Du kannst die beiden SQL-Befehle auch über phpMyAdmin ausführen lassen.
Aber das Problem dürfte ja bei Dir schon behoben sein.
b
Jürgen Sachs schrieb:> Die Update Routine erkennt das die Tabelle fehlt und legt diese> selbstständig an.> Außerdem sollte man NIE die Datenbankversion selbst setzen. Das setzen> auf "4" ist wirklich fatal.
Jepp.
Die mitgelieferte readme/createtables-FOR-V0.2.1.sql ist für
Neuinstallationen gedacht. Damit der Benutzer gleich eine komplett
aktuelle Datenbank hat.
b
b.r schrieb:> Jepp.>> Die mitgelieferte readme/createtables-FOR-V0.2.1.sql ist für> Neuinstallationen gedacht. Damit der Benutzer gleich eine komplett> aktuelle Datenbank hat.>> b
Ok gut zu wissen.
b.r schrieb:> @k.j.> Bitte keine Commits ohne Message.>> b
Jap Sorry war heute Morgen etwas Frustriert.
Aber ne andere Frage hab ne Exportfunktion für die suche gemacht fürs
Dokuwiki das geht auch hervorragend hätte das gleiche gerne für, die
Bauteileverwaltung blike da aber nicht durch.
Hallo
Danke für den Tip. Die benötigte CSV-Datei für Dymo-Label ist einfach
durch Semikolions getrennt (Standart). Mir ging es darum, wie ich mir
eine eigene CSV-Maske erstellen kann , in der ID; Name; Footprint;
Lagerort; enthalten sind z.B. wie CSV Export CSV Reichelt oder CSV
Farnell unter der Rubrik "zu bestellende Teile". Da ich die Namen meiner
Lagerorte relativ kurz gehalten habe, würde ich gern auch die
übergeordneten Lagerorte mit ausdrucken.
Beim testen ist mir aufgefallen, dass wenn man unter "zu bestellende
Teile" man den einfachen CSV Export benutzt, der Footprint und nicht der
Name ausgegeben wird.
Bei der Suche wäre es vielleicht nützlich, wenn man im Ergebnisfeld die
Teile markieren könnte die Man als CSV oder XML Datei exportieren möchte
Vielen Dank
Gruß Ansgard
Ansgard schrieb:> Beim testen ist mir aufgefallen, dass wenn man unter "zu bestellende> Teile" man den einfachen CSV Export benutzt, der Footprint und nicht der> Name ausgegeben wird.
Hab ich schon gefixt aber noch nicht commited, werde ich heute Abend
tun;)
Urban B. schrieb:> Baugruppen umfunktioniert, so dass sie jetzt auch> hierarchisch eingeordnet werden können und ein Menü generiert wird.
Hab den Patch mal eingebaut: revision 310
Da sind sicher noch ein paar kleine Bugs drin, sieht aber schon mal
nicht ganz schlecht aus.
b
@K. J.:
Vielleicht könntest Du in der Demo-Datenbank die SVN-Revisionsnummer
hinterlegen. Entweder im Titel, oder über die Banner-Funktion auf der
Startseite.
Grüße
b
b.r schrieb:> Urban B. schrieb:>> Baugruppen umfunktioniert, so dass sie jetzt auch>> hierarchisch eingeordnet werden können und ein Menü generiert wird.> Hab den Patch mal eingebaut: revision 310>> Da sind sicher noch ein paar kleine Bugs drin, sieht aber schon mal> nicht ganz schlecht aus.
Jo, sieht gut aus!
Jetzt könnte man noch folgendes machen:
In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur
Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"
verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf
die Seite "device.php" verlinken, mit einem Parameter für die device-ID.
In der "device.php" den SQL-Filter so abändern, dass nur noch Baugruppen
angezeicht werden, deren Parent-ID der übergebenen ID entsprechen und
keine weiteren Unterbaugruppen besitzen.
mfg
b.r schrieb:> @K. J.:> Vielleicht könntest Du in der Demo-Datenbank die SVN-Revisionsnummer> hinterlegen. Entweder im Titel, oder über die Banner-Funktion auf der> Startseite.>> Grüße> b
Grade Gemacht
Urban B. schrieb:> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.
Ist drin. Revision 314.
Grüße
b
@K. J.:
Da ist noch ein Bug im Navigationsmenü (rev 319). Datenbank erscheint
unter Lieferanten und unter Config. Außerdem zeigt er jetzt gar keine
Baugruppen mehr an.
Willst Du selber erstmal schauen?
b
Jap mach mich grade dadran
EDIT: fertig allerdings hab ich ein anderes Problem dabei gefunden wen
man eine Baugruppe herauslöscht funktioniert das ganze nicht mehr
richtig.
b.r schrieb:> Urban B. schrieb:>> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur>> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php">> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf>> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.> Ist drin. Revision 314.>> Grüße> b
Wunderbar, danke!
Jetzt wär noch schön wenn beim Kopieren einer Baugruppe auch gleich die
Eigenschaft "parentnode" mitkopiert wird, damit diese Baugruppe auch
gleich in der gleichen Baugruppenkategorie erscheint.
Und hat das ein Grund, dass es unter "Bearbeiten" -> "Baugruppen" noch
ein Eintrag "Erstellen/Löschen" gibt? Erstellen und Löschen kann man ja
auch direkt unter "Bearbeiten" -> "Baugruppen".
Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein
Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im
Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen
möchte.
mfg
Urban
Revision 330.
Urban B. schrieb:> Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein> Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im> Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen> möchte.
Das geht an K.J.
Dafür würde sich das Banner in der config.php anbieten.
Grüße
b
Sehr schön.
Und nun schon die nächste Kleinigkeit. Auf der Seite "Teile ohne Preis"
wären noch Spalten für den Lieferanten und die Bestellnummer
wünschenswert, die braucht man ja um den Preis heraussuchen zu können.
Ich hab das mal selber gemacht, müsste man nur noch auf den SVN-Server
laden.
mfg
Urban
EDIT: Iregdwas ist da noch nicht ganz korrekt merke ich gerade, Bei
Teilen ohne Bestellnummer wird eine Null angezeigt in der Tabelle. Was
fehlt da noch?
Urban B. schrieb:> EDIT: Iregdwas ist da noch nicht ganz korrekt merke ich gerade, Bei> Teilen ohne Bestellnummer wird eine Null angezeigt in der Tabelle. Was> fehlt da noch?
Hab nichts gesagt...Die Null war bei den Bauteilen auch als Null
eingetragen ;-) Auf die Idee kam ich gar nicht, dachte grad ich hätte
was falsch geändert in der nopriceparts.php, weil auf einer anderen
Seite waren keine Nullen drin in dieser Spalte. War aber nur Zufall hab
ich jetzt gemerkt :-)
Jetzt, wo ich grad noch Preise am komplettieren bin, fällt mir auf dass
meine Bezugsquellen schon das ein oder andere Produkt aus dem Sortiment
genommen haben. Da wäre es doch gut wenn man dem Bauteil auch eine
Eigenschaft "nicht mehr erhältlich" zuweisen könnte.
Diese könnten dann folgende Eigenschaften haben:
- Sie werden auf den Seiten "Zu bestellende Bauteile" und "Teile ohne
Preis" automatisch nicht mehr aufgeführt
- Sie bekommen eine neue Seite "Nicht mehr erhältliche Teile"
- Sie werden überall dort, wo sie in einer Tabelle aufgelistet werden,
mit einer rötlichen Farbe hinterlegt (oder sonstwie markiert), damit man
sofort sieht dass das Bauteil nicht mehr erhältlich ist. Vorallem bei
Baugruppen wäre das von Vorteil, da man sieht dass dort für Ersatz
gesorgt werden muss.
Gibt aber bestimmt eine Menge Arbeit...
Ich hab jetzt so kleine Sorgen wie das nun mit den Footprints genau
funktioniert. Da sind doch etliche Bilder hinterlegt. warum muss ich die
dann alle einzelnd als footprints deklarieren?
Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db
zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner
drinne steht. Also das ist für mich etwas widersprüchlich.
Kann man das nicht automatisieren, dass man einmal neue Bilder uploaden
kann und deren Dateiname dann als Footprintbezeichnung zur Verfügung
steht, sowie bei der Eingabe neue Bauteile eine Möglichkeit hat dort
(wenn man feststelle, dass man noch kein Bildchen hat) eins Uploaden
kann?
Schön wäre es an dieser Stelle auch, wenn die Bilder beim Aufrufen eines
Bauteils rechts zu sehen wären. Bisher erscheinen die Bilder ja
anscheinend nur in der Übersicht. Hab dafür extra noch mal auf der
Testseite nachgeschaut...
Guido R. schrieb:> Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db> zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner> drinne steht. Also das ist für mich etwas widersprüchlich.
Das ist mir auch schon aufgefallen. Ich hab auch ich schon ein paar
Ideen, wie man das verbessern könnte.
> Schön wäre es an dieser Stelle auch, wenn die Bilder beim Aufrufen eines> Bauteils rechts zu sehen wären.
Ist notiert.
Grüße
b
b.r schrieb:> Guido R. schrieb:>> Also ich meine, dass bei meiner noch recht frisch aufgesetzten part-db>> zwar unter footprints zig Bildchen sind aber in der Bearbeitung keiner>> drinne steht. Also das ist für mich etwas widersprüchlich.> Das ist mir auch schon aufgefallen. Ich hab auch ich schon ein paar> Ideen, wie man das verbessern könnte.>
Hi das ist nicht drinnen wegen der Herstellerspezifischen Bezeichnungen,
außerdem wehre des recht unübersichtlich wenn man mehr drinnen hat als
man braucht da ist man ewig am suchen.
K. J. schrieb:> Hi das ist nicht drinnen wegen der Herstellerspezifischen Bezeichnungen,> außerdem wehre des recht unübersichtlich wenn man mehr drinnen hat als> man braucht da ist man ewig am suchen.
Einfach: Man lädt von Anfang an nur die rein die man effektiv Braucht
Erweitert: Man kann alles hinzufügen und alle so verwalten, dass man sie
aktiv oder inaktiv setzen kann...
b.r schrieb:> Revision 330.>> Urban B. schrieb:>> Ach ja, und was meint ihr, wäre auf der Startseite nicht vielleicht ein>> Link auf diesen Thread noch sinnvoll? Dann muss man nicht grossartig im>> Internet suchen wenn man eine Frage stellen oder Änderungen vorschlagen>> möchte.> Das geht an K.J.> Dafür würde sich das Banner in der config.php anbieten.>> Grüße> b
Ist drinnen auf der Hauptseite, hab nochmal die Updateintervalle der
Test-DB erhöht die wird jetzt alle 6h upgedatet soviel wie momentan
Passiert ist das sinnig.
Werde mich nochmal, ans Wiki, Footprints, label.php, und ne neue TEST-DB
machen, bei den Rest hab ich irgendwie den überblick verloren muss mich
da erst mal wieder einlesen.
mfg tb
Ja, das mit den Footprints hatte ich auch schon im Kopf, dass man da
noch was ändern sollte.
Aber ich hatte auch schon lange eine andere Idee, die ich schon ein
paarmal hätte brauchen können. Und zwar habe ich eigentlich zwei
Lieferanten bei denen ich mein Zeug jeweils bestelle. Jetzt gibts
natürlich sehr viele Teile, die bei beiden Lieferanten erhältlich sind,
und es gibt Teile die nur einer der beiden Lieferanten hat.
So, und wenn ich jetzt dem Bauteil 1N4007 den Lieferanten A zugewiesen
habe und einem exotischen Bauteil den Lieferant B (weil nur B dieses
Teil im Sortiment hat), dann werden mir auf der Seite "Zu bestellende
Teile" zwei verschiedene Lieferanten angezeigt, obwohl eigentlich eine
Bestellung bei Lieferant B genügen würde (der hat natürlich auch 1N4007
im Sortiment).
Bei zwei zu bestellenden Teilen ist das ja kein Problem, aber wenn da
über 20 Teile in der Liste sind, ist das kaum mehr überschaubar.
Daher wäre es optimal wenn man jedem Bauteil mehrere Lieferanten und die
dazugehörigen Bestellnummern und Preise eintragen könnte. Schön wäre
natürlich wenn das ganze dynamisch ist, also die Anzahl der Lieferanten
nicht beschränkt ist. Damit es beim Ausrechnen von Gesamtpreisen usw.
kein Durcheinander gibt, könnte man das ja gleich machen wie bei den
Bildern, so dass man halt ein "Master-Lieferant" wählt und nur mit
diesem Preis wird dann auch gerechnet. Oder man nimmt den Durchschnitt
aller Preise, ist aber nicht zwingend nötig.
Wie das in der Tabelle "Zu bestellende Preise" aussehen könnte seht ihr
im Anhang. Ich fände das total geil wenn das so möglich wäre, da sieht
man dann sofort dass man das Teil bei Lieferant A wie auch bei B
bestellen könnte. Zusätzlich wär dann aber noch eine Spalte mit den
Preisen interessant, dann kann man auch gleich noch vergleichen welcher
Lieferant wieviel günstiger ist.
Mir ist klar dass das ein enormer Aufwand bedeutet. Aber würdet ihr
diese Funktion nicht auch als äusserst nützlich betrachten?
mfg
K. J. schrieb:> Ist drinnen auf der Hauptseite
Warum hast Du das nicht in die config.php[_template] (-->Banner)
reingemacht?
Da könnte es sich jeder individuell editieren...
Grüße
b
Urban B. schrieb:> optimal wenn man jedem Bauteil mehrere Lieferanten und die> dazugehörigen Bestellnummern und Preise eintragen könnte
Ich werd's mal notieren. Eine solche Funktionalität ann nicht schaden.
Bei der Gelegenheit könnte auch gleich die Preistabelle mal aufgeräumt
werden. Das sieht irgendwie komisch aus.
Grüße
b
K. J. schrieb:> hab nochmal die Updateintervalle der> Test-DB erhöht die wird jetzt alle 6h upgedatet
Kannst Du nicht nachschauen, ob was commited wurde und damit das Update
anstossen?
Grüße
b
b.r schrieb:> Guido R. schrieb:>> Gibt's eigentlich irgendwo ein Button um zur Startseite zurück zu>> kehren?> Nein. Ich drück immer F5 oder reload.>> Grüße> b
Wäre dann sicherlich einfacher mit nem Button. bestimmt nicht die mega
Arbeit. Könnte man ja bei Wunsch auf die endlos lange To-Do Liste
schreiben
Guido R. schrieb:> Wäre dann sicherlich einfacher mit nem Button. bestimmt nicht die mega> Arbeit.
Ich weiß zwar nicht, was Du auf der Startseite willst, aber der Button
ist drin (Revision 341).
Ich finde auf der Startseite keine Informationen, die für die tägliche
Arbeit mit part-db relevant wären.
Grüße
b
Urban B. schrieb:> Aber ich hatte auch schon lange eine andere Idee, die ich schon ein> paarmal hätte brauchen können. Und zwar habe ich eigentlich zwei> Lieferanten bei denen ich mein Zeug jeweils bestelle. Jetzt gibts> natürlich sehr viele Teile, die bei beiden Lieferanten erhältlich sind,> und es gibt Teile die nur einer der beiden Lieferanten hat.>> So, und wenn ich jetzt dem Bauteil 1N4007 den Lieferanten A zugewiesen> habe und einem exotischen Bauteil den Lieferant B (weil nur B dieses> Teil im Sortiment hat), dann werden mir auf der Seite "Zu bestellende> Teile" zwei verschiedene Lieferanten angezeigt, obwohl eigentlich eine> Bestellung bei Lieferant B genügen würde (der hat natürlich auch 1N4007> im Sortiment).>> Bei zwei zu bestellenden Teilen ist das ja kein Problem, aber wenn da> über 20 Teile in der Liste sind, ist das kaum mehr überschaubar.>> Daher wäre es optimal wenn man jedem Bauteil mehrere Lieferanten und die> dazugehörigen Bestellnummern und Preise eintragen könnte. Schön wäre> natürlich wenn das ganze dynamisch ist, also die Anzahl der Lieferanten> nicht beschränkt ist. Damit es beim Ausrechnen von Gesamtpreisen usw.> kein Durcheinander gibt, könnte man das ja gleich machen wie bei den> Bildern, so dass man halt ein "Master-Lieferant" wählt und nur mit> diesem Preis wird dann auch gerechnet. Oder man nimmt den Durchschnitt> aller Preise, ist aber nicht zwingend nötig.
Daran habe ich auch schon gedacht. Aber das ist ein erheblicher Aufwand.
Vor allem wird das Verwalten dadurch komplizierter.
Man muss ja erst ein Bauteil Anlegen und dann die Bezugsquellen
eintragen.
Aber wäre echt supper...
Gruss
Juergen
b.r schrieb:> Hmm. Dafür fehlt jetzt wieder die Kategorisierung:
Hm also bei mir nicht, siehe Anhang.
Für was sollte denn die device.php die deviceid brauchen??
Oder hab ich da was falsch verstanden???
Gruß Dennis
Dennis L. schrieb:>> Hmm. Dafür fehlt jetzt wieder die Kategorisierung:>> Hm also bei mir nicht, siehe Anhang.> Für was sollte denn die device.php die deviceid brauchen??> Oder hab ich da was falsch verstanden???
Ja.
Ich zitiere mal:
Urban B. schrieb:> Jetzt könnte man noch folgendes machen:>> In der "nav.php" die funktion "build_devices_tree" so umbauen, dass nur> Baugruppen ohne Unterbaugruppen auf die Seite "devicesinfo.php"> verlinken. Baugruppen, welche noch Unterbaugruppen enthalten, sollen auf> die Seite "device.php" verlinken, mit einem Parameter für die device-ID.>> In der "device.php" den SQL-Filter so abändern, dass nur noch Baugruppen> angezeicht werden, deren Parent-ID der übergebenen ID entsprechen und> keine weiteren Unterbaugruppen besitzen.
Grüße
b.
b.r schrieb:> Schweigen bedeuted Zustimmung. Ich bau das mal wieder ein.>> Grüße> b.
Ja ;) Wollte es gestern machen aber ... wie es halt so ist;)
Edit: aber bitte den link zur Gesamtübersicht drin lassen;)
Hi,
hab gerade den aktuellen Release Kandidaten Part-DB-0.2.0RC1
runtergeladen und nach Beschreibung im Wiki installiert. Leider bekomme
ich beim Aufruf immer nur die Meldung: MySQL-Fehler: Keine Datenbank
ausgewählt
Allerdings ist die Datenbank angelegt (sagt zumindest phpMyAdmin, 11
Tables und der Name ist part-db)
Nachdem ich den User part-db ohne Password angelegt habe und das in
config.php hinterlegte Password gelöscht habe ($db_password = "";) sind
alle Fehlermeldungen, außer der oben beschriebenen weg...aber gehen tuts
halt nicht. Könnte ich etwas übersehen haben?
Gruß
Peter
Peter Sch. schrieb:> Nachdem ich den User part-db ohne Password angelegt habe und das in> config.php hinterlegte Password gelöscht habe ($db_password = "";) sind> alle Fehlermeldungen, außer der oben beschriebenen weg...aber gehen tuts> halt nicht. Könnte ich etwas übersehen haben?
Kannst Du Dich denn manuell mit der Datenbank verbinden?
1
mysql -u part-db -pPARTdb part-db
2
3
show tables;
> aktuellen Release Kandidaten Part-DB-0.2.0RC1> runtergeladen und nach Beschreibung im Wiki installiert
Ist bei schon dir config.php_template vorhanden?
Viele Grüße
b.r
Hi,
nu geht's. Aber ich weiß nicht wirklich, wo das Problem lag. Manuelles
Verbinden ging nicht. Auch nach 'weglassen' des Passwortes nicht. Ich
habe dann mehrfach den User neu angelegt und unterschiedliche Versionen
(local, 127.0.0.1, mit Password ohne Password) probiert. Letztlich bin
ich dann bei der local/mit Password Version fündig geworden, aber auch
erst im 3. Anlauf. Scheint mit den Fingern heute nicht so gut zu
klappen.
Danke für die Hilfe.
Gruß
Peter
Hi,
da es nun funktioniert und ich etwas runexperimentiert habe, habe ich
gleich mal einen Verbesserungsvorschlag (natürlich ohne meckern zu
wollen:-).
Wenn ich eine neue Kategorie anlege, wird die standardmäßig gegen die
'root node' angelegt. Ich würde es als angenehmer empfinden, wenn ich
jeweils die letzte Verwendete Kategorie vorgegeben bekäme, den Cursor im
Kategoriennamen Eingabefeld und nach 'Enter' auch mit dem Cursor dort
wieder lande.
Ähnliches für Lagerorte. Nach Eingabe des Namens, 'Enter' und einem
wiedereinstellen des Cursors im Namenfeld, könnte man sofort den
nächsten Lagerort eingeben. Geleiches trifft die Lieferanten und die
Footprints.
Beim Eingeben eines Bauteils ist der Name scheinbar abhanden gekommen.
Der Eintrag erscheint zwar in der Liste, kann ihn aber nicht zum
Bearbeiten auswählen. Und wenn ich das richtig sehe, kann ich ein
Bauteil nur in der Bearbeitungsansicht löschen...keine Bearbeitung, kein
Löschen, oder?
Gruß
Peter
Hi,
noch ein Nachtrag:
Nach anlegen einer Baugruppe erscheint unter Zugeordneten Teilen die
Meldung:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL
result resource in /var/www/htdocs/part-db/deviceinfo.php on line 272
Und ich bekomme auch keine Teile zugeordnet.
Gruß
Peter
Hi,
könntet Ihr mir Bitte erklären, warum das mit den Datenblättern nicht
funktioniert. Ich habe den Eintrag unter Datenbätter gemacht und nichts
passiert. Wenn ich aber den gleichen String in die Eingabezeile eingebe,
funktioniert der Verweis und das Datenblatt wird im Firefox geöffnet.
Gruß Ansgard
Und nochwas für die ToDo Liste: Lagerort Serien erstellen sollte mit
führenden Nullen gehen. z.B. Kiste-01 bis 11 sonst ist die Reihenfolge
in der Auflistung Kiste-1, Kiste-10, Kiste-11, Kiste-2 usw. Nicht
schlimm, aber unschön.
Gruß
Peter
Peter Sch. schrieb:> Wenn ich eine neue Kategorie anlege, wird die standardmäßig gegen die> 'root node' angelegt. Ich würde es als angenehmer empfinden, wenn ich> jeweils die letzte Verwendete Kategorie vorgegeben bekäme, den Cursor im> Kategoriennamen Eingabefeld und nach 'Enter' auch mit dem Cursor dort> wieder lande.>> Ähnliches für Lagerorte. Nach Eingabe des Namens, 'Enter' und einem> wiedereinstellen des Cursors im Namenfeld, könnte man sofort den> nächsten Lagerort eingeben. Geleiches trifft die Lieferanten und die> Footprints.
Wird geprüft ;-)
> Beim Eingeben eines Bauteils ist der Name scheinbar abhanden gekommen.> Der Eintrag erscheint zwar in der Liste, kann ihn aber nicht zum> Bearbeiten auswählen. Und wenn ich das richtig sehe, kann ich ein> Bauteil nur in der Bearbeitungsansicht löschen...keine Bearbeitung, kein> Löschen, oder?
Nimm mal die aktuelle Version aus dem SVN-Repository. Da ist der Fehler
behoben. Vielleicht macht "The Borg" auch mal wieder einen aktuellen
RC?!
Grüße
b.r
Guido R. schrieb:> Was ist denn mit den Datei und Bilderanhängen in den Baugruppen> geworden?> Wird sich da noch was tun?
Ich denke schon. Geplant ist die Bilderänhänge zu Dokumentanhängen
umzufunktionieren.
Grüße
b.r
Ansgard schrieb:> könntet Ihr mir Bitte erklären, warum das mit den Datenblättern nicht> funktioniert. Ich habe den Eintrag unter Datenbätter gemacht und nichts> passiert. Wenn ich aber den gleichen String in die Eingabezeile eingebe,> funktioniert der Verweis und das Datenblatt wird im Firefox geöffnet.
Kannst Du genau erklären, was Du gemacht hast, und was Du erwartest?
Außerdem wäre es hilfreich zu wissen, welchen Browser Du einsetzt und
auf welchem Betriebssystem das Ganze läuft.
Grüße
b.r
Peter Sch. schrieb:> woran könnte es liegen, daß Umlaute als schwarze Raute mit 7 oder> Fragezeichen drinn, dargestellt werden?
Was ist als $http_charset in Deiner config.php eingetragen?
Grüße
b.r
Peter Sch. schrieb:> Und nochwas für die ToDo Liste: Lagerort Serien erstellen sollte mit> führenden Nullen gehen. z.B. Kiste-01 bis 11 sonst ist die Reihenfolge> in der Auflistung Kiste-1, Kiste-10, Kiste-11, Kiste-2 usw. Nicht> schlimm, aber unschön.
Ist drin. SVN-Revision: 376
Wer will kann die Serien jetzt auch mit Buchstaben anlegen: Ort_A bis
Ort_Z
Grüße
b.r
b.r schrieb:> Guido R. schrieb:>> Was ist denn mit den Datei und Bilderanhängen in den Baugruppen>> geworden?>> Wird sich da noch was tun?> Ich denke schon. Geplant ist die Bilderänhänge zu Dokumentanhängen> umzufunktionieren.>> Grüße> b.r
Könnte man das dann aber vielleicht so machen, dass die Dateien auf dem
Server die gleichen Dateinamen enthalten wie die ursprüngliche Datei?
Bei den Bildern ist das jetzt ja nicht so. Ich fände es halt gut wenn
man die Dateien auch auf dem Server mal durchstöbern kann, und da wirken
die kryptischen Dateinamen etwas verwirrend.
Und ein direkt-Upload von Internetadressen wäre noch cool. Also dass ich
z.B. eine URL von einem Bild eingeben kann, und das Bild dann
automatisch auf dem Server abgespeichert wird. Da wäre dann aber eine
automatische Bildanpassung (grosse Bilder verkleinern, evtl in anderes
Format konvertieren) sehr komfortabel. Ich vermute mal, sowas sollte es
doch schon als mehr oder weniger fertige PHP Skripte geben, oder täusche
ich mich da?
Bei dieser Art von Hochladen wäre dann ein separates Eingabefeld für den
Dateinamen der Zieldatei noch von Vorteil, weil solche Internetbilder
häufig ja auch keine aussagekräftigen Dateinamen haben.
mfg
b.r schrieb:> Peter Sch. schrieb:>> woran könnte es liegen, daß Umlaute als schwarze Raute mit 7 oder>> Fragezeichen drinn, dargestellt werden?> Was ist als $http_charset in Deiner config.php eingetragen?>
Ich gehe mal davon aus, dass du die config.php der part-db meinst...da
kommt die Variable $http_charset nicht drin vor.
> Grüße> b.r
Gruß
Peter
Hi,
Ich hab gerade das SVN eingespielt und folgende Probleme gehabt bzw
gefunden:
Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat
geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql
neu erstellt. Der Inhalt war dann weg, aber es waren sowieso nur
Spieldaten drin. Für die Zukunft würde mich aber schon interessieren,
wie ich die Daten sichern kann, um sie anschließend auch zurückspielen
zu können (Bitte daran denken, daß ich nicht wirklich Ahnung von
Datenbanken habe:-).
Dann hab ich das Erzeugen von Lagerplätzen 01-11 ausprobiert...
funktioniert auch. Nur das Löschen nicht. Wenn ich 1-5 angelegt habe und
3 lösche, habe ich anschließend die 4 zweimal, aber die Liste wird nicht
kürzer. Scheinbar ist das aber nur der Fall, wenn die Lagerorte an der
Rootnode hängen.
Gruß
Peter
Hi,
getestet mit SVN Version 383
Bei Auswahl von Tools/Import erhalte ich:
Parse error: syntax error, unexpected T_VARIABLE in
/var/www/htdocs/part-db/import.php on line 307
Das Phänomen der falsch angezeigten Umlaute finde ich nicht überall. Im
Hauptmenu wird die Übersicht unter Baugruppen falsch angezeigt, Genauso
wie die Überschriften und Texte in dieser Übersicht.
Auf der Seite 'zu bestellende Teile' werden alle Umlaute richtig
angezeigt, außer dem ü auf der Bauteile exportieren 'ausführen' Taste.
Gruß
Peter
Peter Sch. schrieb:> Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat> geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql> neu erstellt.
hättest nicht machen brauchen, die Part-DB besitzt einen DB Updater, das
einzige was manchmal Probleme machen kann ist nen Downgrade von SVN ->
RC, andersherum ist das Problemlos wen man nicht eine ganz alte Ver.
nutzt.
Hab die mobil Ver. mit in die Testdatenbank gepackt, allerdinks ist sie
noch nicht mal ansatzweise brauchbar.
Direktlink: http://partdb.grautier.com/mobil/mobil.php
Oder per Smartfone: http://partdb.grautier.com/ aufrufen.
Peter Sch. schrieb:> Zwischen dem SVN und dem RC hat sich scheinbar das Datenbankformat> geändert. Ich habe also die Datenbank per createtables-FOR-V0.2.1.sql> neu erstellt. Der Inhalt war dann weg, aber es waren sowieso nur> Spieldaten drin. Für die Zukunft würde mich aber schon interessieren,> wie ich die Daten sichern kann, um sie anschließend auch zurückspielen> zu können (Bitte daran denken, daß ich nicht wirklich Ahnung von> Datenbanken habe:-).
Die Datenbank kann automatisch aktualisiert werden (siehe: Konfiguration
-> Datenbank). Das sollte mit etwas Erfahrung der Entwickler problemlos
für die Daten sein.
> Dann hab ich das Erzeugen von Lagerplätzen 01-11 ausprobiert...> funktioniert auch. Nur das Löschen nicht. Wenn ich 1-5 angelegt habe und> 3 lösche, habe ich anschließend die 4 zweimal, aber die Liste wird nicht> kürzer. Scheinbar ist das aber nur der Fall, wenn die Lagerorte an der> Rootnode hängen.
Das Problem konnte ich nicht nachvollziehen. Evtl. war durch einen
Fehler Deine Datenbank inkonsistent.
Grüße
b.r
Peter Sch. schrieb:> Bei Auswahl von Tools/Import erhalte ich:>> Parse error: syntax error, unexpected T_VARIABLE in> /var/www/htdocs/part-db/import.php on line 307
Danke für's finden. Ist in Revision 384 gefixt.
Für sowas wären automatisierte Tests ganz gut. Kennt sich damit jemand
aus?
> Das Phänomen der falsch angezeigten Umlaute finde ich nicht überall. Im> Hauptmenu wird die Übersicht unter Baugruppen falsch angezeigt, Genauso> wie die Überschriften und Texte in dieser Übersicht.>> Auf der Seite 'zu bestellende Teile' werden alle Umlaute richtig> angezeigt, außer dem ü auf der Bauteile exportieren 'ausführen' Taste.
Dann schau mal in der config.php_template, wie man $http_charset
einstellen kann.
Du kannst auch mal einen Screenshot von "Konfiguration -> System" hier
einstellen.
Grüße
b.r
Hi,
derzeit forsche ich, warum das menugestützte Backup der Datenbank auf
meinem System mit allen Datenbanken funktioniert, nur mit der part-db
nicht (Fehlermeldung: /usr/local/mysql/bin/mysqlcheck: Got error: 1049:
Unbekannte Datenbank 'part@002ddb' when selecting the database).
Bisher habe ich herausgefunden, dass die Menuanzeige eine Datenbank mit
Namen part@002ddb anzeigt, phpMyAdmin aber mit dem Namen part-db. Kann
es sein, dass da im Namen Sonderzeichen versteckt sind?
Laufendes System ist ein EIS2 (www.eisfair.org).
Gruß
Peter
Hi,
Problem geklärt. Der - ist es. Der scheint an unterschiedlichen Stellen
unterschiedlich dargestellt zu werden. Hab die Datenbank per 'partdb'
angelegt und alles funktioniert fein.
Gruß
Peter
Hi,
hab doch ein Problem gefunden. Unter bearbeiten/Footprints und
bearbeiten/Baugruppen kann ich nur den übergeordneten Footprint oder die
Baugruppe auswählen (was aber immer nur die Rootnode ist), kann aber
keine neuen anlegen. Ich bin mir nicht sicher, aber sollten die
Footprints da nicht schon alle zu finden sein?
Gruß
Peter
Vorschlag für die ToDo Liste:
wenn in der CSV Datei neue Footprints, Kategorien, Lagerorte oder
Lieferanten auftauchen, könnten die in die entsprechende Liste z.B.
unter einem Oberbegriff 'NEUE' aufgenommen werden, um sie dann
anschließend sinnvoll einzuordnen oder zu modifizieren.
Gruß
Peter
Hi,
nehme alles zurück...hatte die neu angelegte Datenbank noch nicht auf
Version 7 upgedated...daher kam das.
> hab doch ein Problem gefunden. Unter bearbeiten/Footprints und> bearbeiten/Baugruppen kann ich nur den übergeordneten Footprint oder die> Baugruppe auswählen (was aber immer nur die Rootnode ist), kann aber> keine neuen anlegen. Ich bin mir nicht sicher, aber sollten die> Footprints da nicht schon alle zu finden sein?
Gruß
Peter
Das mit dem Backup ist nicht so einfach!
Ein Problem ist, das ein PHP Script nur ein begrenzte Zeit auf dem
Server läuft und dann abgebrochen wird.
Es gibt eine gute Lösung die man einbindnen könnte. Nennt sich glaub ich
mysqlbackup.
Das Rad nochmal zu erfinden für eine intgrierte Lösung lohnt sich
vermutlich nicht.
Gruss
JSachs
Peter Sch. schrieb:> wenn in der CSV Datei neue Footprints, Kategorien, Lagerorte oder> Lieferanten auftauchen, könnten die in die entsprechende Liste z.B.> unter einem Oberbegriff 'NEUE' aufgenommen werden, um sie dann> anschließend sinnvoll einzuordnen oder zu modifizieren.
Danke für den Vorschlag. Ist drin --> Revision 388.
Grüße
b.r
Hi,
mal davon abgesehen, dass ich die Footprintverwaltung noch nicht richtig
verstanden habe ('alle' Bilder sind drinn, aber wenn ich sie benutzten
will, muß ich unter Footprints bearbeiten einen Eintrag mit einem Namen
anlegen, der dem Bildnamen entspricht, um dieses Bild einem Bauteil
zuordnen zu können?), habe ich einen Schönheitsfehler entdeckt.
Beispiel:
Angelegt einen Footprint DIP8 und einen DIP14
Sortierung ist unpassend...weil DIP8 hinter DIP14
Umbenennnen DIP8, Eingabe in Feld 'Neuer Name' DIP08, Enter
Und weg ist er. Die Löschtaste hat keine Sicherheitsabfrage und wird bei
Enter gedrückt.
Kann das nicht so gemacht werden, dass bei einer Eingabe in das 'Neuer
Name' Feld automatisch mit Enter die Umbenennen Taste gedrückt wird?
Gruß
Peter
Hi,
und noch einen:
Wenn kein Footprint ausgewählt ist und die Löschtaste gedrückt wird,
kommt:
Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch
nachschlagen bei 'WHERE parentnode=''' in Zeile 1
Gruß
Peter
Peter Sch. schrieb:> Wenn kein Footprint ausgewählt ist und die Löschtaste gedrückt wird,> kommt:> Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch> nachschlagen bei 'WHERE parentnode=''' in Zeile 1
Danke für's Testen. Gefixt. Revision 389.
Den Rest muß ich erstmal schauen.
Grüße
b.r
Peter Sch. schrieb:> mal davon abgesehen, dass ich die Footprintverwaltung noch nicht richtig> verstanden habe ('alle' Bilder sind drinn, aber wenn ich sie benutzten> will, muß ich unter Footprints bearbeiten einen Eintrag mit einem Namen> anlegen, der dem Bildnamen entspricht, um dieses Bild einem Bauteil> zuordnen zu können?), habe ich einen Schönheitsfehler entdeckt.
Jepp. Die Bilder sind nur Vorschläge. Aber Du kannst sie jetzt (Revision
390) per Klick hinzufügen bzw. löschen.
Grüße
b.r
Peter Sch. schrieb:> Und weg ist er. Die Löschtaste hat keine Sicherheitsabfrage und wird bei> Enter gedrückt.> Kann das nicht so gemacht werden, dass bei einer Eingabe in das 'Neuer> Name' Feld automatisch mit Enter die Umbenennen Taste gedrückt wird?
Wenn man mit der Maus auf Umbennenen klickt geht das.
Schau Dir mal an, ob das in Revision 391 so ok ist (Footprints).
Wenn ja, würde ich die anderen Bearbeiten-Dialoge auch anpassen.
Grüße
b.r
Hi,
Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn
(nach einem Update) die Datenbankversion nicht aktuell ist und per
Configseite upgedated werden muß... oder gleich eine Umleitung
dahin...oder automatisch das Angebot, dass zu tun
Gruß
Peter
Hi,
getestet, aber...
Wenn ich auf die Löschtaste drücke wird gelöscht. Ist ja im Prinzip auch
so richtig, aber es gibt keine Sicherheitsabfrage (wie an anderen
Stellen).
Würde es nicht Sinn machen, gleich das Beibehalten der übergeordneten
Kategorie beim mehrfachen Neuanlegen mit einzubauen? Das vereinfacht die
Eingabe von Hierarchien doch sehr.
Ansonsten vielen Dank für den 'tollen Service':-)
Gruß
Peter
Peter Sch. schrieb:> Wenn ich auf die Löschtaste drücke wird gelöscht. Ist ja im Prinzip auch> so richtig, aber es gibt keine Sicherheitsabfrage (wie an anderen> Stellen).
Mich nerven ja die vielen Sicherheitsabfragen eher...
> Würde es nicht Sinn machen, gleich das Beibehalten der übergeordneten> Kategorie beim mehrfachen Neuanlegen mit einzubauen? Das vereinfacht die> Eingabe von Hierarchien doch sehr.
Ist jetzt drin --> Revision 392.
> Ansonsten vielen Dank für den 'tollen Service':-)
Ebenfalls vielen Dank für's Testen und hier posten :-)
Grüße
b.r
Peter Sch. schrieb:> Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn> (nach einem Update) die Datenbankversion nicht aktuell ist und per> Configseite upgedated werden muß... oder gleich eine Umleitung> dahin...oder automatisch das Angebot, dass zu tun
Das war schonmal drin, ist durch die automatischen Updates deaktiviert
worden.
Und ist jetzt wieder drin: Revision 393
Grüße
b.r
b.r schrieb:> Das war schonmal drin, ist durch die automatischen Updates deaktiviert> worden.> Und ist jetzt wieder drin: Revision 393>> Grüße> b.r
Wurde bis jetzt immer automatisch upgedatet und nun muss man es wieder
manuell machen?
mhm komisch...
Trotzdem bleibt die Datenbank genial :-D!
b.r schrieb:> Peter Sch. schrieb:>> Vorschlag für die ToDo Liste: Roter Hinweis auf der Startseite, wenn>> (nach einem Update) die Datenbankversion nicht aktuell ist und per>> Configseite upgedated werden muß... oder gleich eine Umleitung>> dahin...oder automatisch das Angebot, dass zu tun> Das war schonmal drin, ist durch die automatischen Updates deaktiviert> worden.> Und ist jetzt wieder drin: Revision 393>> Grüße> b.r
das ist Blöd also die auto Umleitung auf die updateseite ;-) wen man ne
mehr user DB hat will man das nicht deswegen kann man das ja auch in der
config.php aus dem Menü entfernen da mit die nicht drankommen vileich
konfigurierbar machen, b.z.w. werden beim Autoupdate das nicht eh auf
der statupseite angezeigt ?
Hi,
> das ist Blöd also die auto Umleitung auf die updateseite ;-) wen man ne> mehr user DB hat will man das nicht deswegen kann man das ja auch in der> config.php aus dem Menü entfernen da mit die nicht drankommen vileich> konfigurierbar machen, b.z.w. werden beim Autoupdate das nicht eh auf> der statupseite angezeigt ?
Ja, da stimme ich zu. Wenn es jetzt (wieder) automagical geht, ist ja
alles fein.
Gruß
Peter
Peter Sch. schrieb:> Wenn es jetzt (wieder) automagical geht, ist ja> alles fein.
Das kannst Du gleich mal ausprobieren :-)
Es gibt eine neue Funktion/ neue Bauteileigenschaft:
obsolet (nicht mehr erhältlich)
Diese hat folgende Auswirkungen:
- obsolete Teile werden auf den Seiten "Zu bestellende Bauteile" und
"Teile ohne
Preis" nicht mehr aufgeführt
- obsolete Teile haben eine eigene Seite: "Nicht mehr erhältliche Teile"
- obsolete Teile werden überall dort, wo sie in einer Tabelle
aufgelistet werden, mit einer rötlichen Farbe hinterlegt, damit man
sofort sieht dass das Bauteil nicht mehr erhältlich ist. Vor allem bei
Baugruppen ist das von Vorteil, da man sieht dass dort für Ersatz
gesorgt werden muss.
Viel Spaß beim Ausprobieren!
b.r
b.r schrieb:> Es gibt eine neue Funktion/ neue Bauteileigenschaft:> obsolet (nicht mehr erhältlich)
Genial, genau so habe ich mir das vorgestellt!
Nur die rote Farbe ist für mein Geschmack etwas zu knallig. Vor allem
aber wird der Kontrast zwischen Schrift und Hintergrund kleiner, was für
Leute mit Sehschwäche (wie mich...) etwas mühsam sein kann.
Ich habe mal ein bisschen rumprobiert und bin auf die Farbe #D19F9F
gekommen, die finde ich perfekt. Ein leicht rötlicher Stich genügt ja um
zu sehen dass das Bauteil nicht mehr erhältlich ist, und der Kontrast
zwischen Schrift und Hintergrund bleibt trotzdem relativ gross.
Was meinst du dazu?
Von mir aus musst du es ja nicht einbauen, ich kann auch meine css
selber anpassen. Aber vielleicht gibt es noch andere Leute denen das so
besser gefällt.
Gruss
Urban
Urban B. schrieb:> Ich habe mal ein bisschen rumprobiert und bin auf die Farbe #D19F9F> gekommen, die finde ich perfekt. Ein leicht rötlicher Stich genügt ja um> zu sehen dass das Bauteil nicht mehr erhältlich ist, und der Kontrast> zwischen Schrift und Hintergrund bleibt trotzdem relativ gross.
Stimmt. Gefällt mir auch besser :-)
--> Revision 397
Grüße
b.r
super :-)
Jetzt kam mir gerade noch was anderes in den Sinn, was ich auch schon
lange mal schreiben wollte.
Und zwar ist bei vielen Footprint-Bilder viel Hintergrund und wenig
Bauteil zu sehen. Fast bei jedem Bauteil ist noch viel transparenter
Rand um das Bauteil herum, den man ohne Probleme wegschneiden könnte.
Oder z.B. bei den Dioden (DO15 usw.) könnte man auch locker die Hälfte
von den Beinchen wegschneiden.
Erstens wären dann bei vielen Bauteilen die kleinen Bildchen in den
Tabellen schon besser erkennbar, und zweitens ist die vergrösserte
Ansicht dann besser mit dem Bauteil ausgenutzt.
Von mir aus kann ich das auch selber mal in Angriff nehmen, wollte aber
nicht die Arbeit machen ohne hier vorher zu fragen (vielleicht hat ja
jemand etwas dagegen?)
Ach ja, müssen die Bilder unbedingt quadratisch sein? Beim Zuschneiden
wäre natürlich schön, wenn die Bilder schlussendlich nicht quadratisch
sein müssen. Ich glaube, da müsste man dann aber die part-db noch
anpassen, so dass auch nicht-quadratische Bilder richtig angezeigt
werden, oder?
mfg
Urban B. schrieb:> Von mir aus kann ich das auch selber mal in Angriff nehmen, wollte aber> nicht die Arbeit machen ohne hier vorher zu fragen (vielleicht hat ja> jemand etwas dagegen?)
Ich hätte da nix dagegen.
> Ach ja, müssen die Bilder unbedingt quadratisch sein?
Ähm, die Bildchen sind alle mit Seitenverhältnis 4:3
1
$ file tools/footprints/*.png
2
tools/footprints/0204.png: PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
3
tools/footprints/0207.png: PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
4
tools/footprints/0309.png: PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
5
tools/footprints/0405.png: PNG image, 320 x 240, 8-bit/color RGBA, non-interlaced
6
...
Das würde ich auch erstmal so lassen wollen.
Und: Ich wiederhole auch gern meinen Vorschlag, statt "POV" auf die
Bildchen den Name des Footprints draufzuschreiben.
Grüße
b.r
b.r schrieb:> Ähm, die Bildchen sind alle mit Seitenverhältnis 4:3
ups, ja stimmt. Habe gar nicht nachgeschaut, hab gedacht die wären
quadratisch...
OK also das Seitenverhältnis soll 4:3 bleiben, und wie siehts mit der
Grösse aus? müssen die zwingend 320 x 240 sein?
b.r schrieb:> Und: Ich wiederhole auch gern meinen Vorschlag, statt "POV" auf die> Bildchen den Name des Footprints draufzuschreiben.
Das wäre nicht schlecht. Mal schauen, vielleicht mach ich da auch noch
was.
mfg
Uii,
da ist man mal 2 Wochen am Malochen und nur on Tour und wenn man zurück
kommt, so ein Fortschritt.
Muss erst mal sehen wo ich wieder einsteigen kann beim helfen :-)
Gruss
JSachs
Urban B. schrieb:> OK also das Seitenverhältnis soll 4:3 bleiben, und wie siehts mit der> Grösse aus? müssen die zwingend 320 x 240 sein?
Ich würde das als Mindestgröße lassen.
Bisher werden sie nach Bedarf verkleinert:
- bei den Tabellen auf 20*15
- wenn man mit der Maus drüberfährt auf 200*150
- und sonst auf eine Höhe von 70 Pixel
Eine einheitliche Größe (bzw. Seitenverhältnis) hätte den Vorteil, das
man bei Erweiterungen erstmal nicht so viele Spezialfälle beachten muss.
Grüße
b.r
OK dann kann ich wohl nicht einfach die Ränder abschneiden, sonst wird
das Bild kleiner. Danach wieder vergrössern wäre auch nicht gerade
schön.
Wie wurden denn die Bilder bisher eigentlich genau erzeugt?
Man könnte ja mit dem bisherigen Verfahren einfach etwas grössere Bilder
erzeugen, dann zuschneiden und danach per Script alle Bilder wieder auf
320x240 verkleinern.
mfg
Urban B. schrieb:> OK dann kann ich wohl nicht einfach die Ränder abschneiden, sonst wird> das Bild kleiner. Danach wieder vergrössern wäre auch nicht gerade> schön.>> Wie wurden denn die Bilder bisher eigentlich genau erzeugt?> Man könnte ja mit dem bisherigen Verfahren einfach etwas grössere Bilder> erzeugen, dann zuschneiden und danach per Script alle Bilder wieder auf> 320x240 verkleinern.>> mfg
Hi die Bilder sind mit Eagle3D erzeugt deswegen geht das POV auch nicht
weg es seiden du hast Lust 2k inc Einträge zu ändern ;P ich wollte erst
mal das fertig machen was ich noch auf dem PC habe kannst da gerne
helfen sind noch um 1k4 Bilder danach kümmre ich mich um den Rest :) die
Bildgröße ist ein Kompromiss aus Größe und menge der am ende
existierenden FPs, es ist auch nicht möglich viel weg zuschneiden ohne
das das alles unsyncron wird.
Ja, dass es mit Eagle3D gemacht wurde, ist klar.
Aber da ist erstmal nichts dabei, um einzeine Bauteile zu rendern oder?
Ich habe es mal damit versucht:
http://code.google.com/p/eagle-3d/source/detail?r=64
hast du es auch damit gemacht?
Mit dem kriege ich in der Standard-Einstellung schonmal 640x480 grosse
Bilder, das würde bestimmt reichen um die Ränder zu entfernen und dann
auf 320x240 zu verkleinern.
Das POV kriegt man doch sicher weg, wenn man eine ganze Platine rendert
steht da ja auch nirgens POV drauf, sondern die Values.
Eventuell kriegt man das aber nicht gescheit automatisiert hin und muss
in mühsamer Handarbeit jedes einzelne Teil rendern...
mfg
Ich hab jetzt nochmal kurz ein bisschen rumprobiert.
Mit
1
convert -crop
(unter Linux) lassen sich die Bilder automatisch auf den eigentlichen
Inhalt zuschneiden, das scheint soweit perfekt zu funktionieren. Nur ist
dann das Seitenverhältnis natürlich ganz anders ;-(
Bisher habe ich noch keine gescheite Lösung, wie man diese Bilder nun
wieder mittig in ein 4:3 Format bringt.
Aber irgendwie sehe ich nicht ganz ein warum das Seitenverhältnis
zwingend 4:3 sein soll. Würde doch Sinn machen wenn das Verhältnis egal
ist oder?
> Eine einheitliche Größe (bzw. Seitenverhältnis) hätte den Vorteil, das> man bei Erweiterungen erstmal nicht so viele Spezialfälle beachten muss.
Verstehe ich nicht ganz...
Wäre es ein zu grosser Aufwand ein variables Seitenverhältnis
zuzulassen?
mfg
Urban B. schrieb:> Wäre es ein zu grosser Aufwand ein variables Seitenverhältnis> zuzulassen?
Z.B. bei dem Hover-Bild müssen Höhe und Breite angegeben werden. Das
funktoniert so wie es jetzt realisiert ist (mit css) nicht mit einem
variablen Seitenverhältnis.
Grüße
b.r
ah okay.
Ich hab mal ein paar Bilder bearbeitet, siehe Anhang.
Sieht soweit doch gut aus, oder?
@K. J.
hast du die ganzen Footprints auch in höherer Auflösung vorhanden? Oder
renderst du direkt im 320x240 Format?
Einige Bilder sind einfach zu klein, um da den ganzen Rand
wegzuschneiden...
mfg
Hi,
entschuldigt die späte Antwort auf die Frage mit den Datenblättern. Ich
habe mehrere Varianten probiert, um die Datenblätter zu öffnen. Um
herauszubekommen ob es bei mir funktioniert, habe ich die Adresszeile
file:///C:/datasheets/sn74HC595.pdf eingegeben. Die pdf wurde daraufhin
richtig geöffnet. Der nächste Schritt war den Link für das Datenblatt in
part-db anzulegen. Dort habe ich beide Versionen ausprobiert, ankreuzen
des Linkverzeichnisses und nur die Eingabe des pdf-Names sowie die den
vollständigen Link (file...) ohne Erfolg. Es erscheint dann in der
Spalte Datenblatter Datenblatt, die Maus ändert sich in den Finger aber
beim klicken passiert nichts. Bei noch einem Versuch, habe ich vergessen
den Hacken auf das Verzeichnis zu setzen darauf hin konnte ich
Datenblatt anklicken und es kam folgende Fehlermeldung "The requested
URL /part-db/sn74hc595.pdf was not found on this server".
Vielen Dank
Gruß Ansgard
Firefox 10.0.2; IE 8.0.6; Safari aktuelle Version
Urban B. schrieb:> ah okay.>> Ich hab mal ein paar Bilder bearbeitet, siehe Anhang.> Sieht soweit doch gut aus, oder?
Schaue ich mir heute Abend mal an.
> @K. J.> hast du die ganzen Footprints auch in höherer Auflösung vorhanden? Oder> renderst du direkt im 320x240 Format?> Einige Bilder sind einfach zu klein, um da den ganzen Rand> wegzuschneiden...>> mfg
Nein die sind alle in dem Format gerändert, bevor du jetzt gross was
versuchst versuche grade das POV weg zubekommen, müsste dann eh alle neu
Rändern, könnte dann eventuell noch einmal grössere erstellen damit du
die Skalieren kannst müsstest mir mal schreiben welche gösse du da gerne
hättest
So hab das POV wegbekommen, allerdings alle Bilder neu einzupflegen kann
rech aufwendig werden, wehre cool wen mir jemand helfen kann, wen das
Rednern fertig ist lade ich das Paket hoch, momentan nur das alte
Format.
K. J. schrieb:> Nein die sind alle in dem Format gerändert, bevor du jetzt gross was> versuchst versuche grade das POV weg zubekommen, müsste dann eh alle neu> Rändern, könnte dann eventuell noch einmal grössere erstellen damit du> die Skalieren kannst müsstest mir mal schreiben welche gösse du da gerne> hättest
Das ist schwierig zu sagen, denn es ist von Bild zu Bild
unterschiedlich. Bei einigen Bildern wäre ein 1600 x 1200 grosses Bild
notwendig, um nach dem Beschneiden noch 320 x 240 zu haben. Bei den
meisten sollten aber 640 x 480 reichen. Also wenn du beim rendern keine
Langeweile kriegst kannst du von mir aus alle mit 1600 x 1200 rendern
;-) Ansonsten kann ich dir auch die wenigen kleinen Footprints nennen,
die ich in 1600 x 1200 haben müsste.
Ich würde eben z.B. bei den bedrahteten Widerständen die Beinchen sehr
stark abschneiden, so dass der Widerstandskörper fast das ganze Bild
ausfüllt. Deshalb wäre dort ein 1600 x 1200 grosses Bild notwendig...
Ok der erste Rendervorgang läuft ja grade, danach mache ich dir erstmal
640x480 den rest mus ich schauen bei der Auflösung dauert das ne halbe
Ewigkeit
Also ich hab gleich mal geschaut bei welchen Bildern 640x480 vermutlich
nicht reichen würde:
1
15KA.png
2
0204.png
3
0207.png
4
0309.png
5
0617.png
6
0922.png
7
CB417.png
8
CB429.png
9
CTS-A-15.png
10
CTS-B-20.png
11
CTS-C-25.png
12
CTS-D-30.png
13
DO7.png
14
DO14.png
15
DO15.png
16
DO16.png
17
DO27.png
18
DO32.png
19
DO34.png
20
DO35.png
21
DO39.png
22
DO41.png
23
DO201.png
24
DO204.png
25
F126.png
26
GP20.png
27
LED-2x1.png
28
LED-2x5.png
29
LED-3.png
30
LED-5.png
31
P600.png
32
PDLD.png
33
SOD57.png
34
SOD61A.png
35
SOD61B.png
36
SOD61C.png
37
SOD61D.png
38
SOD61E.png
39
SOD64.png
40
SOD81.png
Übrigens ist mir aufgefallen, dass das Anzeigen aller Footprints
("Tools" -> "Footprints") schon relativ lange braucht wegen der vielen
Bilder. Viele Footprints unterscheiden sich aber nur in der Grösse, was
auf den Bildern ja eh nicht richtig zu sehen ist. Also könnte man doch
die Footprintverwaltung so machen, dass man einem Bild auch mehrere
Footprint-Namen vergeben kann. Das wäre auch nützlich bei Footprints,
die eh schon mehrere Namen haben, wie z.B. Tantal-Kondensatoren
("Kemet-B" oder "3528-21"). Oder ob eine LED im 0603 oder im 1206
Gehäuse steckt sieht man auf den Bildern ja gar nicht, also würde ein
Bild für alle SMD-LEDs genügen.
Das würde auch das rendern von vielen Bildern ersparen ;-)
mfg
Da ist noch ne Verzeichnisstruktur geplant wollte aber erstmal die
Bilder fertig machen einige namen passen auch noch nicht, hab noch etwa
900 Bilder die ich fertig machen muss, danach kümmer ich mich um das
andere.
Momentan ist mein Server platt da muss ich mich heute erstmal drum
kümmern.
Die 320x240bilder sind im Anhang.
K. J. schrieb:> Da ist noch ne Verzeichnisstruktur geplant
Ahsoo okay, das ist eine gute Idee. Trotzdem wäre es nicht schlecht wenn
man die Bilder individuell den Footprints zuordnen könnte. Ich würde mir
das so vorstellen, dass man beim Anlegen eines neuen Footprints manuell
das dazu passende Bild auswählen könnte. Dass der Dateiname der Bilder
automatisch mit einem gleichnamigen Footprint verknüpft wird könnte man
natürlich weiterhin so lassen, dann ist das manuelle Zuweisen quasi
"freiwillig". Aber das kann man natürlich auch später irgendwann mal
machen, eine Verzeichnisstruktur "entschärft" das Ganze ja schonmal :-)
> Die 320x240bilder sind im Anhang.
ääh versteh ich jetzt nicht ganz was ich mit denen machen soll :-)
Du machst später dann alle Bilder in 640x480 hast du ja einen Beitrag
vorher geschrieben? Dann warte ich erstmal ab bis du diese Bilder
gemacht hast, bringt ja nichts wenn ich jetzt die 320x240 Bilder
bearbeite.
Jup die 320x240 hab ich gemacht weil dadrauf das POV nicht mehr
erscheint, also auch nochmal was zum Ändern die 640x480 Rändern grade,
werde die dan nach und nach austauschen.
War das Absicht, dass der Hintergrund nicht mehr transparent ist?
Die Verzeichnisstruktur mach ich auch gleich, so verliere ich nicht den
Überblick über die 2k Bilder.
Aber wie stellst du dir die Verzeichnisstruktur genau vor? Also die
automatische Verknüpfung zwischen Dateinamen und Footprintnamen ist dann
ja nicht mehr gut möglich...
Ich denke, wenn wir jetzt schon an den Bildern arbeiten, sollten wir
auch gleich Nägel mit Köpfen machen und nicht erst was provisorisches.
Sonst hat man hinterher nochmal einen Haufen Arbeit wenn noch was
geändert werden muss.
mfg
Jo wie möchtest eigentlich vorgehen ? wilste die Bilder die jetzt im SVN
sind erstmal bearbeiten und ich pflege die noch fehlenden ein damit wir
nicht durcheinander kommen.
Zur Transparenz ich hatte das damals mit irfanvief gemacht hab momentan
aber kein Lauffähiges win mehr, mach die erstmal ohne Transparenz ich
bearbeite die dann nach, oder du machst das selber hatte das so gemacht
das ich alles was weis ist Transparent ist dadurch sind die Bilder
besser anzuschauen auch dünkleren untergründen.
Also ich dachte, ich fang mal mit den 640x480 Bildern an, die du
hochgeladen hast. Zuerst die Ordnerstruktur, dann die Dateinamen
anpassen und unwichtige Bilder löschen (gleiche Bauteile in
unterschiedlichen Farben, unterschiedlichen Rastermassen usw).
Also so dass schonmal auf Dateiebene alles fertig ist. Dann könnte man
das auch schonmal hochladen, sollte ja nicht schlimm sein wenn halt noch
alle Bilder 640x480 gross sind.
Danach würde ich nach und nach die Bilder zuschneiden und verkleinern
auf 320x240. Kann dann auch immer wieder die neuen Bilder hochladen.
Wärst du damit einverstanden?
Gleichzeitig wäre es aber schön, wenn die Footprintverwaltung angepasst
werden würde. Ich vermute mal, das automatische Verknüpfen zwischen
Footprintname und Dateiname müsste man dann aufgeben...
Einerseite könnte man das so machen, dass man beim Anlegen eines
Footprints ein Bild aus einer Liste auswählen könnte, und der Pfad auf
die Bilddatei dann im Datenbankeintrag vom Footprint abgespeichert wird.
Andererseite könnte man zusätzlich noch in der Auflistungsseite der
Footprint-Bilder bei jedem Bild direkt entsprechende Footprintnamen
zuordnen können.
Was besseres fällt mir momentan nicht ein, vielleicht hat sonst noch
jemand eine andere Idee?
Ah ja das mit der Transparenz sollte glaube ich auch am Schluss noch mit
einem Skript lösbar sein, damit das nicht viel Handarbeit gibt.
Urban B. schrieb:> Also ich dachte, ich fang mal mit den 640x480 Bildern an, die du> hochgeladen hast. Zuerst die Ordnerstruktur, dann die Dateinamen> anpassen und unwichtige Bilder löschen (gleiche Bauteile in> unterschiedlichen Farben, unterschiedlichen Rastermassen usw).
JAp weg damit :P Dateinamen müsste man dann noch Anpassen, die Frage ist
auch ob man sowas wie pinheader in allen pinanzahlen brauch oder ob da
einer reicht als genneralbild das gleiche für Stecker ... hab immer alle
gemacht das will jeder anders, oder man Splittet das am ende in einzelde
Pakete auf.
> Also so dass schonmal auf Dateiebene alles fertig ist. Dann könnte man> das auch schonmal hochladen, sollte ja nicht schlimm sein wenn halt noch> alle Bilder 640x480 gross sind.>> Danach würde ich nach und nach die Bilder zuschneiden und verkleinern> auf 320x240. Kann dann auch immer wieder die neuen Bilder hochladen.
Am idealsten wehre wen die erst im SVN Landen wen sie das richtige
Format haben die meisten user arbeiten mit der SVN Version.
Mit anderen Worten Komplet fertig sind.
> Wärst du damit einverstanden?>> Gleichzeitig wäre es aber schön, wenn die Footprintverwaltung angepasst> werden würde. Ich vermute mal, das automatische Verknüpfen zwischen> Footprintname und Dateiname müsste man dann aufgeben...
Jap allerdings kann mann ja die chekboxen so erweitern das der Link in
der DB abgelegt wird dann ist das autozuweisen nicht mehr möglich aber
die meisten werden das eh nutzen anstatt die FPs von Hand zu erstellen.
> Einerseite könnte man das so machen, dass man beim Anlegen eines> Footprints ein Bild aus einer Liste auswählen könnte, und der Pfad auf> die Bilddatei dann im Datenbankeintrag vom Footprint abgespeichert wird.
Jup
> Andererseite könnte man zusätzlich noch in der Auflistungsseite der> Footprint-Bilder bei jedem Bild direkt entsprechende Footprintnamen> zuordnen können.> Was besseres fällt mir momentan nicht ein, vielleicht hat sonst noch> jemand eine andere Idee?> Ah ja das mit der Transparenz sollte glaube ich auch am Schluss noch mit> einem Skript lösbar sein, damit das nicht viel Handarbeit gibt.
Jo hatte deswegen Irfanvief benutzt gimp war mir da zu kompliziert :P
Die Grossen FP Bilder sind in arbeit denke aber des dauert noch einige
stunden.
Einer müsste dann noch die Bilder mit POV Beschriftung austauschen aber
das kann man am ende machen nach deiner bearbeitung werden das nicht
mehr viele sein.
> JAp weg damit :P Dateinamen müsste man dann noch Anpassen, die Frage ist> auch ob man sowas wie pinheader in allen pinanzahlen brauch oder ob da> einer reicht als genneralbild das gleiche für Stecker ... hab immer alle> gemacht das will jeder anders, oder man Splittet das am ende in einzelde> Pakete auf.
Ja, ich würde bei solchen Sachen auch alle drinlassen, dann kann jeder
selbst entscheiden wie er es handhaben will. Mit der Ordnerstruktur ist
die Übersichtlichkeit ja eh wieder gewährleistet, da stören die paar
zusätzlichen Bilder nicht mehr. Allerdings z.B. bei den blauen
Folienkondensatoren mit 100 ganz leicht unterschiedlichen Footprints
werde ich vermutlich die meisten löschen. Falls später jemand reklamiert
kann man die auch nachträglich noch machen.
> Am idealsten wehre wen die erst im SVN Landen wen sie das richtige> Format haben die meisten user arbeiten mit der SVN Version.>> Mit anderen Worten Komplet fertig sind.
OK kein Problem, aber wenn ich alle Bilder alleine mache kann das schon
ein Weilchen dauern bis alles komplett fertig ist (mache "nebenbei" noch
ein E-Studium).
Falls ich Hilfe bekommen würde, könnte ich die Bilder auch hochladen
nachdem die Ordnerstruktur und die Dateinamensänderungen gemacht sind.
> Jo hatte deswegen Irfanvief benutzt gimp war mir da zu kompliziert :P
Ah ok, bin mir nicht sicher ob das sogar "convert" auch kann. Ist
momentan aber auch noch nicht wichtig...
> Die Grossen FP Bilder sind in arbeit denke aber des dauert noch einige> stunden.
Kein Problem, ich hab vorerst genug zu tun :-)
> Einer müsste dann noch die Bilder mit POV Beschriftung austauschen aber> das kann man am ende machen nach deiner bearbeitung werden das nicht> mehr viele sein.
Jup.
Also ich hab schonmal die Ordnerstruktur mehr oder weniger fertig, bin
jetzt noch die unnötigen Bilder am löschen und die Dateinamen am
anpassen. Das wir mich für ein Weilchen beschäftigen :-)
Prinzipiell lassen sich die Footprints ja hierarchich ordnen. Die
Hierarchie könnte man aus der Ordnerstruktur übernehmen. Ich fürchte
nur, dsa man dann beim Anlegen von Bauteilen seine Footprints nicht mehr
findet...
Grüße
b.r
Ach so, da hast gleich alle Bilder in 1600x1200 gerendert :-)
Dann bediene ich mich direkt an diesen Bildern, die 640x480 brauch ich
dann ja gar nicht. Schlussendlich verkleinere ich eh wieder alle auf
320x240.
Hi,
habe heute ein neues Teil anlegen wollen. Dabei hatte ich
Schwierigkeiten mit der Eingabe des Preises. Im Fenster neues Bauteil
konnte ich den Preis nur mit einen Punkt als Trennungszeichen eingeben.
Im Fenster ändern eines Bauteils ist es das Komma. Weiterhin kann man im
Fenster neues Bauteil nicht die Backspace Taste zum löschen der letzten
Eingabe im Preisfeld benutzen.
Gruß Ansgard
part-DB R402
Ansgard schrieb:> Weiterhin kann man im> Fenster neues Bauteil nicht die Backspace Taste zum löschen der letzten> Eingabe im Preisfeld benutzen.
Das liegt m.E. an der Prüfung des Feldes durch Javascript. Bin da aber
nicht der Experte um das zu korrigieren.
Grüße
b.r
So, konnte den Grossteil der Bilder nun doch noch per Script bearbeiten,
das hat mir viel Zeit erspart. ImageMagick ist einfach ein geiles Tool,
damit ist nichts unmöglich sofern man die richtigen Befehle einmal
gefunden hat :-)
Ich hoffe das passt so einigermassen. Einige Bilder konnte ich nicht
richtig identifizieren was das nun sein soll, wäre vielleicht nicht
schlecht wenn früher oder später mal jemand drüber schauen würde der
sich mit der Vielfalt der Bauteile auskennt.
Ansonsten würde ich sagen, das kann man so mal ins SVN laden, sofern die
Ordnerstruktur auch programmiertechnisch realisiert wurde.
Ein paar wenige Bilder sind immernoch ein bisschen kleiner als 320x240,
aber ich glaube das kann man auch so lassen.
Was meint ihr, habe ich an den Widerständen & co zuviel geggeschnitten
oder würdet ihr das so lassen? Ist irgendwie halt auch ein bisschen
Geschmackssache...
mfg
Sorry hat etwas gedauert, sieht echt gut aus sind das alle ? also Alle
geränderten Bilder ? hab 17xx sollte hinkommen, hab leider grade etwas
wenig zeit aber, wen des alle sind Pflege ich die tage ein mach die
Alten raus und fange mit dem Katalogsystem an, wen du die so wie sie
jetzt sind freigibst.
Mit der grösse solange das Format auf 320x240 skalierbar ist ist es
egal, die alten Bilder kann man ja als Paket nochmal extra hochladen,
für die Leute die das nicht alles umstellen wollen.
Ja, das sind alle.
Bei ein paar Sachen war ich mir aber etwas unsicher:
- Bei den IC-Sockel habe ich die Sockel, die einen Hebel haben, in einen
Ordner namens "TEX" geschoben, da die Dateinamen mit "TEX" begannen.
Würde vielleicht mehr Sinn machen wenn man den Ordner noch in
"Testsockel" oder sowas ähnliches umbenennen würde (wie heissen die
richtig?).
- Direkt im Verzeichnis "Verbinder" sind noch ein paar komische Teile
drin, bei denen ich nicht weiss was ich damit machen soll.
- Im Verzeichnis "Kondensatoren" sind noch 4 Bilder (CTS_*) drin, sowas
habe ich noch nie gesehen, was sind das für Kondensatoren?
- Im Verzeichnis "Widerstände/Bedrahtet" habe ich die Verzeichnisse "RB"
und "PR" aufgrund der Dateinamen erstellt. Ich weiss nicht was das für
Typen sind, deshalb konnte ich sie nicht richtig zuordnen.
mfg
Noch was zum Webinterface:
Bei den Baugruppen wird mir kein Gesamtpreis mehr angezeigt. Ist
übrigens auch in der online-Demo so. Revision 405.
Dann ist mir aufgefallen, dass der Platz für die Tabelle bei den
Baugruppen recht knapp bzw. schon zu klein ist. Eigentlich könnte man ja
die letzte Spalte ("Entfernen") auch löschen, dann müsste man zum
Entfernen von Bauteilen einfach die Stückzahl auf Null stellen und
"Übernehmen" anklicken.
Und noch was zur geplanten Umstrukturierung der Footprintverfaltung:
Es wäre irgendwie cool wenn man jedem Footprint zusätzlich noch ein
"Anzeigename" zuweisen könnte, der dann in den Teile-Tabellen angezeigt
wird. Also wenn man ein Footprint "RES-0805" und ein "CAP-0805" hat,
könnte man beiden den Übernamen "0805" geben. In den Tabellen erscheint
dann beim Widerstand und beim Kondensator derselbe Footprint "0805",
beim Kondensator wird aber natürlich ein Kondensatorfootprint-Bild und
beim Widerstand ein Widerstandsfootprint-Bild angezeigt. Auf die Idee
kam ich übrigens, weil man so noch etwas Platz sparen könnte in den
Tabellen, weil einige Footprintnamen so kürzer ausfallen würden.
mfg
Urban B. schrieb:> Bei den Baugruppen wird mir kein Gesamtpreis mehr angezeigt. Ist> übrigens auch in der online-Demo so. Revision 405.
Gefixt. Revision 406
b.r
Urban B. schrieb:> Ja, das sind alle.>> Bei ein paar Sachen war ich mir aber etwas unsicher:>> - Bei den IC-Sockel habe ich die Sockel, die einen Hebel haben, in einen> Ordner namens "TEX" geschoben, da die Dateinamen mit "TEX" begannen.> Würde vielleicht mehr Sinn machen wenn man den Ordner noch in> "Testsockel" oder sowas ähnliches umbenennen würde (wie heissen die> richtig?).
Textool (glaub ich)
>> - Direkt im Verzeichnis "Verbinder" sind noch ein paar komische Teile> drin, bei denen ich nicht weiss was ich damit machen soll.
vielleicht nen Misc. Ordner
>> - Im Verzeichnis "Kondensatoren" sind noch 4 Bilder (CTS_*) drin, sowas> habe ich noch nie gesehen, was sind das für Kondensatoren?
Glaube Folie mit ALU-Ummantelung
>> - Im Verzeichnis "Widerstände/Bedrahtet" habe ich die Verzeichnisse "RB"> und "PR" aufgrund der Dateinamen erstellt. Ich weiss nicht was das für> Typen sind, deshalb konnte ich sie nicht richtig zuordnen.>
Hochlastwiederstäne / die Grünen sind Dratwiederstände aber die
Bezeichnung weis ich auch nicht
> mfg
@kami89 ja so in etwas war es geplant, wir müssen dafür eh neue Tabellen
erstellen denn kann man gleich nen Rundumschlag machen.
Hab schon etwas am entwurf gefeilt, denke mann kann den Footprint
hinterher einen Harken setzen ob ein R,C,L ist Angezeigt wird dan z.b.
bei 0805 immer nur der reine footprintname nur in der Auswahlfunktion
steht dann die art vor b.z.w. denke ich das auch ein umbenennen möglich
sein sollte, b.z.w. das man seinen Kategorien einen FP Ordner zuweisen
kann.
hmm wäre es möglich dass du die kleinen Ordnerumbenennungen gleich
selber vornimmst? Wäre irgendwie Humbug wenn ich nochmal 40MB hier
hochlade, nur wegen einer handvoll Ordnerumbenennungen ;-)
Jo, ansonsten glaube ich das kommt gut mit der Umstrukturierung der
Footprintverwaltung, ich habe da vollstes Vertrauen in euch :-D
Bin auf jeden Fall gespannt auf das Ergebnis!
@b.r
> Gefixt. Revision 406
Danke, läuft :-)
mfg
In Revision 407 ist mal ein erstes Update mit den neuen Footprintbildern
+ deren Anordnung in Unterordnern. Es ist m.E. noch nicht perfekt, aber
ein Anfang.
Allerdings findet die Tabellenansicht durch die neuen Namen nicht mehr
alle Footprints :-/
Grüße
b.r
Hi die Tabellenansicht ist noch nicht umgestellt momentan sind beide
bilderpakete drinnen, wobei das neue noch reichlich gross ist (100MB),
wil das nach und nach umstellen erstmal lauft die alte weiter, ich mache
die neue Verwaltung nebenher.
Hm kann einer das SVN mal wieder geraderücken auf rev 407 + die
Änderungen von 410 mein SVN Client hat sich komplett zerlegt und leider
nur müll gemacht ich bekomme das grade überhaupt nicht hin.
Sorry mfg tb
Das Prob ist das Goggle die FP nicht vollständig anzeigt aber mann sie
komplett auschecken kann ka warum, dachte erst das liegt am Client da
der ganz gerne mal zikkt.
Es scheint als hätte es jetzt doch noch geklappt wie ich in der
aktuellen Revision sehe.
Ich finde die neuen Bilder machen schon was her in der Auflistung der
Footprints. Allerdings benötigt die Seite jetzt verdammt lange bis alles
geladen wurde, eine hierarchische Darstellung wäre langsam wünschenswert
:-)
Habe gerade gesehen dass einige Bilder noch weisse Stellen statt
Transparenz drin haben, vorallem bei den IC-Sockeln. Ich werde das mal
noch anpassen und die paar Bilder dann hier hochladen.
mfg
Urban B. schrieb:> Ich finde die neuen Bilder machen schon was her in der Auflistung der> Footprints.
Finde ich auch. Vielen Dank!
> Allerdings benötigt die Seite jetzt verdammt lange bis alles> geladen wurde, eine hierarchische Darstellung wäre langsam wünschenswert> :-)
Ja. Andererseits durchscrollen um was zu suchen ('optisch') würde ich
auch nicht missen wollen.
Und trotz der Sortierung in Verzeichnisse, sind eindeutige
Footprintnamen wichtig. Die Datenbank kann zwar die Footprints
hierarchisch verwalten, aber mit DIP16 gibt es jetzt z.B. ICs, Sockel
und Drehschalter.
Die Zuordnung zwischen Namen und Bild erfolgt in der Datenbank aber nur
mit einer Namenssuche, ohne Beachtung der Hierarchie.
Grüße
b.r
b.r schrieb:> Vielen Dank!
Kann ich nur zurückgeben :-)
> Ja. Andererseits durchscrollen um was zu suchen ('optisch') würde ich> auch nicht missen wollen.
Dann könnte man ja auch einen Link auf "Alle Footprints" einfügen. Also
neben den Ordnern "Aktiv", "Akustik", "Elektromechanik" usw. noch ein
Ordner "Alle Footprints". Dann muss man den Browser nur dann quälen,
wenn man auch wirklich alle Bilder auf einer Seite sehen möchte.
> Und trotz der Sortierung in Verzeichnisse, sind eindeutige> Footprintnamen wichtig. Die Datenbank kann zwar die Footprints> hierarchisch verwalten, aber mit DIP16 gibt es jetzt z.B. ICs, Sockel> und Drehschalter.> Die Zuordnung zwischen Namen und Bild erfolgt in der Datenbank aber nur> mit einer Namenssuche, ohne Beachtung der Hierarchie.
OK werde ich noch machen. Da kommt mir gerade eine Idee in den Sinn: Die
Footprints sollen ja auch einen "Übernamen" erhalten, der dann jeweils
in den Tabellen erscheint, also z.B. eben "0805" für R und C. Wenn ich
jetzt allen Bildern Namen wie "CAP_0805.png" und "RES_0805.png" geben
würde, könnte man automatisch die Bezeichnung hinter dem Underline als
Übernamen nehmen. Natürlich soll es trotzdem manuell editierbar sein,
aber halt einfach dass es als default übernommen wird.
Ist es eigentlich in Ordnung wenn ich alle Ordner- und Dateinamen in
Deutsch benenne? Oder wäre euch Englisch lieber?
Teilweise klingt Deutsch schon ein bisschen blöd, z.B.
"Widerstand_0805.png" statt "RES_0805"...
mfg
Urban
Hi, ich hab erstmal beschlossen mich aus dem Projekt zurück zu ziehen
hab momentan einfach nicht die Zeit dafür, deswegen die frage an die
Aktiven 3 Comitter ob jemand den Admin braucht, ansonsten stehe ich
natürlich dafür auch weiterhin da, nur immer was zwischen Tür und Angel
zu machen macht mehr kaputt als es was bringt.
mfg k.j. aka theborg
K. J. schrieb:> Hi, ich hab erstmal beschlossen mich aus dem Projekt zurück zu ziehen> hab momentan einfach nicht die Zeit dafür, deswegen die frage an die> Aktiven 3 Comitter ob jemand den Admin braucht, ansonsten stehe ich> natürlich dafür auch weiterhin da, nur immer was zwischen Tür und Angel> zu machen macht mehr kaputt als es was bringt.>> mfg k.j. aka theborg
Mir geht es im Moment nicht anders.
Ich lese zwar mit, aktiv sein ist mir aber nicht möglich. Hoffe das wird
im Mai wieder anders.
Gruss
Juergen
K. J. schrieb:> deswegen die frage an die> Aktiven 3 Comitter ob jemand den Admin braucht
Wenn sich niemand weiter findet, kann ich Dir den Admin auch übernehmen.
Viel wichtiger finde ich, was mit der Demoseite passiert bzw. passieren
soll. Kannst Du dazu was sagen? Evtl. auch, was da für ein Aufwand
drinsteckt?
Grüße
b.r
b.r schrieb:> K. J. schrieb:>> deswegen die frage an die>> Aktiven 3 Comitter ob jemand den Admin braucht> Wenn sich niemand weiter findet, kann ich Dir den Admin auch übernehmen.> Viel wichtiger finde ich, was mit der Demoseite passiert bzw. passieren> soll. Kannst Du dazu was sagen? Evtl. auch, was da für ein Aufwand> drinsteckt?>> Grüße> b.r
Aufwand entsteht da keiner !!! Das ist ehr für die Einstellungen von dem
Gookel nötig (comitter adden, seite verwalten ...)
Hi, die DEMO Seite läuft recht Autark also jetzt seit 2 Monaten ohne das
Wartung notwendig ist, ich werde noch die DB neu Reinladen die ist
mittlerweile recht verhunzt aber die restliche Wartung wird wohl im
Rahmen der generellen Serverwartung für mich Möglich sein.
@ Jürgen Sachs und K.J.
Schade, aber kann man natürlich verstehen. Jedenfalls vielen Dank für
das was ihr bis jetzt geleistet habt!
@ b.r.
Bist du hier jetzt noch der Einzige, der aktiv beteiligt ist?
Ich bin jetzt noch die Footprints am anpassen. Irgendwie habe ich da
aber gewisse Probleme... Wenn ich meine neuen Bilder auf den Server
kopiere, erscheinen die Bilder gar nicht in der Footprintauflistung. Es
ist nur der Text (unter dem fehlenden Bild) zu sehen. Öffne ich die
gleichen Dateien direkt auf dem Server mit einem Bildbetrachter, lässt
sich das Bild problemlos öffnen. Ausserdem werden bei den neuen Bildern
der DIP-IC-Sockel die jetzt transparenten Bereiche gar nicht als
transparent dargestellt, sondern immernoch weiss. Im Bildbetrachter
funktioniert auch das natürlich bestens.
Hast du irgendeine Ahnung was da los sein könnte?
Den Browser-Cache habe ich ständig wieder gelöscht, das hats aber nicht
gebracht.
Und was meinst du zu den deutschen Datei-/Ordnernamen? Doch lieber
Englisch?
mfg
K. J. schrieb:> Aufwand entsteht da keiner !!! Das ist ehr für die Einstellungen von dem> Gookel nötig (comitter adden, seite verwalten ...)
Na dann ist doch gut. Solange Du per Mail erreichbar bist, wenn doch was
sein sollte, können wir auch den aktuellen Zustand belassen.
> Hi, die DEMO Seite läuft recht Autark also jetzt seit 2 Monaten ohne das> Wartung notwendig ist, ich werde noch die DB neu Reinladen die ist> mittlerweile recht verhunzt aber die restliche Wartung wird wohl im> Rahmen der generellen Serverwartung für mich Möglich sein.
Das klingt sehr gut.
BTW: Welche PHP Version läuft eigentlich auf dem Server? Momentan
scheint die ein Problem mit array_merge in glob_recursive zu haben.
An meinem lokalen Testsystem (5.3.8) kann ich das Problem leider nicht
nachstellen.
Vielleicht ist es ja noch möglich das PHP auf dem Testsystem zu
aktualisieren.
Grüße
b.r
Urban B. schrieb:> Bist du hier jetzt noch der Einzige, der aktiv beteiligt ist?
Sieht so aus. Aber jetzt geht ja auch langsam die Bstaelsaison zu Ende
und die Draußensaison geht los :-)
[Footprints]
> Hast du irgendeine Ahnung was da los sein könnte?> Den Browser-Cache habe ich ständig wieder gelöscht, das hats aber nicht> gebracht.
Nein, aber Du kannst mir gern eine Mail mit ein paar Testbildern
schicken (oder die hier einstellen), dann schau ich mir das mal an.
> Und was meinst du zu den deutschen Datei-/Ordnernamen? Doch lieber> Englisch?
Bin unentschlossen. Footprint, DIP, XTAL sind englisch. Allerdings
sortiere ich meine Bauelemente auch nach deutschen Kategorien.
Vielleicht ist deutsch doch etwas übersichtlicher.
Grüße
b.r
b.r schrieb:> BTW: Welche PHP Version läuft eigentlich auf dem Server? Momentan> scheint die ein Problem mit array_merge in glob_recursive zu haben.> An meinem lokalen Testsystem (5.3.8) kann ich das Problem leider nicht> nachstellen.>> Grüße> b.r
Ist 5.2.6 also noch nicht so alt, jup Fehler gibt das da einige
allerdings denke ich ehr das sind noch Codingprobleme da es nicht
überall auftritt.
@b.r.
OK also ich brauche noch ein bisschen Zeit bis ich die Bilder nochmal
überarbeitet habe. Danach lade ich sie wieder hier hoch.
Ich habe jetzt angefangen bei jedem Bild noch ein Präfix hinzuzufügen,
damit die Dateinamen ganz sicher eindeutig und sogar selbstsprechend
sind. Allerdings kann das teilweise zu relativ langen Dateinamen führen,
was auf der Footprint-Übersichtsseite eher suboptimal ist...
Mal schauen ob mir noch eine schlaue Idee in den Sinn kommt ;-)
mfg
So, hier nochmal eine neue Version der Footprintbilder.
Wie gesagt, bei mir werden die Bilder nicht angezeigt wenn ich sie auf
meinen Webserver kopiere. Ich wäre froh wenn du das mal bei dir
ausprobieren könntest, dann wissen wir ob das Problem bei meiner
Installation oder bei den Bildern liegt.
Die Dateinamen sind jetzt möglichst so gewählt, dass alles hinter dem
ersten Underscore als Footprintname genommen werden kann. Wäre cool wenn
du das dann auch so programmieren könntest :-)
mfg
Hallo,
erstmal muss ich sagen, dass ich die Datenbank klasse finde :)
Ich hab ein paar kleine Änderungen am Code vorgenommen, ich hänge mal
die Patches mit an, falls es jemand gebrauchen kann.
Da unter Gnome3 Dialog-Fenster keinen Button mehr zum schließen haben,
hab ich die Option in der config.php geändert, beim schließen der
Fenster kam aber immer nur eine weiße Seite mit "false", ich habs es
durch eine zusätzliche Zeile in der popup.php beheben können.
(popup.patch)
Dann habe ich unter Tools/Label noch einen Widerstandsrechner eingefügt.
Vielleicht kann man ja ne Extra-Kategorie machen für solche Rechner.
(widerstand.patch, die dateien label.css und label.js müssen in den
tools/label Ordner)
Mich hatt es gestört, dass ich die Datanblätter nicht vom aktuellen
Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder
umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner
hochladen kann der in der config.php als datasheet_path angegeben ist.
Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben
könnte (der orginale Dateiname würde meist schon reichen), vielleicht
passe ich das noch an. (datasheet.patch)
Mir ist aufgefallen, dass beim löschen eines Bilder, die Bilddatei
selber nicht gelöscht wird (bei den Datenblätter zur Zeit ebenso).
Ich hoffe dies ist der richtige Ort für Bug-/Request-Meldungen.
Vielen Dank für Deine Arbeit.
André Althaus schrieb:> Dann habe ich unter Tools/Label noch einen Widerstandsrechner eingefügt.> Vielleicht kann man ja ne Extra-Kategorie machen für solche Rechner.> (widerstand.patch, die dateien label.css und label.js müssen in den> tools/label Ordner)
Den Widerstandsrechner hab ich schon mal ein gebaut (Revision 414).
Der stand auch schon auf meiner internen TODO-Liste :-)
Dankeschön.
Den Rest schau ich mir auch noch an.
Viele Grüße
b.r
@André
coole Sache, jetzt läuft wiedermal was hier :-)
Schaut schonmal gut aus, der Widerstandsrechner.
Auf das Feature mit den Datenblättern warte ich auch schon lange :-)
@b.r
Konntest du meine Footprints anschauen? Werden die bei dir richtig
angezeigt?
mfg
Urban B. schrieb:
> Konntest du meine Footprints anschauen? Werden die bei dir richtig> angezeigt?
Ja, funktioniert.
Den Teil mit den "Aktiven" Bauelementen checke ich gerade ein (Revision
416).
Da wo nur ein Teil im Unterverzeichnis lag, habe ich das Teil eine
Verzeichnisebene nach oben geschoben.
Grüße
b.r
Hei zusammen
Ha folgendes Problem bzw. seh da grad nicht worans liegt.
Kann meinen Bauteilen keine Footprints zuordnen. (Siehe Printscreen)
DB läuft auf einer virtuellen maschine mit folgenden Angaben:
Apache/2.2.16 (Debian)
MySQL-Client-Version: 5.1.61
PHP Erweiterung: mysqli
Server Version: 5.1.61-0+squeeze1
Auf PART-DB greife ich mit Firefox 11.0 zu.
Woran könnte das liegen? Bzw. was mach ich falsch?
Gruss Oliver
P.S. Cooles Tool. ;)
Oliver Schmutz schrieb:> Hei zusammen>> Ha folgendes Problem bzw. seh da grad nicht worans liegt.> Kann meinen Bauteilen keine Footprints zuordnen. (Siehe Printscreen)
Hallo,
Du hast aber die Footprints schon auch angelegt oder? Die
Footprint-Bilder sind nicht automatisch auch als Footprints in der
Datenbank aufgelistet.
Falls das nicht das "Problem" war, werden die Footprints denn wenigstens
auch richtig in der Datenbank abgespeichert und unter
"Bearbeiten/Footprints" aufgelistet?
@b.r
Aah ja, die "neuen" Footprints werden jetzt auch bei mir wieder richtig
angezeigt. Kann mir nicht erklären, warum das vorher nicht richtig
funktionierte...
mfg
Ojeee...
Urban B. schrieb:> Du hast aber die Footprints schon auch angelegt oder? Die> Footprint-Bilder sind nicht automatisch auch als Footprints in der> Datenbank aufgelistet.
Genau das wars...ich dachte noch ich sollte liber ins Bett gehn.
Verdammt. Das hab ich wirklich nicht gesehen.
Danke jetzt läufts einwandfrei.
Oke nun hab ich ein neues Problem.
System ist immer noch das selbe:
Apache/2.2.16 (Debian)
MySQL-Client-Version: 5.1.61
PHP Erweiterung: mysqli
Server Version: 5.1.61-0+squeeze1
Wenn ich aber nun mit IE (Version 8) ein Bauteil erstellen will kpallt
alles bis ich auf bauteil hinzufügen klicke. Dan öffnen sich 2 Popups.
Siehe Screenshot.
Das Bauteil ist erstellt. Aber ich muss einfach manuel alle Fenster
schliessen.
Kann man da was anderes dagegen tun als Firefox zu nutzen? ^^
Oliver Schmutz schrieb:> Wenn ich aber nun mit IE (Version 8) ein Bauteil erstellen will kpallt> alles bis ich auf bauteil hinzufügen klicke. Dan öffnen sich 2 Popups.> Siehe Screenshot.
Ich kann jetzt gerade nicht mit dem IE testen. Aber für mich sieht es so
aus, als wenn da eine Sicherheitseinstellung des IE zuschlägt.
Alternativ könntest Du mal die Einstellung
b.r schrieb:> Alternativ könntest Du mal die Einstellung$use_modal_dialog = false;> in der config.php ausprobieren.
hab ich gemacht. Das Problem schein gelöst. Nur wird nach einem
erstellen der Bauteile die Übersicht nicht automatisch aktualisier d.h
das neu erstellte bauteil ist erst nach einem manuelen Refresh sichtbar.
Vielen dank aber shonmal für die schnelle Antwort.
Gruss Oliver
P.S.
> Ich kann jetzt gerade nicht mit dem IE testen. Aber für mich sieht es so> aus, als wenn da eine Sicherheitseinstellung des IE zuschlägt.
Werd ich auch noch ausprobieren.
Oliver Schmutz schrieb:> Werd ich auch noch ausprobieren.
Irgendwie krieg ich das mit IE nicht hin. Allen Securitiy Schrott
abgestellt...aber trotzdem funktioniert das nicht.
Das selbe konnte ich mit dem IE auch feststellen, und ich fand auf die
Schnelle auch gerade keine Einstellung die das beheben könnte.
Was ich aber noch gemerkt habe, ist dass man beim Erstellen eines neuen
Bauteiles mit dem IE mit dem Tabulator vom "Lagerbestand" zum
"Min.Bestand" switchen kann. Komischerweise funktioniert das bei meinem
Firefox 11 nicht.
Vom ersten Feld zum zweiten, das gaht. Aber vom zweiten zum dritten geht
nicht mehr. Ist das nur bei mir so oder habt ihr das Problem auch?
Ich bin mir ziemlich sicher dass es mal funktioniert hat. Aber ob nun
ein Update von Part-DB, von Firefox oder von Sonstwas das Problem
verursachte, das kann ich nicht sagen.
mfg
Urban B. schrieb:> Vom ersten Feld zum zweiten, das gaht. Aber vom zweiten zum dritten geht> nicht mehr. Ist das nur bei mir so oder habt ihr das Problem auch?
Ja. Habe ich auch schon festgestellt.
> Ich bin mir ziemlich sicher dass es mal funktioniert hat. Aber ob nun> ein Update von Part-DB, von Firefox oder von Sonstwas das Problem> verursachte, das kann ich nicht sagen.
Ich meine, es ist entstanden, als bei den Eingabefeldern ein JavaScript
(zur Prüfung) hinterlegt wurde.
Ich habe leider momentan keine Zeit das näher zu untersuchen.
Grüße
b.r
Oliver Schmutz schrieb:>> Alternativ könntest Du mal die Einstellung$use_modal_dialog = false;>> in der config.php ausprobieren.>> hab ich gemacht. Das Problem schein gelöst. Nur wird nach einem> erstellen der Bauteile die Übersicht nicht automatisch aktualisier d.h> das neu erstellte bauteil ist erst nach einem manuelen Refresh sichtbar.
Update:
Wenn ich die Einstellung : $use_modal_dialog = false; verwende wird bein
nlegen bzw löschen eines Bauteils in Firefox im hintergrund ein fals
eingeblendet.
Nun hab ich dazu wie auch schon weiter oben "André Althaus (nummer5) "
in der popup.php in dr else schliefe ein "location.reload(true);"
hinzugefügt.
Jetzt verhalten sich zumindest FF und IE gleich.
Das Problem mit dem Refresh besteht aber immer noch.
P.S. Weis jemand wie ich Datenblätter auf einem Ext File Server
einbinden könnte?
file://///<Server Adresse>/Datasheets/1-Wire_ICs/DS28E04-100.pdf
funktioniert nicht.
Normal im FF geöffnet funktioniert der link
In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der
Validate-Funktion wird leider nur auf [0-9] und '.' getestet.
Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben
könnte, das müsste beim schreiben in die DB dann automatisch in einen
Punkt umgewandelt werden.
Da Problem mit der Tabulatorreihenfolge hab ich auch. Und das Update der
Übersichtseite beim anlegen neuer Teile geht bei mir auch nicht richtig.
Wenn ich am Wochenende neue Teile eingebe nervt es mich vielleicht genug
um es mir mal anzuschauen.
André Althaus schrieb:> In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der> Validate-Funktion wird leider nur auf [0-9] und '.' getestet.>> Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben> könnte, das müsste beim schreiben in die DB dann automatisch in einen> Punkt umgewandelt werden.
Ich hab mal versucht das zu verbessern (Revision 422). Aber so richtig
super finde ich das validateNumber-script noch nicht.
Grüße
b.r
Hallo part-db Nutzer!
Ich habe jetzt ein Update/Datenbankupdate auf die neuen Footprints
gemacht: Revision 427
Damit werden die Footprints in der Datenbank auf die neuen Namen
geändert. Wer das nicht will, muß das automatische Update ausschalten.
Außerdem empfehle ich vorher ein Backup der Datenbank zu machen.
Das Umbennenen funktioniert natürlich nur, wenn die Originalnamen der
Footprints nicht verändert wurden.
Zu folgenden (alten) Footprints habe ich keinen neuen (bzw. keinen
eindeutigen) Footprint gefunden:
1
TO220-3VX
2
TO3-3
3
TO52A
4
SIL
5
MULTIWATT15H
6
RJ45
7
MB4S
8
MB6S
9
MODULAR215875-3
10
MODULAR215876-6
11
MODULAR215876-7
12
MODULAR215877-4
13
MODULAR215877-7
14
MODULAR215878-2
15
MODULAR555140-1
16
MODULAR555140-2
17
MODULAR555153-1
18
MODULAR555154-1
19
MODULAR555154-2
20
MODULAR555162-1
21
MODULAR555163-1
22
MODULAR555163-2
23
MODULAR555164-1
24
MODULAR555165-1
25
MODULAR555165-2
26
MODULAR555165-3
27
MODULAR555165-5
28
MODULAR555166-1
29
MODULAR555167-1
30
MODULAR555167-2
31
LSP11
32
LSP13
33
LED-2x1
34
LED-2x5
35
HC49S
36
15KA
Diese bleiben daher unverändert. Natürlich auch alle selbst angelegten
Footprints (zumindest solange, wie es keinen alten Footprint mit
gleichem Namen gibt.)
Die alten (kleinen) Footprints habe ich ins Verzeichnis zzz_obsolet
verschoben.
Vielen Dank nochmal an Urban B. für die vielen neuen (und wie ich finde
auch schönen) Footprints.
Grüße
b.r
b.r schrieb:> André Althaus schrieb:>> In den Textfeldern für Zahlen geht die Backspace-Taste nicht. In der>> Validate-Funktion wird leider nur auf [0-9] und '.' getestet.>>>> Ich würds auch gut finden, wenn man bei den Preisen ein Komma eingeben>> könnte, das müsste beim schreiben in die DB dann automatisch in einen>> Punkt umgewandelt werden.> Ich hab mal versucht das zu verbessern (Revision 422). Aber so richtig> super finde ich das validateNumber-script noch nicht.
Na, jetzt geht das Eingeben doch schon wieder viel entspannter, der
Fehler mit dem Tabulator hat mich schon einige Nerven gekostet :-)
Danke!
b.r schrieb:> Ich habe jetzt ein Update/Datenbankupdate auf die neuen Footprints> gemacht: Revision 427
OK sieht soweit ganz gut aus. Aber die "Kurznamen" für die Footprints
werden dann schon auch noch eingeführt oder? Momentan sind die
Footprintnamen ziemlich hässlich und lang :-) Für die Kurznamen habe ich
ja extra den underscore in die Dateinamen eingebaut, um wenigstens bei
den meisten Footprints gleich einen vernünftigen Kurznamen automatisch
erzeugen zu können (alles hinter dem underscore).
b.r schrieb:> Vielen Dank nochmal an Urban B. für die vielen neuen (und wie ich finde> auch schönen) Footprints.
Kein Problem! Kann ich nur zurückgeben. Und natürlich hat K.J. auch
einen wichtigen Teil der Arbeit übernommen, um eagle3d zu bedienen war
ich irgendwie zu dumm ;-)
Gruss
Urban
Urban B. schrieb:> OK sieht soweit ganz gut aus. Aber die "Kurznamen" für die Footprints> werden dann schon auch noch eingeführt oder? Momentan sind die> Footprintnamen ziemlich hässlich und lang :-) Für die Kurznamen habe ich> ja extra den underscore in die Dateinamen eingebaut, um wenigstens bei> den meisten Footprints gleich einen vernünftigen Kurznamen automatisch> erzeugen zu können (alles hinter dem underscore).
Hmm. Da müssen wir uns nochmal ein gescheites Konzept überlegen.
Mir sind die Namen auch zu lang. Und den Underscore habe ich bestimmt an
einigen Stellen kaputtgemacht.
Also nochmal die Ausgangslage:
1. Wir haben einen (großen) Haufen Footprintbilder (obwohl inzwischen
Decals besser passen würde).
2. Wir haben eine Datenbank, die per Namen auf (1.) referenziert.
3. Die Datenbank ist erst seit neuestem hierarchisch strukturierbar.
4. Nutzer haben möglicherweise eigene Vorstellungen von der Hierarchie.
5. Nutzer haben möglicherweise eigene Vorstellungen von den zu verwenden
Footprints.
6. Neue Features sollen möglichst abwärts und nutzerkompatibel (zu 4. &
5.) bleiben.
Ich sehe das alles noch nicht so recht zusammengehen...
Grüße
b.r
Urban B. schrieb:> Du hast aber die Footprints schon auch angelegt oder? Die> Footprint-Bilder sind nicht automatisch auch als Footprints in der> Datenbank aufgelistet.
Um einen Footprint aus der großen Liste in die Datenbank zu übernehmen,
genügt es das kleine Häckchen neben dem Namen zu setzten...
Grüße
b.r
P.S.: Umgekehrt funktioniert es natürlich auch.
André Althaus schrieb:> Mich hatt es gestört, dass ich die Datanblätter nicht vom aktuellen> Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder> umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner> hochladen kann der in der config.php als datasheet_path angegeben ist.> Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben> könnte (der orginale Dateiname würde meist schon reichen), vielleicht> passe ich das noch an. (datasheet.patch)
Den Patch schau ich mir demnächst an, momentan hab ich erstmal genug von
php und sql :-).
> Mir ist aufgefallen, dass beim löschen eines Bilder, die Bilddatei> selber nicht gelöscht wird (bei den Datenblätter zur Zeit ebenso).
Wenn die Datei mit gelöscht werden soll, wäre die lib.php der richtige
Ort.
Ich hatte auch schon überlegt ein paar "Aufräum"-Funktionen zu entwerfen
(Suche nach nicht verwendeten Bildern, Suche nach Bauteilen ohne gültige
Kategorie etc.pp)
> Ich hoffe dies ist der richtige Ort für Bug-/Request-Meldungen.
Ja :-)
Grüße
b.r
b.r schrieb:> Also nochmal die Ausgangslage:> 1. Wir haben einen (großen) Haufen Footprintbilder (obwohl inzwischen> Decals besser passen würde).> 2. Wir haben eine Datenbank, die per Namen auf (1.) referenziert.> 3. Die Datenbank ist erst seit neuestem hierarchisch strukturierbar.> 4. Nutzer haben möglicherweise eigene Vorstellungen von der Hierarchie.> 5. Nutzer haben möglicherweise eigene Vorstellungen von den zu verwenden> Footprints.> 6. Neue Features sollen möglichst abwärts und nutzerkompatibel (zu 4. &> 5.) bleiben.>> Ich sehe das alles noch nicht so recht zusammengehen...
Ja, es ist nicht einfach :-)
Ich werfe mal meine (eher spontanen) Gedanken in den Raum:
- Es gibt genau einen einzigen Ordner für jegliches Bildmaterial,
Datenblätter usw., welcher Uploadrechte besitzt. Sonst darf man
nirgendwohin etwas uploaden. In einem Unterordner kommen (quasi als
default) die Footprints rein. Der Benutzer kann aber in diesem
"Hauptordner" (ich nenne ihn ab jetzt so) alles so einrichten wie er es
möchte, es werden keine Einschränkungen oder Vorgaben gemacht aus
unserer Seite.
- Bei allen Arten von Uploads kann dann der User in diesem Ordner
auswählen, wohin die Datei gespeichert werden soll. Es gibt dann für den
Programmierer keinen Unterschied, ob es nun ein PDF, PNG oder was auch
immer ist.
- Im Hauptordner und all dessen Unterordner sollen alle Dateinamen
eindeutig sein. Es müsste also beim Upload direkt eine Fehlermeldung
erscheinen wenn bereits eine gleichnamige Datei vorhanden ist. So darf
man später auch noch die Verzeichnisstruktur verändern, ohne dass die
Funktionalität der Seite beeinträchtigt wird.
- Ein Datenbankeintrag eines Footprints besteht aus Dateiname und
Anzeigename. Legt man einen neuen Footprint an, kann man optional als
erstes eine Bilddatei aus dem Hauptordner auswählen, was dann dem
Dateinamen entspricht (ohne Pfadangabe). Wählt man eine Datei, wird
automatisch der Anzeigename ausgefüllt (alles hinter dem underscore).
Wählt man kein Bild, dann schreibt man einfach nur den Anzeigenamen in
das Feld und fertig. Dem Footprint ist dann ein optionaler Dateiname
"IC_DIP20.png" und obligatorischer Anzeigename "DIP20" zugeordnet.
- Weil alle Dateien im Hauptordner eindeutige Namen haben, wird das Bild
zum Footprint eindeutig über den Dateinamen "IC_DIP20.png" bestimmt.
- Der Anzeigename "DIP20" wird überall zur Anzeige verwendet. Der
Anwender soll den Dateinamen grundsätzlich nie zu Gesicht bekommen.
- Die Hierarchie der Footprints legt der User selber fest, indem er
einfach "Dummy"-Footprints (ohne Dateiname) anlegt (z.B. "DIP"). Dieser
wird dann einfach als Parent genommen für die DIP20, DIP28 usw. So steht
es dem User frei, ob er die gleiche Struktur haben will wie die
Dateistruktur der Footprintbilder, oder ob er was anderes, oder sogar
gar keine Hierarchie haben will.
So jetzt muss ich aber mal schlafen gehen, vielleicht kommt mir morgen
noch was in den Sinn...
mfg
Hi, wie wehre es mal die Obsoleten Bilder zu löschen, die werden nicht
gebraucht und das System wird elendig Langsam, bei Grösseren Kategorien
hab ich da meist das PHP Länger als 30sec braucht und daher sich selber
beendet.
K. J. schrieb:> Hi, wie wehre es mal die Obsoleten Bilder zu löschen, die werden nicht> gebraucht und das System wird elendig Langsam, bei Grösseren Kategorien> hab ich da meist das PHP Länger als 30sec braucht und daher sich selber> beendet.
Das liegt auch ein bischen an den Workarounds, die ich wegen der älteren
php-Version machen musste. Ich schau mir das nochmal an, vielleicht kann
man da auch noch etwas optimieren.
Die alten Bilder kommen raus, wenn das mit den neuen Bildern 100%ig
klappt.
Grüße
b.r
Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.
Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche
nach Datenblättern bei DC und Reichelt wieder funktioniert.
Grüße
b.r
P.S.: @Urban B. schick mir mal bitte Deine Telefonnummer oder Deinen
skype-Namen, damit wir das mit den Footprints geklärt bekommen :-)
b.r schrieb:> Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.>> Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche> nach Datenblättern bei DC und Reichelt wieder funktioniert.
Super Idee!
> P.S.: @Urban B. schick mir mal bitte Deine Telefonnummer oder Deinen> skype-Namen, damit wir das mit den Footprints geklärt bekommen :-)
Telefonnummer besser nicht, ich wohne in der Schweiz, das würde teuer
werden :-) Skype habe ich, Name ist "u r b a n - b r u h i n" (ohne
Leerschläge natürlich)
mfg
Ich habe die Datei gefunden, die liegt nicht im trunk, sondern eine
Ebene höher....
Da ich nur mit dem Inhalt des Trunk arbeite, sehe ich die so nicht.
Würde etwas dagegen sprechen, diese in den Trunk zu verschieben ?
Danke und Gruss
Juergen
Super Sache, dieses Projekt!
Genau das habe ich gesucht, aber leider habe ich noch ein paar kleine
Probleme.
Zum einen bekomme ich eine Fehlermeldung wenn ich auf "Import" klicke:
"Parse error: syntax error, unexpected T_VARIABLE in
/www/htdocs/xxxxxxx/part-db/import.php on line 307"
Die Footprints wurden erst nicht angezeigt, erst als ich die Rechte auf
777 gesetzt habe ging es ...das gleiche mit den Datenblättern.
Schreibrechte für User sind hier doch nicht notwendig, oder?
Naja, zumindest funktioniert .htaccess , somit ist das nicht ganz so
tagisch.
Die Spalte mit der Beschreibung erscheint bei mir nicht. Ich kann zwar
eine Beschreibung angeben wenn ich ein Bauteil anlege, aber die Spalte
in der Tabelle fehlt. Ich meine das hier:
b.r schrieb:> Ich hab mal noch eine neue Spalte "Beschreibung" hinzugefügt.>> Gerade bei Schaltkreise ist das recht praktisch, da so u.a. die Suche> nach Datenblättern bei DC und Reichelt wieder funktioniert.
Ich bin mir nicht ganz sicher ob ich die aktuellste Version habe, wo
bekomme ich die aktuellste her?
Gruß, Christian
OK, habe nun gesehen dass meine Version völlig veraltet ist. Es ist zwar
die aktuellste die in "Download" aufgeführt ist, aber anscheinend wurde
schon lange kein neues Paket mehr geschnürt ;-)
Ich lade mir dann mal die Dateien aus dem Trunk-Ordner runter.
Nun habe ich aber doch gleich noch eine andere Frage:
Die Stückzahl ist ja sehr sinnvoll, aber die Mindestmenge ist für mich
selber eher unrelevant. Kann man die Mindestmenge irgendwo abschalten,
also so dass diese nicht mehr angezeigt wird wenn da 0 drin steht (oder
allgemein gar nicht mehr angezeigt wird)?
Dann habe ich einen Vorschlag zum Bauteilpreis:
Es wäre nützlich wenn man den Preis abhängig vom Lieferant eingeben
könnte.
Also z.B. so:
Bauteil X kostet bei Pollin 1,50 Euro , bei Reichelt kostet dieses 2,50
Euro, bei Conrad 3,00 Euro.
Wenn man nun die Preise in Abhängigkeit zum Lieferanten anzeigen lassen
kann hätte das den Vorteil dass ich direkt sehe ab wieviel Stück sich
eine "separate" Lieferung lohnen würde. Also wenn ich bei Reichelt
Bauteile kaufe, die ich bei Pollin nicht bekomme und Bauteil X für 1
Euro mehr / Stück mit bestelle ist das günstiger als wenn ich diese
extra bei Pollin kaufe und dafür aber doppelte Versandkosten habe.
Wenn man dann noch den Preis zum jeweiligen Lieferanten verlinkt wäre
das noch besser, also wenn ich auf die 2,50 Euro bei Reichelt klicke
sollte ich direkt auf der Artikelseite bei Reichelt landen.
Ist das machbar?
Noch ein Vorschlag:
Könnte man "Benutzer" anlegen? Ich denke da an sowas:
User 1 hat den Webserver und Part-DB
User 2 nutzt die gleiche Datenbank (aktualisiert Preise, verlinkt
Datenblätter, usw.)
Beide User haben jedoch ihr eigenes "Lager" und deshalb hat man zwar die
gemeinsame Datenbank (Bauteil-Daten, Lieferanten-Daten, Datenblätter,
usw.), jedoch hat jeder User sein eigenes Lager. Die Lagerdaten würden
dann also in Abhängigkeit davon angezeigt wer eingeloggt ist.
Geht sowas?
Sorry, falls es das eine oder andere schon gibt (oder durch eine andere
Änderung sinnlos wäre), da ich noch die Uralt-Version habe kann ich das
(noch) nicht sehen.
Ach ja, es wäre hilfreich wenn es mal ein neues Paket im
Download-Bereich geben würde, damit kommende User nicht das gleiche
Problem haben wie ich ;-)
Vielen Dank,
Christian
Edit: Hoppla, habe deinen Beitrag übersehen da ich noch nicht
aktualisiert hatte.
Vielen Dank für die schnelle Hilfe.
So, habe nun die neue Version installiert und nun ist auch das
Beschreibungsfeld vorhanden.
Auf der Startseite sehe ich aber noch einen Fehler:
>Warning: shell_exec() has been disabled for security reasons in
/www/htdocs/XXXXXXX/part-db/lib.php on line 518
Es scheint aber dennoch alles zu funktionieren.
Muss ich noch irgendetwas freigeben?
Christian R. schrieb:>>>Warning: shell_exec() has been disabled for security reasons in> /www/htdocs/XXXXXXX/part-db/lib.php on line 518>
Würde spontan auf PHP-Savemod tippen, das ist nur für die SVN Version
anzeige kannst also die beiden Zeilen 518 und 519 entfernen, wen es dich
stört.
Danke, habe die beiden Zeilen auskommentiert, nun passt alles.
Habe noch einen weiteren Verbesserungsvorschlag:
Eine Sortierfunktion für die Ansicht der Bauteilkategorie.
Also wenn man auf Name/Beschreibung/Vorhanden/Lagerort klickt, sollte
die Anzeige der Bauteile demnach sortiert dargestellt werden.
Ist nicht weiter wichtig, aber wenn man viele Bauteile eingepflegt hat
würde es einen die Übersicht erleichtern.
Beispiel: Wenn ich alle meine Elkos eintrage und nun einen Überblick
will zwischen welchen Werten zu große Lücken sind, dann könnte ich das
leicht erkennen, indem ich nach Beschreibung sortieren (zumindest wenn
ich da die Werte eingetragen habe).
Weiteres Beispiel: Ich habe eine Sortimentskiste (z.B. Lagerort= Fach 1
- Fach 50) , welche mir hin fällt und alle Bauteile in einem großen
Haufen verteilt liegen. Nun müsste ich jedes Fach einzeln aufrufen (oder
alternativ jedes Bauteil), aber mit der Sortierfunktion sehe ich auf
einen Schlag welche Bauteile wohin gehören.
Auf jeden Fall ist Part-DB so schon absolut genial. Vielen Dank an alle
die daran mitgewirkt haben!
Hallo,
vor ein paar Tagen dachte ich mir ich müsste mal ne Datenbank anfangen
um meine Bauteile zu verwalten.
Dann kam mir der Gedanke: Alle Projekte die ich bisher angefangen habe,
hat schon jemand anderes viel besser programmiert. (Und so war es auch).
Nach kurzer Suche bin ich auf die Part-DB gestossen.
Super Sache!!! Nachdem ich die Version 0.2.1 installiert hatte und ein
paar kleiner Bug's beseitigt hatte, (z.B. Darstellung der Umlaute) kam
die Version 0.2.2 heraus.
Was soll ich Sagen? Spitze!!! Alle Bug's die mir bis dahin aufgefallen
waren, wurden ausnahmslos ausgemerzt.
In der Version 0.2.2 exportiert die Datenbank allerdings Zeilenumbrüche
im Bauteil-Kommentar als neue Zeile im CVS.
Dies kann durch folgenden Code in der export.php Zeile 80 behoben
werden.
$dbrow = str_replace("\r\n", " ", $dbrow);
$CSVDoc .= implode( ";", $dbrow) . "\n";
Zeilenumbrüche werden hier duch ein Leerzeichen ersetzt.
Beim Import ist es mir allerdings noch nicht gelungen die Zeilenumbrüche
wieder einzufügen. Was erstmal nicht weiter störend ist.
Danke an alle beteiligten, für die gute Arbeit.
Wäre es ein großer Aufwand eine Benutzerverwaltung einzubauen?
Wenn man eine Benutzerverwaltung hatte könnte man folgendes realisieren:
Ich stelle den Webspace für eine Parts-DB-Datenbank. In dieser Datenbank
werden alle denkbaren Footprints und Kategorien angelegt. Mit der Zeit
würde auch das Bauteilspektrum anwachsen, alle bereits mit einem
Datenblatt verlinkt. Jeder User könnte darauf zugreifen.
Die Benutzerverwaltung wäre nun nötig, damit jeder Benutzer seine eigene
Lager-Datenbank anlegen kann. Das Kommentar-Feld wäre auch
Benutzer-spezifisch sinnvoll.
Auf diese Weise könnte das jeder User nutzen, ohne dass man Webspace
benötigt (bzw. ohne einen Webserver auf dem heimischen PC installieren
muss). Die mühevolle Arbeit alle Daten einzutragen (Datenblatt, Preis,
Footprint, Beschreibung) würde entfallen und man bräuchte lediglich die
Stückzahl eintragen.
Damit nicht irgendjemand einfach alles zerstören kann wäre es halt nötig
dass nur bestimmte Personen Daten eingeben können (abgesehen von den
Benutzer-spezifischen Daten). Vielleicht könnte man das auch so machen
dass ein Benutzer eigene Daten anlegen kann, welche nach einer
Überprüfung in die globale Datenbank übernommen werden.
Wenn das ohne großen Aufwand möglich ist würde ich wie gesagt den
Webspace zur Verfügung stellen und denjenigen Vollzugriff darauf geben
die derzeit auch schon daran arbeiten. Das "Entwickler-Team" müsste dann
selber entscheiden an wen sie die Zugangsdaten weitergibt.
Dem Projekt würde ich sogar einen eigenen Domainnamen spendieren (frei
wählbar, sofern noch verfügbar)
Bin auf eure Antworten gespannt :-)
Naja das ist alles nicht so einfach voralledem kostet es zeit momentan
sind nicht viele Entwikler Aktiv, ich hab selber momentan keine Zeit
dafür ich mach nur Kleinkram der mir grade bei der Inventur auffehlt,
ein USER System ist recht aufwendig.
Aber tu dir keinen zwang an so eins zu schreiben ;)
Leider kenne ich mich mit PHP nicht sonderlich aus.
Gibt es da keine "fertige Usersysteme", die man einfach einbinden kann?
Mir ist übrigens ein Fehler aufgefallen:
Wenn ich einen Footprint umbenenne, dann wird der nicht mehr angezeigt.
Erst wenn die die Bild-Datei genauso nenne wird der wieder angezeigt.
Oder soll das so sein? Ich fände es praktischer wenn man einfach nur den
Namen ändern kann, und trotzdem weiterhin auf das bereits verknüpfte
Bild zugegriffen wird, weil man ja nur "umbenennt" und kein "neues
auswählt".
Das ist nicht tragisch, weil man es ja umgehen kann, aber es wäre
einfacher als die Bilder selber umzubenennen.
Was ich auch nützlich finden würde, wenn man ein Bild auswählt (z.B. ein
LQFP64) und dieses dann bei einem Bauteil TQFP64 nennen kann und bei
einem anderem Bauteil weiterhin LQFP64. Es gibt ja einige Bauteile bei
denen man den Unterschied nicht direkt sieht, sprich wo das Bild gleich
aussieht aber dennoch ein anderer Part-Name richtig wäre (z.B. Bauteile
mit Heatsink-Anschluss auf der Unterseite).
Die Möglichkeit mehrere Preise einzugeben (z.B. wie bei den
Datenblätten, da kann man ja auch mehrere eintragen) wäre auch sehr
nützlich.
Also z.B. so:
Lieferant Bestellnummer Preis
Pollin 170 041 0,25
Reichelt µA 78S05 0,41
Völkner Q38716 0,61
Conrad 156048-62 0,61
Hi, ja das mit den FP ist in Planung über die Datenbank, bei Gelegenheit
wird das kommen.
Das mit den Preisen, ist mir auch schon aufgefallen mal schauen wan ich
zeit dafür finde.
Hi :-)
Ich habe gerade in einem anderen Thread gelesen, das hier im Projekt
eventuell noch Hilfe gebraucht wird? PHP ist mir nicht unbekannt und
eine Bestandsdatenbank damit aufbauen hab ich auch schon gemacht (im
Bereich Chemie). Bisher hatte ich nur bei EleLa das Packen eines RPMs
übernommen.
Grüße
Udo
Wow, mein Hinweis hat sogar was gebracht :-D
Hast du die Part-DB mal installiert und ausprobiert?
Cool wäre wenn du es hinkriegen würdest, eine Benutzerverwaltung zu
bauen. Also so, dass man dann Part-DB auf dem Webspace eines Hosters
installieren kann, und sich per Benutzername und Passwort einloggen
muss. Auch sollen verschiedene Benutzer auf die gleichen Bauteile
zugreifen können, jedoch mit separaten Lagerorten (siehe die letzten
paar Beiträge hier).
Ziemlich grosser Aufwand das ganze, und ich weiss nicht wie viel
Erfahrung du mit PHP hast. Ist das zu schwierig für dich, oder würdest
du das hinkriegen? Ansonsten müssen wir schauen was du noch machen
könntest. So viel ich weiss gibt es momentan keine gescheite TODO-Liste
(?). Eigentlich könnte ich so eine Liste mal in Angriff nehmen, das
sollte momentan eigentlich drinliegen von der Zeit her.
Auf jedenfall schonmal Danke dass du dich gemeldet hast :-)
mfg
Ich hab mir die letzte Version noch nicht runtergeladen, hatte heute
erstmal eine Display-Ansteuerung zum Laufen zu bringen. Werde ich mir
aber die Tage mal anschauen und dann sehe ich, ob ich euch in Sachen
Userverwaltung helfen kann.
Grüße
Udo
So, ich habe mal angefangen den Artikel zu Part-DB etwas zu
überarbeiten.
Was ich bisher gemacht habe:
* Aufzählung "Funktionen" mal auf den neusten Stand gebracht
* Aktuellere + Neue Screenshots hochgeladen
* TODO-Liste umstrukturiert/erneuert
Es wird bestimmt noch mehr folgen, muss erstmal hier nochmal ein
bisschen nachlesen was da noch alles für Ideen genannt wurden.
Zum Artikel gehts hier:
http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung
@Udo
Falls das mit der Benutzerverwaltung etwas zu aufwändig ist, darfst du
dir natürlich auch etwas anderes aus der TODO-Liste auswählen ;-)
Deshalb arbeite ich ja an dieser TODO-Liste, so hat man mal einen
Überblick über die genannten Ideen/Verbesserungsvorschläge. Eine hohe
Priorität hätte auch die Änderung bei den Footprints, ich weiss jetzt
aber nicht ob K.J. das lieber selber machen will, er kennt halt das
ganze System schon ganz gut. Für die Benutzerverwaltung fühlt sich halt
noch niemand verantwortlich :-D
Gruss
Urban
Christian R. schrieb:> Die Stückzahl ist ja sehr sinnvoll, aber die Mindestmenge ist für mich> selber eher unrelevant. Kann man die Mindestmenge irgendwo abschalten,> also so dass diese nicht mehr angezeigt wird wenn da 0 drin steht (oder> allgemein gar nicht mehr angezeigt wird)?
Das Feature hab ich mir auch schon immer mal gewünscht.
Ist jetzt drin: SVN Revision 442.
Du mußt Deine config.php mit dem folgenden Eintrag aktualisieren:
K. J. schrieb:> Hab mich mal um die Icons gekümmert was meint ihr ?
Schaut ja ganz gut aus, aber kann man das auch noch problemlos erkennen
wenn die Icons so klein sind dass sie in die Tabelle passen?
Noch eine andere Idee:
Könnte man theoretisch die ganzen Konfigurationsmöglichkeiten statt in
die config.php zu schreiben, nicht als Datenbankeinträge abspeichern?
Das hätte den Vorteil, dass man die Einstellungen dann sehr bequem
direkt auf der Einstellungs-Seite z.B. per Checkbox setzen könnte. Dann
braucht man nicht mehr an den PHP-Dateien herumzuwerkeln. Für später,
wenn es die Benutzerverwaltung dann mal gibt, wäre das auch von Vorteil,
weil man dann jedem Benutzer separate Einstellungen zuordnen könnte.
Wenn da niemand Einwände hat, nehme ich das noch in die TODO-Liste auf.
mfg
Für benutzerdefinierte Einstellungen wäre ich auch. Allerdings muss man
erstmal eine Benutzerverwaltung aufbauen. Frühstens am Sonntag kann ich
mir das ganze anschauen. Die Konfiguration würde ich zudem nicht mit
einzelnen Variablen machen, sondern in Arrays zusammenfassen, die
thematisch zusammen gehören. Da bevorzuge ich XML, aber das muss man ja
nicht jedem zumuten ;-)
Wird eigentlich eine Template-Engine verwendet? Ich habe es mir
angewöhnt, Inhalt und Logik zu trennen. Gibt es Exportfunktionen? Excel
und PDF kann ich beisteuern. Für den Datenaustausch zwischen Datenbank
und Browser wäre Ajax sinnvoll, erspart auch wieder so einiges an HTML.
Nur mal zur Info, was bisher mein größtes Projekt war:
http://chemdb.singollo.de/chemdb4/index.php (Zugang: Gast/Gast)
Die Weiterentwicklung ist leider auf Eis, da mittlerweile auf eine
andere Software (nach meiner Meinung Schrott) Software gesetzt wird.
Entwicklungen aus dem eigenen Haus wird ja nicht vertraut, lieber Geld
ausgeben.
b.r schrieb:> Du mußt Deine config.php mit dem folgenden Eintrag aktualisieren:>
1
> /* hide minimum in stock in table views */
2
> $hide_mininstock = true;
3
>
Vielen Dank, werde ich heute nach der Arbeit gleich mal testen :)
@K.J.
Das mit den Icons finde ich gut. Wenn man etwas nicht mehr erkennen kann
wenn es zu klein ist empfehle ich die Favicons der jeweiligen Seite zu
benutzen, da diese ja auf die kleine Größe zurechtgeschnitten sind.
Wenn man dann noch per MouseOver den Namen im Klartext angezeigt bekommt
sind auch Verwechselungen ausgeschlossen.
@Urban
Genau das gleiche wollte ich auch schreiben :-)
In der Config.php brauchen eigentlich nur die Zugangsdaten zur
Datenbank, den Rest kann man dann da auslesen.
@Udo
Hast du das komplett selber programmiert?
Wenn ja: Glückwunsch, ist meiner Meinung nach sehr gelungen.
...und dann kennst du dich ja schon mit der Benutzerverwaltung aus, also
darf ich gleich eine Domain registrieren? ;-)
@All
Wie bereits versprochen würde ich den Webspace samt Domain stellen.
Habe mal einige Domains geprüft.
Also Part-DB.* ist noch frei, wenn niemand etwas dagegen hat würde ich
die .de dann registrieren, oder wäre euch .info oder .org lieber (ich
würde auch 2 Domains registrieren, wenn man sich nicht zwischen 2
Domains entscheiden kann.
Was ansonsten noch alternative Domainnamen wären:
myparts.info , Part24.net/org/info/eu
...könnt euch ja schon mal Gedanken machen welcher Domainname euch am
besten gefallen würde.
Christian R. schrieb:> b.r schrieb:> @K.J.> Das mit den Icons finde ich gut. Wenn man etwas nicht mehr erkennen kann> wenn es zu klein ist empfehle ich die Favicons der jeweiligen Seite zu> benutzen, da diese ja auf die kleine Größe zurechtgeschnitten sind.> Wenn man dann noch per MouseOver den Namen im Klartext angezeigt bekommt> sind auch Verwechselungen ausgeschlossen.>
Ja hast recht hab aber schon eine bessere Idee für DC gibt es kein Logo,
setze mich morgen nochmal dran.
Christian R. schrieb:> @Udo> Hast du das komplett selber programmiert?> Wenn ja: Glückwunsch, ist meiner Meinung nach sehr gelungen.> ...und dann kennst du dich ja schon mit der Benutzerverwaltung aus, also> darf ich gleich eine Domain registrieren? ;-)
Ich habe das komplett alleine programmiert. Version 1 und 2 hatte ich
noch Hilfe in der Erprobung und der Umsetzung der Rahmenbedingungen
(Gesetze, Verordnungen, Richtlinien etc.). Ab V3 dann komplett alleine.
Bis vor ein paar Monaten lief die Version 3 in einer RC-Variante (nur
Adminbereich war nicht komplett und ein paar kleinere, eher unwichtige
Bugs in der Bedienung). Die Version 4 setzt verstärkt auf das
Dojo-Framework und implementiert die neuen EU-Richtlinien (GHS). Die
Benutzerverwaltung dort ist quasi die Basis für mein eigenes CMS,
welches ich allerdings nur noch sporadisch weiter entwickele.
Auf http://chemdb.singollo.de/index.php stehen die Features ;-)
@Udo Neist
Respekt, sieht echt gut aus deine Chemikaliendatenbank! Du wärst
bestimmt der richtige Mann für unsere Benutzerverwaltung :-D
@K.J / b.r
Momentan haben wir ja zwei TODO-Listen, eine im SVN und eine im Artikel.
Ich denke es wäre besser wenn wir uns für eine der beiden entscheiden,
sonst gibt das nur ein Durcheinander. Welche sollen wir nun
weiterführen?
Ich wurde die todo liste im SVN vorziehen..
Die kann so auch jeder Entwickler anpassen...
Gruss
Jürgen
PS die Tabelle für die Config gibt es ja schon.... :-)
Urban B. schrieb:> @K.J / b.r> Momentan haben wir ja zwei TODO-Listen, eine im SVN und eine im Artikel.> Ich denke es wäre besser wenn wir uns für eine der beiden entscheiden,> sonst gibt das nur ein Durcheinander. Welche sollen wir nun> weiterführen?
Mir eigentlich egal, mache momentan eh nur Kleinkram aus zeitmangel ich
überlasse euch des.
K. J. schrieb:> Hab mich mal um die Icons gekümmert was meint ihr ?
Die Icons sind nicht schlecht. Nur leider kann man sie so nicht mehr
unterscheiden. In der Ansicht sind sie einfach zu klein.
Und wenn ich noch einen kleinen Wunsch äussern düfte.
In der fantastischen Footprint-Galerie fehlen die gelben LED's (Print
und SMD). Ich habe mir zwar die "klaren" gelb gepinselt, allerdings
würden sie im Original doch besser aussehen.
Markus H. schrieb:> Und wenn ich noch einen kleinen Wunsch äussern düfte.> In der fantastischen Footprint-Galerie fehlen die gelben LED's (Print> und SMD). Ich habe mir zwar die "klaren" gelb gepinselt, allerdings> würden sie im Original doch besser aussehen.
Stimmt, habe ich jetzt noch ergänzt. Könnte das bitte jemand ins SVN
laden?
Übrigens habe ich die blauen, roten, gelben und sogar die transparenten
Bilder von den roten LEDs abgeleitet, sind also auch nur durch
Farbwertänderung mit GIMP entstanden ;-)
mfg
Ich habe mir die config*.php-Files angeschaut und hab mich mit Graus
abgewendet. Ich glaub, bevor ich mit der Benutzerverwaltung anfange,
werde ich mal Code und HTML trennen und eine Template-Engine einbauen.
Damit wirkt das ganze aufgeräumter. vlibTemplate ist da recht angenehm,
da klein und nicht so aufgebläht wie Smarty. Die Konfiguration kann
irgendwann sehr unübersichtlich werden, wenn man für jede Einstellung
eine eigene Variable nimmt. Warum nicht alles mittels Arrays abbilden?
Ist leichter zu lesen. Gerade im Fehlerfall sind beide Massnahmen ein
deutlicher Vorteil.
Es sind zum Glück nicht soviele Dateien, die ich anpassen muss. Daher
könnte ich das vielleicht in ein oder zwei Wochen umgestellt haben. Wenn
ich soweit bin, stelle ich das mal als Zip-Archiv hier rein und ihr
könnt entscheiden, ob ihr diese Variante übernehmen wollt. In wie weit
ich Änderungen von euch übernehmen kann, hängt davon ab, ob ich eine
Meldung bekomme, da ich nicht ständig das SVN-Repo abfragen kann.
Grüße
Udo
So, ich habe schonmal ein paar Dateien auf die vlibTemplate-Engine
umgeschrieben und einen kleinen Teil der Konfiguration ebenso
umgestellt. Im Anhang findet ihr mal einen Auszug der Änderungen. Die
Kommentare sind teilweise in Deutsch, da mein Englisch nicht unbedingt
das Beste ist.
Urban B. schrieb:> Übrigens habe ich die blauen, roten, gelben und sogar die transparenten> Bilder von den roten LEDs abgeleitet, sind also auch nur durch> Farbwertänderung mit GIMP entstanden ;-)
Genial, hätte ich ja auch drauf kommen können. ;-)
Urban B. schrieb:> Übrigens habe ich die blauen, roten, gelben und sogar die transparenten> Bilder von den roten LEDs abgeleitet,
hoppla, sollte natürich heissen: ...blauen, grünen, gelben,...
Ich hatte halt auch nur die roten zur Verfügung, bis auf die
Transparenten war es aber ein Klacks einfach die Farbwerte zu ändern.
Die transparenten waren etwas schwieriger, aber ich glaube man erkennt
was es darstellen soll :-)
So, ich habe nun eine Domain registriert. Da ich nicht sicher bin ob ich
den Domain-Namen Part-DB registrieren durfte habe ich mich nun dafür
entschieden:
myparts.info
Die Erreichbarkeit der Domain kann bis zu 2 Tage in Anspruch nehmen.
Gleichzeitig bin ich bei meinem Hoster in ein größeres Paket gewechselt.
Da durch diesen Wechsel ein Serverumzug nötig ist wird es ebenfalls
etwas dauern.
Ich denke aber dass bis morgen Abend alles fertig sein sollte, so dass
ihr das gleich für das Projekt nutzen könnt.
Das Einrichten (chmod, usw.) überlasse ich komplett euch (den aktiven
Programmieren).
Eine Datenbank habe ich bereits eingerichtet.
Wenn zu Testzwecken weitere Datenbanken benötigt werden kann ich diese
jederzeit einrichten, gebt mir einfach bescheid.
Ich wäre dafür dass wir das (später) "zweigleisig" aufbauen, einmal die
nutzbare Version und parallel das gleiche als Entwicklungsumgebung. So
kann man "testen" ohne dass irgendwelche Daten verloren gehen (sofern
die Testumgebung eine eigene Datenbank nutzt).
Webspace und Traffic haben wir nun reichlich.
Sobald die Domain verfügbar ist schicke ich einen paar von euch die
Zugangsdaten, welche ihr dann selbstständig an den anderen Entwicklern
weitergeben könnt.
Wenn irgendetwas gebraucht wird (z.B. weitere Datenbanken, Cron-Jobs,
oder weitere FPT-Zugangsdaten mit denen man nur auf bestimmte Bereiche
zugreifen kann), dann lasst es mich wissen.
Noch was...
Solltet ihr eine weitere Software haben wollen (z.b. ein eigenes Forum
für die Entwickler, einen Blog wo die neusten Änderungen oder Wünsche
gepostet werden, oder was auch immer), dann sprecht mich einfach an, ich
werde versuchen alles umzusetzen was gewünscht wird.
So, neues zu "myparts.info"
Die Domain ist bereits erreichbar. Der Serverumzug sollte heute morgen
um 7 Uhr abgeschlossen sein.
Die Zugangsdaten (Datenbank und FTP) habe ich K. J. (theborg0815) per
Mail geschickt, also bitte alles weitere mit ihm absprechen.
Der Webspace kann sowohl für die benutzbare Version, wie auch für eine
(oder mehrere) Entwicklungsversionen genutzt werden. Ebenfalls kann der
Webspace für FTP benutzt werden (Footprints hochladen,
Installationspakete runter laden, usw.).
Kritik/Wünsche/Feedback sind willkommen ;-)
Christian R. schrieb:> So, neues zu "myparts.info"> Die Domain ist bereits erreichbar. Der Serverumzug sollte heute morgen> um 7 Uhr abgeschlossen sein.> Die Zugangsdaten (Datenbank und FTP) habe ich K. J. (theborg0815) per> Mail geschickt, also bitte alles weitere mit ihm absprechen.> Der Webspace kann sowohl für die benutzbare Version, wie auch für eine> (oder mehrere) Entwicklungsversionen genutzt werden. Ebenfalls kann der> Webspace für FTP benutzt werden (Footprints hochladen,> Installationspakete runter laden, usw.).>> Kritik/Wünsche/Feedback sind willkommen ;-)
Hi ja sind angekommen werde es nachher weiter verteilen, allerdings hab
ich irgenwie verpasst worum das da jetzt genau geht ?
:D
Also, es geht darum, dass wir vorhaben eine User-Verwaltung zu
integrieren. Somit kann man eine Datenbank anlegen welche von allen
Usern genutzt werden kann. Das hat folgende Vorteile:
1.) Jeder kann Part-DB nutzen, auch wenn er keinen Webspace hat und auch
keinen virtuellen Server installiert hat.
2.) Man braucht nicht alle Daten immer wieder neu anzulegen, da viele
Daten schon von anderen Usern angelegt wurden (z.B. 74er und 40er Reihe,
Spannungswandler, ...).
3.) Preise sind aktueller (wenn ich ein Pollin-Preis anlege und das nun
5 Monate her ist, dann kann der Preis inzwischen anders sein). Wenn ein
User der aktuellen Preis einträgt sieht jeder User den aktuellen Preis.
Die "Lager" werden Userspezifisch angelegt (deswegen ist die
User-Verwaltung zwingend nötig).
Noch nicht ganz geklärt ist z.B. wie es gehandhabt werden soll inwiefern
ein User die Datenbank ändern kann (Bauteile anlegen, Preise ändern,
usw.).
Denkbar wäre da z.B. folgendes Szenario:
- Ein User sieht alle Daten der vorhanden Datenbank und kann sein
"Lager" anlegen. Wenn er ein Bauteil anlegt, wird dieses...
1.) User-Spezifisch angelegt und bleibt nur für diesen User sichtbar
2.) User-Spezifisch angelegt und nach Prüfung von "Moderatoren" in die
Hauptdatenbank übernommen
3.) direkt vom User in die Datenbank eingetragen sofern er
"vertrauenswürdig*" ist
* bestimmte Anzahl angelegter Bauteile/Lagerfächer/... oder wie auch
immer man das abwägen will
4.) direkt vom User in die Datenbank übertragen, in der Hoffnung dass es
jeder gewissenhaft macht.
5.) beantragt und ein Moderator legt es dann an.
Ein Moderator muss ja nicht zwangsläufig ein Entwickler sein, das könnte
jeder sein von dem man weiß dass er/sie gewissenhaft und
vertrauenswürdig ist.
Zurück zu myparts.info ...
Diese Domain habe ich registriert um die Basis dafür zur Verfügung zu
stellen. Hier kann die benutzte Version installiert sein und
gleichzeitig die Entwicklungs- und Testumgebung installiert sein. Auch
für FTP (Footprints, Installationspakete, ...) kann man den Webspace
nutzen. Traffic und Webspace sind reichlich vorhanden.
Eingerichtet ist jedoch noch nichts, da ich euch da nicht zwischen
fummeln will. Macht ihr das so wie ihr es für richtig haltet.
Wie gesagt, es ist kein Problem weitere Datenbanken usw. anzulegen. Ihr
könnt auch z.B. 5 Entwickungsumgebungen parallel installieren, damit der
eine etwas modifizieren kann wo die Funktion eine Zeit lang
beeinträchtigt ist, während andere gerade an etwas arbeiten, was direkt
getestet werden kann, weil man ja eine Entwicklungsumgebung nutzt deren
Funktion gerade nicht beeinträchtigt ist.
Ist alles machbar, sagt einfach was ihr braucht/wollt.
Edit: Die Beiden Ordner "usage" und "logs" bitte nicht löschen, die sind
vom Server.
Traut sich niemand den Anfang zu machen? :D
...oder klappt etwas nicht mit den Zugangsdaten?
Wenn ihr wollt kann ich auch schon mal eine Version auf dem Server
anlegen (wenn es euch egal ist ob ich es im Root oder einem Ordner
"installiere").
Mit PHP kenne ich mich leider nicht ausreichend aus um euch beim
Programmieren unterstützen zu können, aber wenn ich euch anderweitig
unterstützen kann sagt einfach was ich machen soll.
Gruß, Christian
Da ich keine Zugangsdaten habe und auch erst dann was veröffentlichen
will, wenn die Umstellung auf eine Template-Engine geschafft ist, kann
ich dazu noch nichts sagen.
Allerdings müsste ich mal ein Repo anlegen...
Verdammt, da schreibe ich einen halben Roman und bevor ich auf
"absenden" klicken konnte stürzt mein blöder PC an :/
Nun habe ich keine Lust mehr alles nochmal zu schreiben, deswegen hier
die Kurzform:
Ich war davon ausgegangen dass K.J. die Zugangsdaten bereits verteilt
hat.
Nun mache ich es so: K.J. hat die FTP-Zugangsdaten vom Root.
In diesem habe ich einen Ordner "entwickler" angelegt, und in diesem
lege ich nun für jeden aktiven Entwickler einen Ordner an, welcher dann
eigene FTP-Daten und eine eigene Subdomain bekommt.
Wie wir das mit den Datenbanken handhaben weiß ich auch noch nicht so
genau.
Die eine Datenbank wird für die benutzbare Version benötigt, zum
entwickeln brauchen wir eigene (damit bei einem Fehler nicht die
lauffähige Version zerstört wird).
Ich lege nun eine weitere Datenbank an welche dann zu Test-Zwecken
benutzt werden kann. Ich denke dass eine Test-Datenbank nicht
ausreichend sein wird, wenn wenn jemand an etwas programmiert was eine
Strukturänderung der Datenbank erfordert sollte man dafür eine separate
Test-Datenbank verwenden.
Wir müssen uns dann irgendwie einigen wie die Datenbanken am
sinnvollsten benutzt werden sollten (und wieviele wir letztendlich
benötigen).
Mein Vorschlage wäre folgendes:
1. Datenbank = nicht für Testzwecke, sondern nur für die benutzbare
Version.
2. + 3. (+n) Datenbank = Datenbank zum Testen. Wer für seine Projekte
gerade welche Test-Datenbank benutzt sollte untereinander abgesprochen
werden.
Ich würde vorschlagen dass man immer die 1. Testdatenbank benutzt wenn
man nichts an der Struktur ändern muss und ansonsten halt die 2. oder 3.
Testdatenbank benutzt (welche halt gerade nicht von jemand anderem
benutzt wird, der diese modifizieren muss).
Da wird eine Absprache untereinander von nöten sein.
Wie diese Absprache dann aussieht (hier im Forum, eigener Blog, ...)
müsst ihr unter euch ausmachen.
So, nun habe ich 3 Testdatenbanken angelegt.
Wenn das nicht reicht lege ich weitere an.
Da ich nicht weiß wer aktiv an Part-db arbeitet bitte ich um eine kurze
info, damit ich für ihn einen FTP-Zugang + Subdomain einrichten kann.
Da meine virtuelle Maschine mit Part-DB gerade den Geist aufgegeben hat,
frage ich mich nun, ob es eigentlich möglich wäre, direkt aus Part-DB
heraus eine automatische Datenbanksicherung auszuführen?
Da es mit phpmyadmin doch etwas mühsam ist, mache ich das nunmal nicht
jeden Tag. Aber immerhin ist die letzte Sicherung nicht länger als zwei
Monate her ;-)
Wäre auf jeden Fall sehr hilfreich wenn Part-DB das gleich irgendwie
automatisch machen könnte.
Ebenfalls sehr cool wäre eine automatische Update-Funktion, so dass
Part-DB automatisch jeweils die neuste Version aus dem SVN installieren
könnte. Aber ich vermute mal, sowas ist eher weniger möglich oder? Und
auf dem Webspace eines Hosters noch viel weniger? :-D
mfg
P.S. @Udo Neist
Ich bin schonmal sehr gespannt auf deine neue Template-Engine. Was ich
mich aber noch frage: ist das ganze "Zeug", das du da einbaust, auch für
jemanden nachvollziehbar/erweiterbar, der sich nicht damit auskennt?
Wäre echt schade wenn dann niemand mehr mit dem Code zurechtkommt falls
du mal nichts mehr mit Part-DB zu tun haben willst/kannst.
Urban B. schrieb:> Da meine virtuelle Maschine mit Part-DB gerade den Geist aufgegeben hat,> frage ich mich nun, ob es eigentlich möglich wäre, direkt aus Part-DB> heraus eine automatische Datenbanksicherung auszuführen?>> Da es mit phpmyadmin doch etwas mühsam ist, mache ich das nunmal nicht> jeden Tag. Aber immerhin ist die letzte Sicherung nicht länger als zwei> Monate her ;-)>> Wäre auf jeden Fall sehr hilfreich wenn Part-DB das gleich irgendwie> automatisch machen könnte.
Für das Sichern der Datenbank gibt es mysqldump für die Konsole, das man
auch über PHP nutzen könnte. Ich nutze das im Rahmen eines Perl-Modules
für mein Systembackup.
> Ebenfalls sehr cool wäre eine automatische Update-Funktion, so dass> Part-DB automatisch jeweils die neuste Version aus dem SVN installieren> könnte. Aber ich vermute mal, sowas ist eher weniger möglich oder? Und> auf dem Webspace eines Hosters noch viel weniger? :-D
Ich würde das Update über SVN lieber nicht machen, sondern über
entsprechende Archive, die sich die Update-Funktion dann schnappen kann.
So ähnlich macht es auch Dokuwiki.
> P.S. @Udo Neist> Ich bin schonmal sehr gespannt auf deine neue Template-Engine. Was ich> mich aber noch frage: ist das ganze "Zeug", das du da einbaust, auch für> jemanden nachvollziehbar/erweiterbar, der sich nicht damit auskennt?> Wäre echt schade wenn dann niemand mehr mit dem Code zurechtkommt falls> du mal nichts mehr mit Part-DB zu tun haben willst/kannst.
Ich habe ja schon mal ein Vorgeschmack auf diese Template-Engine hier
gepostet. Mittlerweile habe ich einige andere Bereiche auch schon
umgestellt. Die HTML-Sachen sind in die Templates ausgelagert und im
neuen Verzeichnis templates/SCRIPTNAME/ zu finden. Die übergeordneten
(Header, Footer) sind direkt im Verzeichnis templates. Basis ist Version
446M.
Ich schieb mal meine Version hoch. Damit die Datenbankzugänge zwischen
Webspace und meinem lokalen Server nicht versehentlich vermischt werden,
hab ich gerade mal die Datenbankkonfiguration in eine eigene Datei
ausgelagert :-) Upload läuft...
Was mir gerade auffällt... Damit nicht zuviele redudante Bilder auf dem
Server existieren, wäre es doch sinnvoll, das entsprechende Verzeichnis
auf den Server ausserhalb des Webspaces zu legen und mit einem Alias im
Apache bzw. einem Symlink allen verfügbar zu machen. Ich lade gerade
sicher über 50MB an Daten hoch, die dann mehrfach vorhanden sein
könnten.
Wenn ich meine Version der DB hochgeladen habe, werde ich auch ein
Archiv ohne Bilder erstellen, damit ihr die Umstellung auf die
Templateengine sehen könnt. Im Verzeichnis class liegt u.a. die
vlibTemplateengine.
Udo Neist schrieb:> Was mir gerade auffällt... Damit nicht zuviele redudante Bilder auf dem> Server existieren, wäre es doch sinnvoll, das entsprechende Verzeichnis> auf den Server ausserhalb des Webspaces zu legen und mit einem Alias im> Apache bzw. einem Symlink allen verfügbar zu machen.
Wozu?
Webspace haben wir genügend, Traffic auch.
Oder meinst du das so, dass nicht jeder Programmierer die Bilder
hochladen muss? In dem Fall würde es Sinn machen, aber dazu brauchen wir
keinen externen Server, das kann man auch auf unseren Server ablegen und
gemeinsam darauf zugreifen.
Was mir da gerade noch einfällt...
Wenn hier irgendwelche Dateien ausgetauscht werden sollen (z.B. jemand
hat ein Bild erstellt, ein anderer möchte dieses bearbeiten), dann wäre
das bisher recht umständlich. Man könnte das Bild per Mail schicken,
oder im eigenen Ordner ablegen (und es dort freigen).
Ich denke ich sollte noch einen "Austausch-Ordner" anlegen, dessen
Zugangsdaten jeder Entwickler bekommt. Da bekommt dann jeder vollen
Lese- u. Schreibzugriff. So kann man anderen einfach Dateien zur
Verfügung stellen.
Nun habe ich leider keine Zeit mehr, Fußball fängt an ;-)
...das hole ich aber noch nach :-)
Christian R. schrieb:> Webspace haben wir genügend, Traffic auch.> Oder meinst du das so, dass nicht jeder Programmierer die Bilder> hochladen muss? In dem Fall würde es Sinn machen, aber dazu brauchen wir> keinen externen Server, das kann man auch auf unseren Server ablegen und> gemeinsam darauf zugreifen.
Am Webspace liegt es nicht. Der Upload dauert einfach zu lange. Einmal
reicht doch. Und zudem kann man dann lokal auch mit der offiziellen
Seite abgleichen. 175kb für das reine Archiv bzw. 1,2MB entpackt zu etwa
51mb ungepackt inklusive Bilder sind doch ein Unterschied. Ich hab keine
100Mbit-Leitung zu meinem Provider ;-)
> Was mir da gerade noch einfällt...> Wenn hier irgendwelche Dateien ausgetauscht werden sollen (z.B. jemand> hat ein Bild erstellt, ein anderer möchte dieses bearbeiten), dann wäre> das bisher recht umständlich. Man könnte das Bild per Mail schicken,> oder im eigenen Ordner ablegen (und es dort freigen).> Ich denke ich sollte noch einen "Austausch-Ordner" anlegen, dessen> Zugangsdaten jeder Entwickler bekommt. Da bekommt dann jeder vollen> Lese- u. Schreibzugriff. So kann man anderen einfach Dateien zur> Verfügung stellen.
Das ist ja auch meine Intuition. Einfach zentrale Ordner anlegen (sind
wohl derzeit drei unterhalb tools) und diese in die einzelnen Accounts
verlinken. Wobei allerdings Schreibrecht auf die zentralen Ordner für
alle erforderlich wäre.
PS: Fussball läuft bei mir nebenher mit ;-)
>> Nun habe ich leider keine Zeit mehr, Fußball fängt an ;-)> ...das hole ich aber noch nach :-)
OK also vorerst mal zu den zwei Fragen, die ich vorher gestellt habe.
Interpretiere ich das richtig, dass eine automatische Datenbanksicherung
bzw. ein direktes Runterladen der SQL-Sicherung aus Part-DB heraus
möglich ist? Und sogar eine automatische Update-Funktion wäre technisch
gesehen möglich, sogar auf dem Webspace eines Hosters?
Falls ja, würde ich diese zwei Punkte in die TODO-Liste aufnehmen. Ich
wollte halt erstmal fragen ob das technisch überhaupt machbar ist, nicht
dass ich was unmöglich machbares in die TODO-Liste aufnehme :-)
Dann habe ich mir ganz kurz dein Archiv angeschaut, und musste
feststellen, dass ich überhaupt nicht durchblicke :-(
Genau das habe ich befürchtet. Vorher war das ganze ja noch sehr
überschaubar, aber jetzt ists doch schon ziemlich komplex geworden finde
ich. Oder kannst du in ein paar Sätzen kurz erklären was du ungefähr
gemacht hast, wie das ganze System funktioniert, welche Dateien für was
zuständig sind?
Urban B. schrieb:> OK also vorerst mal zu den zwei Fragen, die ich vorher gestellt habe.> Interpretiere ich das richtig, dass eine automatische Datenbanksicherung> bzw. ein direktes Runterladen der SQL-Sicherung aus Part-DB heraus> möglich ist?
Ja.
> Und sogar eine automatische Update-Funktion wäre technisch> gesehen möglich, sogar auf dem Webspace eines Hosters?
Theoretisch ja, praktisch von mir noch nicht getestet. Ich hab das
Updaten meist manuell gemacht, aber etliche PHP-Applikationen
beherrschen das wohl sicher. Müsste man halt austesten.
> Dann habe ich mir ganz kurz dein Archiv angeschaut, und musste> feststellen, dass ich überhaupt nicht durchblicke :-(> Genau das habe ich befürchtet. Vorher war das ganze ja noch sehr> überschaubar, aber jetzt ists doch schon ziemlich komplex geworden finde> ich. Oder kannst du in ein paar Sätzen kurz erklären was du ungefähr> gemacht hast, wie das ganze System funktioniert, welche Dateien für was> zuständig sind?
Von den neuen Dateien im Verzeichnis class wird derzeit nur die
vlibTemplate-Klasse verwendet. Alle anderen hab ich vorsorglich da rein
kopiert, um später die Benutzerverwaltung zu schreiben. Wahrscheinlich
werden da auch noch einige der Klassen verschwinden. config.php hat sich
wenig geändert. Ich habe da nur die Datenbankkonfiguration in ein Array
umgeschrieben und heute in die config_db.php ausgelagert (damit es nicht
zu einem Konflikt mit der lokalen Kopie kommt). Die lib.php ist
entsprechend angepasst.
Für die, die noch nicht mit Klassen gearbeitet haben, ist das im ersten
Moment verwirrend. Klassen instanziert man mit $foo = new class. Alle
Funktionen und Variablen der Klasse werden mit $foo -> bar bzw. $foo ::
bar aufgerufen (http://php.net/manual/de/language.oop5.php). Der
Templateklasse übergibt man beim Instanzieren das gewünscht Template
mit. Mit der Funktion setVar() werden Variablen gesetzt (Bezeichner,
Wert). Diese kann man im Template dann mit temp_if oder temp_var
entsprechend bearbeiten.
Unter der Woche kann ich das mit einem passenden Beispiel besser
verdeutlichen :-)
Für mich ist Part-DB ein Sammelsurium von HTML, PHP und Funktionen.
Wirklich übersichtlich ist das noch lange nicht. Besser ist es,
Funktionen zu gruppieren und in einzelne Scripte auszulagern. Irgendwann
ist eure lib.php so aufgebläht, das ihr nicht mehr durchblickt. Ebenso
sind die Variablen in der config.php noch recht einfach, aber spätestens
mit der Benutzerverwaltung wäre eine Vereinfachung geeigneter. Arrays
lassen sich z.b. serialisieren und dann in eine Datenbank schreiben.
Beim Auslesen werden die dann wieder zu Arrays. Somit wären die eigenen
Einstellungen sofort verfügbar. Man braucht nicht jede Variable in eine
eigene Spalte zu schreiben.
Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch
ein klein wenig weiter als ihr ;-)
Okay danke schonmal für die Erklärung, ich schau mir das nächstens
nochmal etwas genauer an.
Udo Neist schrieb:> Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch> ein klein wenig weiter als ihr ;-)
Naja ich weiss ja nicht wie viel Erfahrung die anderen hier haben, aber
ich persönlich habe eigentlich überhaupt keine Erfahrung mit PHP (ausser
mal ein paar kleinen Anpassungen mit try & error). Aber ich bin ja auch
nicht wirklich ein Entwickler von Part-DB. Ich mach halt einfach ein
bisschen das, was ich mit meinen Fähigkeiten machen kann :-)
Ach übrigens, was würdet ihr von einer TODO-Liste für auf unseren Server
halten?
Nett sieht z.B. das hier aus: http://www.mytinytodo.net/
Die Liste im SVN finde ich halt irgendwie etwas mühsam zum unterhalten.
Ausserdem ist sie optisch nicht gerade sehr ansprechend ;-)
Urban B. schrieb:> Okay danke schonmal für die Erklärung, ich schau mir das nächstens> nochmal etwas genauer an.
Es sieht schlimmer aus als es wirklich ist. Man muss einfach nur daran
denken, das man die Logik und die Ausgabe mit einer Templateengine
trennt. Manche Engines nehmen allerdings zuviel der Logik in die
Templates und machen sie meines Erachtens wieder unübersichtlich.
> Udo Neist schrieb:>> Okay, ich merke, ich bin mit mehr als 10 Jahren PHP-Erfahrung wohl doch>> ein klein wenig weiter als ihr ;-)>> Naja ich weiss ja nicht wie viel Erfahrung die anderen hier haben, aber> ich persönlich habe eigentlich überhaupt keine Erfahrung mit PHP (ausser> mal ein paar kleinen Anpassungen mit try & error). Aber ich bin ja auch> nicht wirklich ein Entwickler von Part-DB. Ich mach halt einfach ein> bisschen das, was ich mit meinen Fähigkeiten machen kann :-)
Wenn man Spaß an etwas hat, dann kommt das irgendwann auch :-) Ich hab
am Anfang auch so manchen Unsinn programmiert.
> Ach übrigens, was würdet ihr von einer TODO-Liste für auf unseren Server> halten?>> Nett sieht z.B. das hier aus: http://www.mytinytodo.net/>> Die Liste im SVN finde ich halt irgendwie etwas mühsam zum unterhalten.> Ausserdem ist sie optisch nicht gerade sehr ansprechend ;-)
ToDo bzw. eine Bug-Verwaltung wäre sicher sinnvoll. Vielleicht auch noch
ein kleines Wiki (u.a. für die Entwickler), um bestimmte Funktionen zu
beschreiben. Sozusagen als Handbuchersatz.
Udo Neist schrieb:> ToDo bzw. eine Bug-Verwaltung wäre sicher sinnvoll. Vielleicht auch noch> ein kleines Wiki (u.a. für die Entwickler), um bestimmte Funktionen zu> beschreiben. Sozusagen als Handbuchersatz.
Stimmt, ein eigenes Wiki wäre schon praktisch. Ich habe mal kurz ein
bisschen im Internet gesucht und bin auf "TracWiki" gestossen.
Ticket-System, Wiki und SVN in einem, so wie ich das verstanden habe.
Wäre auf jeden Fall cool wenn man das alles unter einem Hut vereinen
könnte.
http://trac.edgewall.org/
Hat vielleicht sogar schon jemand hier Erfahrung mit diesem System?
Oder kennt jemand etwas vergleichbares?
Ich habe Trac mal eingesetzt, aber kam nicht wirklich damit zurecht. Ist
aber schon eine Weile her und hatte auch nicht ganz den Funktionsumfang
der aktuellen Version.
hmm aber ich glaube, Trac kann man wohl nicht auf einem einfachen
Webspace installieren oder?
Dann können wir das ja eh vergessen. Vielleicht gibts für die gängigen
CMS ja geeignete Erweiterungen für ein Wiki und eine TODO-Liste?
Dokuwiki :-) Nutze ich selbst und ist, wie der Name schon sagt, für
Dokumentationen bestens geeignet. Trac braucht schon mehr sowas wie
einen Root-Server, da es einen eigenen Webserver mitbringt.
Udo Neist schrieb:> Dokuwiki :-) Nutze ich selbst und ist, wie der Name schon sagt, für> Dokumentationen bestens geeignet. Trac braucht schon mehr sowas wie> einen Root-Server, da es einen eigenen Webserver mitbringt.
OK wenn niemand was dagegen hat und ich von Christian R. Zugangsdaten
für seinen Webspace bekomme, würde ich mal so ein Dokuwiki installieren
und konfigurieren. Wenn es nichts Gescheites wird, ist es schnell wieder
gelöscht :-D
@Christian R.
Könntest du vielleicht einen Unterordner "wiki" und eine Datenbank
"wiki" erzeugen und mir die Zugangsdaten zu diesen beiden Dingern geben?
EDIT:
K. J. schrieb:> naja im Googlecode gibt es nen wiki auch einen bugtracker, müste die> tage mal schauen wie man des aktiviert.
aah okay, das wäre dann natürlich auch was. Wenn das gut funktioniert
brauchen wir natürlich kein DokuWiki aufzusetzen :-)
K. J. schrieb:> naja im Googlecode gibt es nen wiki auch einen bugtracker, müste die> tage mal schauen wie man des aktiviert.
Hätte den Vorteil, dass wir uns um die Software nicht kümmern müssten.
K. J. schrieb:> Wiki: http://code.google.com/p/part-db/wiki/Index> Bugtracker: http://code.google.com/p/part-db/issues/list>> Naja und es wehre zentral, alles aufzusplitten ist recht> unübersichtlich.
Ja, schaut doch gar nicht schlecht aus! Ich denke damit können wir gut
leben :-)
Könntest du mir vielleicht irgendwie noch Schreibrechte fürs Wiki geben?
Die Mailadresse wäre kami89 ääääät gmx puunkt ch. Aber bitte keine Mails
an diese Adresse, diese Mailbox checke ich nicht.
Ich habe gerade eine Datenbank für ein Wiki angelegt. Zudem habe ich die
Ordner "wiki" und "ftp" angelegt, welche auch wieder eigene
FTP-Zugangsdaten und Subdomains bekommen haben.
Wenn irgendwelche Software installiert werden soll sagt mir bescheid.
Server-Seitig werden folgende Software-Installationen angeboten:
######### CMS #########
Contao (v2.11.3)
Drupal (Update von 7.1* auf 7.14)
Drupal (v7.12)
Joomla mit Beispieldaten (v2.5)
Joomla ohne Beispieldaten (v2.5)
Typo3 (Update von 4.5.* auf 4.5.16)
Typo3 (Update von 4.6.* auf 4.6.9)
Typo3 (Update von 4.7.* auf 4.7.1)
Typo3 (v4.5.16)
Typo3 (v4.6.9)
Typo3 (v4.7.1)
Websitebaker (v2.8.2)
######### Blog #########
Serendipity (v1.6)
Wordpress (v3.3.2)
######### Forum #########
Burning Board Lite (v2.1.1)
phpBB3 (v3.0.7)
######### Bildergalerie #########
Coppermine (v1.5.20)
Gallery3 (v3.0.2)
######### Shop #########
xtcModified (v1.0.5_SP1b)
######### Wiki #########
MediaWiki (v1.17)
######### Sonstiges #########
GroupOffice (v3.7.34)
Mantis BugTracker (v1.2.8)
ownCloud (v4.0.2)
phlyMail Webmail (v4.0.9)
phpMyFAQ (v2.7.5)
Piwik (v1.6)
Diese Software kann ich praktisch per "Klick" installieren.
Andere Software kann natürlich auch installiert werden (halt manuell).
Auch Cronjobs sind möglich (Datenban-Backups, usw.)
Gruß, Christian
@Christian R.
Danke für deinen Einsatz und die PN :-)
Aber da es nun ja auf Google Code auch ein Wiki und eine TODO-Liste
gibt, sind wir damit wohl besser bedient. Da ist halt gleich alles auf
der gleichen Seite, und nicht über mehrere Seiten verteilt.
Ich persönlich bin zwar ehrlich gesagt nicht gerade ein Fan von Google,
aber wenn es keine gescheiten Alternativen gibt kommt man halt nicht gut
dran herum ;-) Naja, ich habe mir nun halt extra eine neue Mailadresse
zugelegt für Google Code (danke fürs Freischalten, K.J.) damit ich
keinen Verfolgungswahn bekomme xD
Ihr müsst mal versuchen Googles Dienste zu vermeiden, das ist echt hart
;-)
Ohne Root-Server kriegt man kein SVN Server zum laufen oder?
Wobei mir gerade in den Sinn kommt, dass Andreas hier auf uC.net auch
einen SVN-Server anbietet. Aber das würde bezüglich alles unter ein Dach
zu bringen auch nichts nützen... Naja... man kann nicht alles haben ;-)
mfg
naja svn aufm Server aufsetzen ist Garnicht so trivial hatte es damals
versucht ich bin mit der google Lösung recht zufrieden und vor alledem
ist es stabile und nicht wartungs intensiv und es hat noch den vorteile
das es nicht irgendwann mal ausm netz verschwindet wen keiner mehr dran
arbeitet.
und Lösungen wie surceforge und co. sind einfach zu überdimensioniert.
So, ich habe nun alle TODOs ins Google Code übertragen.
Im uC.net Artikel habe ich die TODOs gelöscht und einen Link nach Google
Code eingefügt.
Kann noch jemand die todo.txt aus dem SVN löschen?
Ich raff grad nicht wie das gehen soll und möchte nichts am SVN
kaputtmachen ;-)
Am Wiki werde ich dann auch mal noch weiterarbeiten sobald ich Zeit
dafür habe.
Meine Installation auf http://weinbauer73.myparts.info/ läuft jetzt. Ich
habe die Datenbank von meinem lokalen Server rüberkopiert. Allerdings
musste ich noch eine Fehlermeldung in der lib.php ausmerzen. Der Server
erlaubt keine Ausführung von shell_execute(). Ich habe die Funktion
durch folgendes ersetzt:
Mensch ihr legt ja ein Tempo an den Tag....
Also es zählt nun Wiki und Tracker auf Google ? Oder ist das noch in
Diskussion ?
Mir ist die Umstellung auf die vLibTemplate nicht klar was das bringen
soll... Eventuell kann mich einer erleuchten...
Gruss
Juergen
Hmm seit wann sind denn die Texte in allen Tabellenspalten mittig
zentriert? Ich finde das sieht zumindest bei den Spalten "Name" und
"Beschreibung" etwas merkwürdig aus.
Findet ihr nicht auch, es wäre schöner wenn die Texte dieser Spalten
linksbündig platziert wären?
@Udo Neist
Heisst das, du wärst mit deiner Template-Implementierung fertig, oder
steht bisher einfach das "Grundgerüst"?
Deine Online-Demo funktioniert bei mir nicht richtig, stimmt da was mit
der Datenbankanbindung nicht oder bist du einfach noch nicht fertig
damit?
Bei mir steht nur das Grundgerüst und die ersten Umstellungen. Ich kam
diese Woche noch nicht dazu weiter zu machen.
Das noch nicht alles funktionieren kann, das liegt an der Umstellung der
Konfiguration, die auch eine etwas andere Reihenfolge der Initialiserung
erfordert. Das ist bisher nur bei ein paar wenigen Scripten erfolgt und
wird im Laufe der Zeit - bei der Implementierung der Templateengine -
gleich angepasst.
Urban B. schrieb:> Hmm seit wann sind denn die Texte in allen Tabellenspalten mittig> zentriert? Ich finde das sieht zumindest bei den Spalten "Name" und> "Beschreibung" etwas merkwürdig aus.>> Findet ihr nicht auch, es wäre schöner wenn die Texte dieser Spalten> linksbündig platziert wären?>
Jo das war ich ;P
mache es wieder Rückgängig
K. J. schrieb:> Jo das war ich ;P>> mache es wieder Rückgängig
Okay danke :-D
@Udo Neist
Alles klar, nur kein Stress :-)
Udo Neist (weinbauer73) schrieb:> Meine Installation auf http://weinbauer73.myparts.info/ läuft jetzt.
Wegen diesem Satz war ich mir nicht sicher, ob das heissen soll, dass du
nun fertig bist ;-)
Ich habe mich heute übrigens mal dran gesetzt, das Durcheinander mit den
Footprint-Namen etwas zu entschärfen. Ein Datenbankupdate legt erstmal
in der Tabelle "footprints" eine neue Spalte "filename" an. Gefüllt wird
diese Spalte mit den gleichen Werten wie die Spalte "name". Dann werden
die langen Footprintnamen, die mal mit einem Datenbankupdate eingeführt
wurden, wieder rückgängig gemacht.
Ich habe mir Mühe gegeben, die neue Datenbankstruktur an allen
notwendigen Stellen des gesamten Codes einzubauen. Da aber alles schon
recht unübersichtlich wurde (finde ich zumindest), kann ich nicht zu
100% sagen ob ich wirklich nichts übersehen habe.
Jedenfalls konnte ich bei meiner Installation keine Fehler finden, das
tut soweit genau das was es soll.
Alle geplanten Änderungen am Footprint-System, wie sie in unserer
TODO-Liste stehen, habe ich noch nicht umgesetzt. Aber die Basis dazu
ist mit diesem Update schonmal gelegt.
@K.J.
kannst du die Änderungen vielleicht mal kurz anschauen und ggf. ins SVN
laden? Danach könnte man sogar den Footprint-Ordner "zzz_obsolete"
wieder löschen, der war ja nur als Übergangslösung da.
Ich weiss, ich hätte nun auch Schreibzugriff auf dem SVN, aber so wie
ich mich kenne mache ich da mehr kaputt als dass ich was verbessere xD
mfg
Habe gerade gesehen dass ich noch zwei, drei Stellen anpassen muss.
Bitte mein zip-Archiv ignorieren, ich melde mich wieder wenn ich was
neues habe :-)
So, jetzt siehts gut aus. Ich habe die Änderungen nun doch direkt ins
SVN geladen, mit "RabbitVCS" ist das ja echt komfortabel :-)
Da der Footprint Ordner "zzz_obsolete" nun nicht mehr gebraucht wird,
habe ich den gelöscht (bzw. RabbitVCS ist dran, sofern er sich nicht
aufgehängt hat^^)
Ich hoffe jetzt mal dass das Update bei allen einwandfrei funktioniert
und die Footprints immernoch korrekt angezeigt werden.
Übrigens haben Bert (b.r.) und ich heute mal Gedanken zu einigen
geplanten Änderungen (Footprints, Dateiupload, ...) gemacht. Ich werde
in unseren Issues auf Google Code noch reinschreiben wie wir uns das so
vorstellen.
Ausserdem werde ich beim Footprint-Issue noch vermerken was ich jetzt
schon gemacht habe und was noch fehlt.
P.S.
Mit den Variablennamen hatte ich manchmal ein ganz schönes
Durcheinander. Meiner Meinung nach würde es nicht schaden, wenn wir die
Variablen etwas aussagekräftiger gestalten würden ;-)
Jap hört sich alles gut an schaue es mir heute Abend an, die Alten FP
gibt es ja noch als Archiv im DL bereich, also raus damit.
Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen
einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem
langsam, man sieht das recht gut an der Demo-DB.
Die Tage habe ich auch wieder etwas Zeit, auf Arbeit ist so gut wie
nichts zu tun gut das ich fast unkündbar bin, da werde ich mir dann
wieder mit der Part-DB die Zeit vertreiben.
@tb-netbook
An welcher Stelle ist das mit dem FP-Parser zu finden? Vielleicht finde
ich beim schnellen Drüberschauen das Problem.
@Urban
Es bezog sich ja auf den aktuellen Stand meiner Umsetzung :-)
tb-netbook schrieb:> Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen> einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem> langsam, man sieht das recht gut an der Demo-DB.
Das liegt daran, dass momentan die Footprint-Bilder noch im ganzen
tools/footprints Ordner rekursiv gesucht werden. Da haben Bert und ich
aber auch eine Lösung parat, ich schreib sie nachher gleich in unsere
Issues Liste hinein.
Udo Neist schrieb:> @Urban>> Es bezog sich ja auf den aktuellen Stand meiner Umsetzung :-)
OK das habe ich nun vermutet :-D
Urban B. schrieb:> tb-netbook schrieb:>> Irgentwas muss trotzdem an den FP Parser geändert werden ab 40 Listen>> einträgen scheitert das ganze an der PHP-Runtime (30s), das ist extrem>> langsam, man sieht das recht gut an der Demo-DB.>> Das liegt daran, dass momentan die Footprint-Bilder noch im ganzen> tools/footprints Ordner rekursiv gesucht werden. Da haben Bert und ich> aber auch eine Lösung parat, ich schreib sie nachher gleich in unsere> Issues Liste hinein.
Mit folgendem Code durchsuche ich ein Verzeichnis rekursiv nach Dateien.
Das geht recht fix, da die Funktion sich bei jedem Unterverzeichnis
wieder selbst aufruft. Hab ich irgendwo im Netz gefunden. Die Funktion
ist aus einer Klasse, daher das "$this->" ;-)
1
function readDir($path = '.',$search = '',$options=array('mime'=>array(),'recursive'=>true,'onlyfiles'=>false)) {
2
/*
3
Durchforstet das übergebene Verzeichnis rekursiv nach Dateien
4
5
* Variablen
6
$this -> files (array): Container für Dateien
7
$path (string): Suchpfad (Default: .)
8
$search (string): Suchmuster für preg_match()
9
$options (array):
10
recursive (bool): Rekursiv suchen
11
onlyfiles (bool): Nur Dateien
12
mime (string): Mimetyp
13
14
* Rückgabe
15
$this -> files (array): Liste der Ergebnisse mit absoluten Pfad
16
17
* Anforderung
18
Kein Datenbanklink erforderlich!
19
20
* Anmerkung
21
Der Punkt ist das aktuelle Verzeichnis, ".." kennt man als "Verzeichnis höher" und "dir/" als "Verzeichnis tiefer".
22
23
*/
24
25
// $this->files wird initialisiert, falls noch nicht geschehen
26
if (!is_array($this -> file)) $this -> file = array();
27
28
// Pfad setzen
29
$dir = dir($path);
30
// Pfad durchsuchen
31
while (($file = $dir->read()) !== false) {
32
// Verzeichnisebenen überspringen
33
if ($file =='.' || $file =='..') continue;
34
if (is_dir($path."/".$file) && $options['recursive']===true) {
35
// Falls Verzeichnis, dann rekursiv die Funktion nochmal aufrufen
So, ich denke das Wichtigste aus der Diskussion von Bert und mir hab ich
jetzt in unsere Issues übertragen. Es geht um die Issues 12 und 14.
@Udo Neist
Danke für den code, aber ich denke der ist nicht notwendig, weil eben
eigentlich gar nicht mehr nach den Bildern gesucht werden muss, sobald
die noch anstehenden Änderungen durchgeführt wurden.
Hallo Udo,
Udo Neist schrieb:> Der Server> erlaubt keine Ausführung von shell_execute(). Ich habe die Funktion> durch folgendes ersetzt:
Die Zeichenkette in .svn/entries ist leider nicht das selbe wie
"svnversion".
Auf einem Webspace, wo das Projekt nur ausgecheckt und nicht verändert
wird passt es. Aber lokal zeigt mir svnversion z.B. Folgendes an:
1
$ svnversion
2
476M
Vielleicht kann man erst prüfen, ob shell_exec geht und dann in
.svn/entries reinschauen?
Grüße
b
Udo Neist schrieb:> An welcher Stelle ist das mit dem FP-Parser zu finden? Vielleicht finde> ich beim schnellen Drüberschauen das Problem.
In lib.php.
Das Problem bisher ist, die Footprints sind über einige Verzeichnisse
verteilt und müssen über den Dateinamen gesucht werden. Und das kann bei
vielen Einträgen/langen Listen dauern.
Urban und ich arbeiten aber gerade an dem Problem. Der Fundort wird
demnächst mit in der Datenbank abgelegt. Dann sollte das
Geschwindigkeitsproblem erledigt sein.
Grüße
b
Das mit der Datenbank wäre auch meine Idee. Einmal über ein Menüpunkt in
den Einstellunge und bei der ersten Inbetriebnahme das Verzeichnis
scannen und dann dürfte das auch schneller gehen. Diese Daten dürften
sich ja nicht sonderlich oft ändern.
Udo Neist schrieb:> Mit folgendem Code durchsuche ich ein Verzeichnis rekursiv nach Dateien.
Es wird momentan schon rekursiv gesucht. Wo alles noch in einem
Verzeichnis lag, war das auch akzeptabel. Wie gesagt, es wird dran
gearbeitet :-)
b
Urban B. schrieb:> P.S.> Mit den Variablennamen hatte ich manchmal ein ganz schönes> Durcheinander. Meiner Meinung nach würde es nicht schaden, wenn wir die> Variablen etwas aussagekräftiger gestalten würden ;-)
Nur zu!
Udo Neist schrieb:> Bei mir steht nur das Grundgerüst und die ersten Umstellungen. Ich kam> diese Woche noch nicht dazu weiter zu machen.
Wie wäre es, wenn Du die Template-Geschichte als Branch im
SVN-Repository anlegst? Da bleibt der Code an einer zentralen Stelle und
per "svn switch" kann man ihn auch schnell mal ausprobieren.
Grüße
b
Udo Neist schrieb:> Ich hab mit SVN und Co leider kaum gearbeitet. Wenn mir das einer mal> kurz erklärt, dann gerne :)
Womit entwickelst Du? Linux? Mac? Windows?
Diverse Tutorials gestern da durch's Netz...
b
Unter Linux. Ich hatte mal ein SVN eingerichtet, aber kaum genutzt.
Bisher hab ich immer mindestens zwei Kopien gehabt und kein Repo
benötigt.
Ich werde mir aber mal ein paar Howtos anschauen. Eventuell habt ihr ja
ein vernünftiges, da ja so mancher Schrott im Inet existiert.
@b.r und an alle :-)
Ich habe jetzt in der tools/footprints.php die Checkbox zum
hinzufügen/löschen von Footprints vorübergehend mal deaktiviert.
Ich denke es ist besser, wenn wir die Funktion erst wieder aktivieren
wenn es eine gescheite Sicherheitsabfrage beim Löschen gibt :-)
Und eine Anpassung an die neue Datenbankstruktur (Spalte "filename") ist
auch noch notwendig.
@Udo Neist
Ich habe heute auch zum ersten mal mit SVN gearbeitet. Dazu habe ich im
Internet "RabbitVCS" gefunden, das integriert sich in Nautilus und macht
es einem echt leicht, kann ich nur empfehlen :-)
Ich hab hier Dolphin (KDE4) und irgendwo ein kdesvn. Aber sowas mach ich
am liebsten von der Konsole aus :-)
Ich denke, ich brauch auch noch Zugangsdaten?
Udo Neist schrieb:> Ich hab hier Dolphin (KDE4) und irgendwo ein kdesvn. Aber sowas mach ich> am liebsten von der Konsole aus :-)
Ich nehm auch (fast) immer die Konsole. Außer unter Windows. Da
integriert sich TortoiseSVN sehr gelungen in den Explorer.
> Ich denke, ich brauch auch noch Zugangsdaten?
Frag mal bei K.J.
Evtl. geht es nur mit goole-Account.
Grüße
b
Kennt von euch zufälligerweise jemand einen Datei-Öffnen-Dialog, bei dem
man eine Datei, die auf dem Server liegt, auswählen kann?
Bilder sollen wenn möglich auch gleich im Dialog angezeigt werden,
sofern eine Bilddatei angewählt wird.
Im Internet finde ich überhaupt nichts derartiges...
Urban B. schrieb:> Kennt von euch zufälligerweise jemand einen Datei-Öffnen-Dialog, bei dem> man eine Datei, die auf dem Server liegt, auswählen kann?> Bilder sollen wenn möglich auch gleich im Dialog angezeigt werden,> sofern eine Bilddatei angewählt wird.>> Im Internet finde ich überhaupt nichts derartiges...
Ist mir auch keines bekannt. Mach ich über eine Listbox, die ich zuvor
gefüllt habe.
Also für die Zuweisung eines Bildes zu einem Footprint brauchen wir
jetzt ja einen Dialog, bei dem man die Serververzeichnisse durchsuchen
kann. Da man dafür wohl am besten gleich den Dialog für den universellen
Dateiupload (der noch nicht existiert xD) benutzt, habe ich mir mal
Gedanken gemacht wie der etwa aussehen könnte (siehe Anhang).
Kritik/Verbesserungsvorschläge sind erwünscht.
Der Dialog müsste beim Schliessen einfach dem aufrufenden Fenster den
Dateipfad der markierten Datei übermitteln.
Ich hab mal selber ein bisschen probiert sowas zu bauen, aber mit meinen
mageren php-Kenntnissen wird das nichts ;-)
Gibts Freiwillige? :-D
EDIT:
Ach ja, das Umbenennen/Löschen/Kopieren/Hochladen ist nur im Ordner
media/ erlaubt. Auf die anderen beiden Ordner hat der User nur
Lesezugriff.
Sowas wäre wohl ein Fall für Ajax (Javascript) :-) Das wäre dann auch
der Grund für die Beseitigung der Frames (sind obsolete und sollen
irgendwann von den Browsern nicht mehr unterstützt werden).
Udo Neist schrieb:> Sowas wäre wohl ein Fall für Ajax (Javascript) :-) Das wäre dann auch> der Grund für die Beseitigung der Frames (sind obsolete und sollen> irgendwann von den Browsern nicht mehr unterstützt werden).
Okay, also definitiv nichts für mich :-)
Ich habe übrigens jetzt (r479) unter Konfiguration/Datenbank die
Möglichkeit eingefügt, direkt ein Backup von der Datenbank zu erzeugen
und auf dem Server unter backup/ abzulegen. Auch kann man jedes
existierende Backup herunterladen oder löschen.
Ich hoffe das funktioniert bei euch auch ;-)
Ist ja richtig ruhig hier im Moment :-D
Ich war mal wieder fleissig am Arbeiten, und ich muss schon sagen, so
langsam fang ich an PHP zu mögen :-)
Die Umstellung auf die vollständigen Dateinamen habe ich jetzt ins SVN
geladen (r480). Die Footprintbilder werden jetzt nicht mehr im ganzen
footprint-Ordner gesucht, sondern es wird direkt die Datei genommen,
deren Pfad in der Datenbank abgelegt ist (beim entsprechenden
Footprint).
Das Laden der Liste sollte jetzt also einiges schneller gehen.
Nach dem Update funktionieren kurzfristig jedoch alle Footprint-Bilder
nicht mehr. Aber keine Panik, das ist nicht schlimm :-) Auf der
Startseite sollte gleich der Hinweis kommen, dass es fehlerhafte
Dateinamen für die Footprintbilder gibt. Unter Bearbeiten/Footprints
werden all diese fehlerhaften Footprints aufgelistet und falls
vorhanden, gleich passende Dateien vorgeschlagen.
Eigentlich müsst ihr diese Vorschläge gar nicht überprüfen. Wenn ihr
einfach auf "Alle Übernehmen" klickt sollte nachher alles wieder genau
so sein wie vor der Umstellung. Dass einige Pfade gelöscht werden sieht
zwar schlimm aus, ist es aber nicht, da die entsprechenden Footprints
schon vorher kein Bild sollten gehabt haben.
Wenn ihr aber auf "markierte übernehmen" klickt, werden schonmal alle
Footprints, die vorher ein Bild hatten, wieder mit dem richtigen Bild
verknüpft. Danach habt ihr gleich noch eine Liste von Footprints, die
schon vorher kein Bild hatten. Diese können dann mit den Dropdown-Listen
ganz einfach mit einem Bild verknüpft werden, falls gewünscht.
Ich habe es bei mir gründlich durchgetestet, und ich konnte keine Fehler
mehr entdecken. Eine Datenbanksicherung vor der Übernahme kann aber
trotzdem nicht schaden ;-)
mfg
Ich hab mir die 479er gezogen und werde die Änderungen dort einpflegen.
Die Version 12 der Datenbank habe ich auch schon als create.sql
gesichert, damit man nicht erst die alte Version installieren und dann
updaten muss. Ich werde wohl noch eine install.php erstellen, die die
Ersteinrichtung erleichtert.
Wenn ich die Migration von 446 auf 479 abgeschlossen habe, werde ich
diese dann auch ins SVN kopieren.
Grüße
Udo
Udo Neist schrieb:> Ich hab mir die 479er gezogen und werde die Änderungen dort einpflegen.
Heisst das, die Änderungen von r480 sind dann wieder weg?
Die Revision 480 ist eigentlich relativ wichtig, da dort das neue
Footprintsystem mehr oder weniger fertig implementiert ist (sobald der
neue Upload-Dialog vorhanden ist, muss der noch mit dem Footprintsystem
"verknüpft" werden, aber sonst ist es soweit fertig).
Ich wäre noch froh um Feedback ob die Umstellung aufs neue
Footprintsystem problemlos funktioniert hat, und vor allem ob nun die
Auflistung vieler Teile viel schneller geht als vorher (einige hatten ja
Probleme dass bereits Timeouts eingesetzt haben, die hatte ich jedoch
nicht).
mfg
ah okay das wär nicht schlecht ;-)
Oder auch gleich r481, aber da hab ich nur der Hinweis bei den
Footprints eingefügt, dass es empfohlen wäre vor dem automatischen
Korrigieren der Dateinamen eine Datenbanksicherung durchzuführen :-D
Den hab ich sicherheitshalber mal eingefügt damit man theoretisch wieder
aufs alte System wechseln könnte, falls irgendwas schiefgelaufen wäre.
Ach ja, sofern niemand reklamiert ich hätte mit r480 seine Datenbank
zerschossen, werde ich das SVN in nächster Zeit in Ruhe lassen ;-) Du
kannst also deine Migration durchführen ohne dass ich wieder dazwischen
funke ;-)
Udo Neist schrieb:> Warum nicht gleich bei einem Update der Datenbank ein Backup> durchführen? Da muss der User nicht das per Hand anwerfen.
Die Idee hatte ich auch schon. Aber die Revision 480 beinhaltet gar kein
Datenbankupdate, würde dann also keine automatische Sicherung auslösen
;-)
Und extra ein DB-Update "simulieren" finde ich nicht sehr schön...
Die Umstellung der Footprint-Dateinamen auf vollständige Pfadangaben
passiert ja eh nicht automatisch, sondern muss manuell durchgeführt
werden. Daher denke ich reicht auch ein kleiner Hinweis inkl. Link auf
die Seite, auf der man jetzt ja ganz einfach per Mausklick eine
Sicherung erstellen lassen kann.
Urban B. schrieb:> Udo Neist schrieb:>> Warum nicht gleich bei einem Update der Datenbank ein Backup>> durchführen? Da muss der User nicht das per Hand anwerfen.>> Die Idee hatte ich auch schon. Aber die Revision 480 beinhaltet gar kein> Datenbankupdate, würde dann also keine automatische Sicherung auslösen> ;-)
Ich würde in dem Fall zwei DB-Updates definieren. Ein Major-Update mit
Versionsänderung und ein Minor-Update mit Änderungen auf
System-/Datenebene.
> Und extra ein DB-Update "simulieren" finde ich nicht sehr schön...
Geht schneller als man denkt. Einfach ein mysqldump vor dem Update auf
der Kiste durchführen und nach dem Update schauen, ob alles geht. Wenn
nicht einfach den Dump mit "mysql <dump.sql" zurückspielen (User,
Passwort und Datenbank angeben nicht vergessen). Dazu braucht man kein
phpMyAdmin.
Udo Neist schrieb:> Ich würde in dem Fall zwei DB-Updates definieren. Ein Major-Update mit> Versionsänderung und ein Minor-Update mit Änderungen auf> System-/Datenebene.
Wär auch eine Möglichkeit. Ich notier das mal in unseren Issues.
> Geht schneller als man denkt. Einfach ein mysqldump vor dem Update auf> der Kiste durchführen und nach dem Update schauen, ob alles geht. Wenn> nicht einfach den Dump mit "mysql <dump.sql" zurückspielen (User,> Passwort und Datenbank angeben nicht vergessen). Dazu braucht man kein> phpMyAdmin.
Jo, stimmt. Eine Sicherung durchführen geht jetzt ja auch schon ohne
phpMyAdmin, falls du das noch nicht mitgekriegt hast ;-) Die
Möglichkeit, eine Sicherung wiederherzustellen kommt auch noch.
Ich habe heute die Revision 483 angefangen umzustellen und bereits einen
Teil geschafft. Nur klappt es mit dem Anlegen eines Branches nicht.
Google wirft mich mit Fehler 405 raus. Ich denke, man müsste mich noch
in die Liste der Committer aufnehmen :(
Nachdem ich ein paar Infos über Googlecode und Subversion gelesen und
noch einen Gmail-Account erstellt habe, werde ich beim Kopieren des
Hauptzweiges in ein Branch bzw. beim Import mit "access forbidden"
rausgeworfen. Ich arbeite auf der Konsole.
Ich hab die Revision 483 in der Version 20120711 nach
http://part-db.googlecode.com/svn/branches/uneist/ hochgeladen (->
Revision 484) und versuche gerade die Version 20120713 als Update
einzustellen. Noch klappt das nicht, bin mit svn noch am kämpfen.
Update erfolgreich. Version 20120713 als Revision 485 gespeichert.
Die Anleitungen zu svn sind teilweise unbrauchbar oder schwer
verständlich. Warum schreibt denn niemand was vernünftiges? Arbeitskopie
ist die lokale Kopie, die nach dem ersten Checkout entsteht. Führt zur
Verwirrung, wenn man die Begriffe nicht kennt.
Hier mal ein kurze Zusammenfassung meiner Vorgehensweise für
Konsolenfanatiker ;-)
A. Erster Import (wichtig, falls man neu beginnt)
1
svn import LOCALDIR URL
B. Kopie (Fork, Branch) erstellen (wenn man mit einer bestehenden
Revision starten will)
1
svn copy URL URL2
Startet man komplett neu und hat bereits ein Repo angelegt (z.b. bei
googlecode.com), so würde man mit Variante A beginnen. Startet man einen
neuen Zweig, so würde sich Variante B anbieten.
Anschliessend erfolgt der erste Checkout.
1
svn checkout URL LOCALDIR
Für die tägliche Arbeit sind die nachfolgenden Schritte einzuhalten.
1. Einbindung neuer Dateien/Verzeichnisse im lokalen Verzeichnis
1
svn add * --force
2. Löschen einer Datei oder eines Verzeichnisses im lokalen Verzeichnis
1
svn delete FILE/DIR
3. Synchronisiert des lokalen Verzeichnises mit der URL (wird durch das
Checkout gespeichert)
1
svn update
4. Freigabe des Updates
1
svn commit -m COMMENT
Die Schritte 1 und 2 werden nur benötigt, wenn sich im Verzeichnisbaum
was ändert. Ändert man nur bestehende Dateien, so kann man direkt mit
Schritt 3 beginnen. Allerdings gilt bei mehreren Committer im gleichen
Zweig, dass man den Schritt 3 zuerst ausführt, um Änderungen im Repo
auch in die eigene Arbeitskopie einfliessen zu lassen. Konflikte müssen
dann mit den Werkzeugen von svn aufgelöst werden, bevor man weiter
arbeitet. Danach führt man die Schritte 1 bis 4 aus.
Links: http://svnbook.red-bean.com/nightly/de/svn-book.html
Ich hoffe, ich habe die üblichen Schritte für svn recht gut rüber
gebracht. Man könnte natürlich auch einen Wiki-Artikel daraus machen, da
es hier ja auch einen svn -Server gibt.
Ich habe heute abend mal die partDB installiert und finde sie wirklich
prima. Super easy aufzusetzen und einfach zu durchschauen. Bis auf
Kleinigkeiten ist es genau das, was ich immer gesucht habe !
Ich werde mal die "Kleinigkeiten" in loser Abfolge auflisten, so dass
sich evtl. eine Diskussion über deren Sinnhaftigkeit ergibt.
- Footprint (1): das Bild in der ersten Spalte nervt -mich zumindest und
an dieser Position- sehr, da immer wenn die Maus auf dem Weg zum Eintrag
darüber kommt, das Bild groß aufpoppt und dann im Weg steht. Evtl.
könnte das in die letzte Spalte verschieben.
- Footprint (2): Da an sich immer Abbildungen fehlen werden (SC70, SC74,
MLF, Diode in 0603, ...) und nicht jeder Wert auf eine Abbildung legt,
wäre ein alternatives Eingabefeld sinnvoll; damit kann man auch ohne
Vorhandensein eines Footprints das Gehäuse für die Listenansicht
spezifizieren.
- Eingabefeld Preis: ich hätte gern noch eine Menge, auf die sich der
Preis bezieht. Prima wäre zusätzlich zum Preisfeld noch ein Feld
'Kalkulationspreis' und 'Kalkulationsmenge', sowie 'Bestellmenge'. Dann
könnte man eingeben: 49 Euro je 100 Stück, bei Bestellmenge 4000 Stück.
Wenn sich der Stückpreis dann automatisch aus 49/100 ergibt, ware das
nicht uncool ;)
- Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer
Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich-
auch rückgängig machen, sofern man aus Versehen mal 'was Falsches
eingegeben hat.
Eine Frage noch: wenn man spendet, wem kommt das zu gute ?
Gruß, Stefan
Udo Neist schrieb:> Die Anleitungen zu svn sind teilweise unbrauchbar oder schwer> verständlich.
Deshalb nutze ich lieber GUIs, da braucht man keine Anleitung, da kann
man einfach mal wild drauflosklicken und schauen was passiert :-D Und
wenn sich der SVN-Client sogar noch in den Dateibrowser integriert und
bei jeder einzelnen Datei anzeigt ob sie der aktuellsten SVN-Revision
entspricht, ist das sogar auch noch sehr nützlich :-D
Stefan schrieb:> - Footprint (1): das Bild in der ersten Spalte nervt -mich zumindest und> an dieser Position- sehr, da immer wenn die Maus auf dem Weg zum Eintrag> darüber kommt, das Bild groß aufpoppt und dann im Weg steht. Evtl.> könnte das in die letzte Spalte verschieben.
Okay, das wäre dann also eine zusätzliche Konfigurationsmöglichkeit. Da
die Konfiguration sowieso aus der config.php verschwinden und in die
SQL-Datenbank verschoben werden soll, denke ich wir warten noch mit
diesem Feature.
Da käme mir nämlich gerade eine ganz coole Idee in den Sinn: Es soll ja
in Zukunft auch eine Benutzerverwaltung geben. Das würde dann
ermöglichen, dass jeder Benutzer seine Spalten selber konfigurieren
kann. Ich denke danach sollte jeder zufrieden sein mit der Tabelle :-)
Stefan schrieb:> - Footprint (2): Da an sich immer Abbildungen fehlen werden (SC70, SC74,> MLF, Diode in 0603, ...) und nicht jeder Wert auf eine Abbildung legt,> wäre ein alternatives Eingabefeld sinnvoll; damit kann man auch ohne> Vorhandensein eines Footprints das Gehäuse für die Listenansicht> spezifizieren.
Ich denke das ist eine eher weniger gute Idee. Mal abgesehen davon, dass
es etwas mühsam/unschön zum programmieren ist, hat man einige Nachteile.
Wenn du nämlich mehreren Bauteilen den gleichen Footprint per manueller
Eingabe zuordnest, sind sie voneinander völlig unabhängig, obwohl es
immer um den gleichen Footprint geht. Du kannst also den Footprint nicht
bei allen betroffenen Bauteilen auf einmal umbenennen, oder falls später
mal das fehlende Bild dazukommt, kannst du es nicht direkt allen
betroffenen Bauteilen zuordnen. Viel besser ist es, wenn du beim Anlegen
eines neuen Bauteiles das Eingabefeld rechts benutzt um gleich einen
neuen Footprint anzulegen. Das geht genau so einfach wie das von dir
gewünschte Feature, hat aber die genannten Nachteile nicht.
Stefan schrieb:> Eingabefeld Preis: ich hätte gern noch eine Menge, auf die sich der> Preis bezieht. Prima wäre zusätzlich zum Preisfeld noch ein Feld> 'Kalkulationspreis' und 'Kalkulationsmenge', sowie 'Bestellmenge'. Dann> könnte man eingeben: 49 Euro je 100 Stück, bei Bestellmenge 4000 Stück.> Wenn sich der Stückpreis dann automatisch aus 49/100 ergibt, ware das> nicht uncool ;)
Die Angabe der Stückzahl habe ich auch schon im Sinn gehabt. Ich denke
das lässt sich so einbauen. Wie der Preis dann in den Tabellen angezeigt
wird ist halt Geschmackssache. Vermutlich wäre das beste, wenn dort nur
der Einzelpreis steht, ohne Stückzahl. Das mit der Bestellmenge wird
dann etwas komplizierter, wenn man es mit dem Preis verknüpfen will.
Dann müsste es eigentlich ja fast die Möglichkeit geben, pro Bauteil
mehrere Preise anzugeben (für verschiedene Bestellmengen). Wäre sicher
nützlich für den professionellen Einsatz, aber gibt viel Aufwand. Mal
schauen ob das was wird ;-)
Stefan schrieb:> - Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer> Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich-> auch rückgängig machen, sofern man aus Versehen mal 'was Falsches> eingegeben hat.
Keine schlechte Idee, vorallem auch im Bezug auf die Benutzerverwaltung
die ja noch kommen soll. Dann könnten die "Admins" auch nachvollziehen
was andere Leute so in der Datenbank "rumfummeln" und können
Fehlbuchungen rückgängig machen. Würde ich als durchaus nützlich
betrachten.
Stefan schrieb:> Eine Frage noch: wenn man spendet, wem kommt das zu gute ?
Gute Frage ;-) Ich denke die Frage geht an K.J.
Danke für die Vorschläge, ich nehme sie mal in unsere TODO-Liste auf.
mfg
> Das würde dann ermöglichen, dass jeder Benutzer seine Spalten selber> konfigurieren kann. Ich denke danach sollte jeder zufrieden sein mit der> Tabelle :-)
Würde ich auch als die beste Lösung betrachten. Zumal sich mein Problem
mit den Abbildungen der Footprints wahrscheinlich eh' erledigt hat.
> Du kannst also den Footprint nicht bei allen betroffenen Bauteilen auf> einmal umbenennen, oder falls später mal das fehlende Bild dazukommt,> kannst du es nicht direkt allen betroffenen Bauteilen zuordnen.> ...> Viel besser ist es, wenn du beim Anlegen eines neuen Bauteiles das> Eingabefeld rechts benutzt ...
Also 'Bild hochladen' erzeugt einen neuen Footprint ? Dann ist ja alles
in Ordnung. Ich finde -und jetzt nicht böse sein- dass hier eh' zu viel
Wert auf die Abbildungen gelegt wird; 2/3 des Threads scheinen sich mit
Footprints auseinanderzusetzen. Da ich weiß, wie ein 0603er oder ein
MSOP10 aussieht, reicht mir die Angabe des FP im Klartext, also
KERKO_0402 oder KERKO_0603. Deshalb werde ich einfach weiße-1-pixel-gifs
als FP benutzen. Damit sollte sich dann auch meine Problematik mit den
aufpoppenden Bildern erledigt haben.
Also mehrere Preise brauche ich nicht; alternative Bauteile anderer
Hersteller könnte ich ggf. in den Kommentaren unterbringen, nur ist eben
die Preisangabe so wie bisher umgesetzt, eher auf den Reichelt-Besteller
ausgerichtet. Das soll nicht abwertend sein (!), sondern nur
verdeutlichen, dass andere Anwender auch andere Anforderungen haben :)
Bei der von mir vorgeschlagenen Erweiterung handelt es sich im Grunde
genommen ja auch nur um 3 neue Datenbankfelder und Minimalarithmetik.
Jedoch geben viele Anbieter den Preis bezogen auf 100 an. Und zu
vermerken, ab welcher Stückzahl der genannte Preis gilt, ist immer
hilfreich, da Mouser, Farnell, Digikey, Schukat und eigentlich alle
außer Reichelt mit Staffelpreisen arbeiten.
Btw: kann man eigentlich einstellen, dass der Preis in Cent angegeben
wird ? 0.0011 Euro liest sich einfach bescheiden. Da muss ich immer
erst lange nachdenken, bevor ich weiß, was das Bauteil wirklich kostet
;)
Eine Log-Tabelle für abgebuchte Baugruppen, mit Korrekturmöglichkeit,
halte ich für sehr wichtig und würde für die Implementierung auch
bezahlen.
André hat geschrieben:
> Mich hatt es gestört, dass ich die Datenblätter nicht vom aktuellen> Rechner hochladen konnte, sodass ich den Code in Anlehnung an die Bilder> umgeändert habe, so dass man zusätzlich Datenblätter in den Ordner> hochladen kann der in der config.php als datasheet_path angegeben ist.> Es wäre bei den Datenblättern noch gut, wenn man einen Titel eingeben> könnte (der originale Dateiname würde meist schon reichen), vielleicht> passe ich das noch an. (datasheet.patch)
Stört mich auch sehr. Ich habe die V2.2 installiert, bei der diese
Funktion leider nicht vorhanden ist. Ist dieser Patch nie eingeflossen ?
Urban B. schrieb:> Stefan schrieb:>> Eine Frage noch: wenn man spendet, wem kommt das zu gute ?>> Gute Frage ;-) Ich denke die Frage geht an K.J.>> Danke für die Vorschläge, ich nehme sie mal in unsere TODO-Liste auf.>> mfg
Hm ist bis jetzt noch nicht Passiert ;-) da hab ich mir noch keine
Gedanken drum gemacht, ich würde es einfach erstmal sammeln,
ursprünglich war es gedacht damit ich damit meinen Server Finanzieren
kann jetzt wo so viele andere mitmachen müsste man sich da was
überlegen.
Stefan --- schrieb:>> Du kannst also den Footprint nicht bei allen betroffenen Bauteilen auf>> einmal umbenennen, oder falls später mal das fehlende Bild dazukommt,>> kannst du es nicht direkt allen betroffenen Bauteilen zuordnen.>> ...>> Viel besser ist es, wenn du beim Anlegen eines neuen Bauteiles das>> Eingabefeld rechts benutzt ...> Also 'Bild hochladen' erzeugt einen neuen Footprint ? Dann ist ja alles> in Ordnung.
Nein, nicht "Bild hochladen". Wenn du ein neues Bauteil anlegst gibt es
auf der rechten Seite die Möglichkeit den gewünschten Footprint in das
Feld "Direkteingabe/Neu" einzutippen. Ist der eingetippte Footprint
schon in der Datenbank vorhanden (ob mit oder ohne Bild) wird dieser dem
Bauteil zugewiesen. Ist der Footprint noch nicht vorhanden, wird er
direkt neu angelegt und dann dem Bauteil zugewiesen. Verstehst du wie
ich meine? Oder habe ich dich irgendwie falsch verstanden?
Footprint und Footprint-Bild haben erstmal nichts miteinander zu tun,
das wissen viele nicht. Die Footprintverwaltung ist einfach dazu da,
dass die Footprints auch gescheit mit den Bauteilen verknüpft sind. Also
dass alle Bauteile im DIP08 Gehäuse auf den genau gleichen Footprint
zeigen. Optional kann man den Footprints dann aber zusätzlich auch noch
Bilder zuweisen, damit sie direkt in den Tabellenansichten als Icon
erscheinen. Das ist kein muss sondern ein dürfen.
> Ich finde -und jetzt nicht böse sein- dass hier eh' zu viel> Wert auf die Abbildungen gelegt wird; 2/3 des Threads scheinen sich mit> Footprints auseinanderzusetzen. Da ich weiß, wie ein 0603er oder ein> MSOP10 aussieht, reicht mir die Angabe des FP im Klartext, also> KERKO_0402 oder KERKO_0603. Deshalb werde ich einfach weiße-1-pixel-gifs> als FP benutzen. Damit sollte sich dann auch meine Problematik mit den> aufpoppenden Bildern erledigt haben.
Naja ich persönlich finde die Bilder sehr nützlich. Man sieht schon auf
den ersten Blick gleich bildlich mit was man es zu tun hat. Aber wie
gesagt, die Bilder sind ja freiwillig - du musst sie nicht benutzen. Du
musst aber auch kein eigenes weisses Bild hochladen, wenn du ein
Footprint wählst der kein Bild hat, dann wird auch kein Bild in der
Tabelle angezeigt.
Stefan --- schrieb:> Also mehrere Preise brauche ich nicht; alternative Bauteile anderer> Hersteller könnte ich ggf. in den Kommentaren unterbringen, nur ist eben> die Preisangabe so wie bisher umgesetzt, eher auf den Reichelt-Besteller> ausgerichtet. Das soll nicht abwertend sein (!), sondern nur> verdeutlichen, dass andere Anwender auch andere Anforderungen haben :)> Bei der von mir vorgeschlagenen Erweiterung handelt es sich im Grunde> genommen ja auch nur um 3 neue Datenbankfelder und Minimalarithmetik.> Jedoch geben viele Anbieter den Preis bezogen auf 100 an. Und zu> vermerken, ab welcher Stückzahl der genannte Preis gilt, ist immer> hilfreich, da Mouser, Farnell, Digikey, Schukat und eigentlich alle> außer Reichelt mit Staffelpreisen arbeiten.
Jo aber ich denke wenn wir jetzt noch die zusätzlichen Felder einbauen
wird früher oder später auch der Wunsch kommen, pro Lieferanten mehrere
Preise (für unterschiedliche Stückzahlen) eingeben zu können. Ausserdem
macht es das ganze viel professioneller. Wer weiss, vielleicht habe ich
später mal eine eigene kleine Firma, und dann möchte ich auch ein
"richtiges" Lagerverwaltungssystem haben :-D
> Btw: kann man eigentlich einstellen, dass der Preis in Cent angegeben> wird ? 0.0011 Euro liest sich einfach bescheiden. Da muss ich immer> erst lange nachdenken, bevor ich weiß, was das Bauteil wirklich kostet> ;)
Bisher noch nicht. Aber könnte man ja noch einbauen.
Stefan --- schrieb:> Eine Log-Tabelle für abgebuchte Baugruppen, mit Korrekturmöglichkeit,> halte ich für sehr wichtig und würde für die Implementierung auch> bezahlen.
Ich habe es in unsere ToDo-Liste geschrieben, aber es wird wohl schon
ein Weilchen dauern bis das implementiert ist ;-)
Stefan --- schrieb:> Stört mich auch sehr. Ich habe die V2.2 installiert, bei der diese> Funktion leider nicht vorhanden ist. Ist dieser Patch nie eingeflossen ?
Der Upload aller möglichen Dateien wird eh noch umgebaut, da tut sich
also schon noch was. Bezüglich Version: Du solltest dir jeweils die
neuste per SVN herunterladen, die Archive sind nicht sehr aktuell:
http://code.google.com/p/part-db/source/checkout
> Ist der Footprint noch nicht vorhanden, wird er direkt neu angelegt und> dann dem Bauteil zugewiesen. Verstehst du wie ich meine? Oder habe ich> dich irgendwie falsch verstanden?
Hallo,
du hattest mich schon richtig verstanden. Da diese Felder nicht
bezeichnet waren und die Zuordnung mir als nicht eindeutig erschien,
habe ich erst einmal nichts damit probiert. Aber vielen Dank für die
Info, das wird es in Zukunft einfacher machen.
> wenn du ein Footprint wählst der kein Bild hat, dann wird auch kein Bild in> der Tabelle angezeigt.
Funktioniert - bin zufrieden, vielen Dank !
> die Archive sind nicht sehr aktuell:> http://code.google.com/p/part-db/source/checkout
Damit bin ich dann doch überfordert :(
im Terminal eingeben, dann wird die neuste Version nach ~/part-db/
heruntergeladen. Eventuell musst du erst noch das Paket "subversion"
installieren. Bei Debian oder Ubuntu mit
1
sudo apt-get install subversion
Bei Windows weiss ich grad nicht wie das geht, müsstest mal nach einem
SVN Client für Windows suchen.
> Was für ein Server hast du? Linux? Windows?
Im Moment läuft das auf irgendeinem Webspace; da hab' ich leider keinen
Konsolenzugriff. Ich muss mal bei uns auf dem lokalen Server eine VM mit
Linux einrichten und die DB dort einspielen.
Sollten nicht im Interesse aller die nicht an der Entwicklung beteiligt
sin von Zeit zu Zeit mal Archive aktualisiert werden ?
Stefan --- schrieb:>> Was für ein Server hast du? Linux? Windows?>> Im Moment läuft das auf irgendeinem Webspace; da hab' ich leider keinen> Konsolenzugriff. Ich muss mal bei uns auf dem lokalen Server eine VM mit> Linux einrichten und die DB dort einspielen.
Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen,
und diese Dateien dann auf den Webspace hochladen.
> Sollten nicht im Interesse aller die nicht an der Entwicklung beteiligt> sin von Zeit zu Zeit mal Archive aktualisiert werden ?
Ja wäre nicht schlecht, aber das geht halt gerne ein bisschen vergessen
:-) Wobei ich jetzt aber gar nicht weiss wie alt das letzte Archiv
eigentlich ist. In unserer ToDo-Liste steht aber auch schon eine
Updatemöglichkeit direkt aus Part-DB heraus, das wär dann das
Non-Plus-Ultra wenn das was wird ;-)
Es stehen einige schöne Dinge in unserer ToDo-Liste, aber wir können
halt auch nicht zaubern ;-)
> Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen,> und diese Dateien dann auf den Webspace hochladen.
Genau das habe ich eben nicht hin bekommen ...
Die letzte Version ist vom 12. Juni, wenn ich mich recht erinnere.
Danke für die Hilfestellung !
Stefan --- schrieb:>> Dann kannst du auch bei dir lokal eine Kopie aus dem SVN herunterladen,>> und diese Dateien dann auf den Webspace hochladen.> Genau das habe ich eben nicht hin bekommen ...
Wo liegt denn das Problem? Für Windows müsstest du halt mal schauen was
es da für SVN-Clients gibt. Mit einem gescheiten Programm sollte es
eigentlich keine grosse Sache sein part-db aus dem SVN zu beziehen.
> Die letzte Version ist vom 12. Juni, wenn ich mich recht erinnere.
Okay, das geht ja noch. Aber auch seit dem 12. Juni hat sich schon
wieder einiges getan.
> Danke für die Hilfestellung !
Kein Problem ;-)
@Udo Neist
Ich habe mir dein branch mal angeschaut. Scheint wirklich nicht so
kompliziert zu sein wie ich mir das vorgestellt habt. Im Grunde genommen
trennt man ja einfach html und php.
Was ich aber noch nicht verstanden habe: Ist es nicht auch der Sinn von
Templates, dass man für die gleiche Seite mehrere (verschiedene) *.tmpl
Dateien erstellen kann, um dann eben ein anderes "Design" zu erreichen?
Oder soll es nur ein einziges Template geben?
Falls es mehrere Templates geben soll, sollte man doch im Ordner
templates/ noch Unterordner für die verschiedenen Templates erstellen
oder?
Im Ordner /class/vlib/ sind keine part-db spezifischen Dinge drin, das
ist so unverändert "aus dem Internet heruntergeladen" nehme ich an? Geht
uns quasi also überhaupt nichts an was da drin ist?
Und was schätzt du, wie lange brauchtst du noch bis du fertig bist?
Also ich wäre dafür, dass wir dann den branch in den trunk übernehmen,
sobald du fertig bist. Ich weiss momentan auch gar nicht wo ich meine
Änderungen einpflegen soll, die ich noch gemacht habe.
Übrigens habe ich mal die JavaScript Dialoge wie confirm() und alert()
angeschaut. Die sind ja extrem einfach anzuwenden, damit könnte man
locker unsere komischen Weiterleitungen ersetzen.
Kleines Beispiel: Dieser Button
<input type="submit" name="delete_file" value="Löschen" onclick="return confirm('Achtung!\nDas Backup wird unwiederruflich gelöscht.')">
Und schon hat man eine Sicherheitsabfrage per JavaScript Dialog drin ;-)
Von mir aus kann ich das überall noch einbauen. Aber ich warte erstmal
noch ab wie es mit dem branch von Udo weitergeht.
> Ich habe mir dein branch mal angeschaut. Scheint wirklich nicht so> kompliziert zu sein wie ich mir das vorgestellt habt. Im Grunde genommen> trennt man ja einfach html und php.
Jau, ist eigentlich sehr simple. Vorallem sieht man dann den Code mal
wieder und muss sich nicht durch HTML-Wust durchwühlen ;-)
> Was ich aber noch nicht verstanden habe: Ist es nicht auch der Sinn von> Templates, dass man für die gleiche Seite mehrere (verschiedene) *.tmpl> Dateien erstellen kann, um dann eben ein anderes "Design" zu erreichen?> Oder soll es nur ein einziges Template geben?> Falls es mehrere Templates geben soll, sollte man doch im Ordner> templates/ noch Unterordner für die verschiedenen Templates erstellen> oder?
Man kann es so machen, aber Sinn von dieser Templates ist eigentlich nur
die Trennung von Code und Darstellung. Das Design würde ich ganz CSS
überlassen. Die Basis stellt standard/partdb.css dar. Alle Varianten
werden zusätzlich geladen und ergänzen/überschreiben die vorherigen
Definitionen. Wenn es gewünscht wäre, könnte man neben dem CSS auch noch
die Templates freigeben und würde dann analog zum CSS ein
Unterverzeichnis in templates/ anlegen.
> Im Ordner /class/vlib/ sind keine part-db spezifischen Dinge drin, das> ist so unverändert "aus dem Internet heruntergeladen" nehme ich an? Geht> uns quasi also überhaupt nichts an was da drin ist?
Da ist die Template-Engine drin. Zusätzlich noch vlibDate und
vlibMimeMail, die hier zwar nicht gebraucht werden, aber zu der Engine
gehören. Gibts so im Paket.
> Und was schätzt du, wie lange brauchtst du noch bis du fertig bist?> Also ich wäre dafür, dass wir dann den branch in den trunk übernehmen,> sobald du fertig bist. Ich weiss momentan auch gar nicht wo ich meine> Änderungen einpflegen soll, die ich noch gemacht habe.
Ich werde diese Woche im Büro noch die Änderungen machen. Könnte bis
Ende der Woche klappen, je nach Arbeit.
> Übrigens habe ich mal die JavaScript Dialoge wie confirm() und alert()> angeschaut. Die sind ja extrem einfach anzuwenden, damit könnte man> locker unsere komischen Weiterleitungen ersetzen.>> Kleines Beispiel: Dieser Button>
> onclick="return confirm('Achtung!\nDas Backup wird unwiederruflich
3
> gelöscht.')">
> Und schon hat man eine Sicherheitsabfrage per JavaScript Dialog drin ;-)
Eventuell einfach ein div-Element bauen, das die Dialoge aufnimmt. So
können wir die nicht immer gerade hübschen Dialoge der Browser umgehen.
Wäre dann auch für die PopUps nutzbar. Nur lasse ich das erstmal weg.
Die Änderungen dazu würden erstmal stören.
> Von mir aus kann ich das überall noch einbauen. Aber ich warte erstmal> noch ab wie es mit dem branch von Udo weitergeht.
Naja, muss so einiges noch aufräumen. Hier mal den HTML-Code außerhalb
von PHP, dort mal mit print() ausgegeben. Manche Routinen rufen sich
selbst wieder auf und ich muss da erstmal die Ausgabe abfangen und
aufarbeiten. Erst wenn ich alles gemacht habe, kann ich diese Dinge
umbauen. Was ich in dem Zug auch noch machen werde, ist die Aufteilung
der lib.php in verschiedene Bibliotheken. Wird dann übersichtlicher :)
Udo Neist schrieb:> Man kann es so machen, aber Sinn von dieser Templates ist eigentlich nur> die Trennung von Code und Darstellung. Das Design würde ich ganz CSS> überlassen. Die Basis stellt standard/partdb.css dar. Alle Varianten> werden zusätzlich geladen und ergänzen/überschreiben die vorherigen> Definitionen. Wenn es gewünscht wäre, könnte man neben dem CSS auch noch> die Templates freigeben und würde dann analog zum CSS ein> Unterverzeichnis in templates/ anlegen.
OK. Aber wenn es theoretisch möglich ist, durch vlib verschiedene
Templates zu erstellen, würde es vielleicht auch nicht schaden wenn man
das soweit schonmal vorbereiten würde. Also einfach das, was jetzt im
template/ Ordner liegt, einfach noch eine Ebene tiefer schieben, also
z.B. template/standard/. Sollte ja nicht weiter stören, würde aber eine
spätere Nachrüstung von zusätzlichen Templates erleichtern.
> Eventuell einfach ein div-Element bauen, das die Dialoge aufnimmt. So> können wir die nicht immer gerade hübschen Dialoge der Browser umgehen.> Wäre dann auch für die PopUps nutzbar. Nur lasse ich das erstmal weg.> Die Änderungen dazu würden erstmal stören.
Stimmt, im IE sehen die Dialoge nicht gerade hübsch aus. Im FF finde ich
sie aber eigentlich sehr schön.
> Naja, muss so einiges noch aufräumen. Hier mal den HTML-Code außerhalb> von PHP, dort mal mit print() ausgegeben. Manche Routinen rufen sich> selbst wieder auf und ich muss da erstmal die Ausgabe abfangen und> aufarbeiten. Erst wenn ich alles gemacht habe, kann ich diese Dinge> umbauen. Was ich in dem Zug auch noch machen werde, ist die Aufteilung> der lib.php in verschiedene Bibliotheken. Wird dann übersichtlicher :)
Daran habe ich auch schon gedacht, die lib.php ist echt schon ziemlich
umfangreich. Auch würde ich vielleicht noch ein paar Dateinamen ändern,
z.B. config_page.php ist ein etwas komischer Name für diese Seite.
Urban B. schrieb:> OK. Aber wenn es theoretisch möglich ist, durch vlib verschiedene> Templates zu erstellen, würde es vielleicht auch nicht schaden wenn man> das soweit schonmal vorbereiten würde. Also einfach das, was jetzt im> template/ Ordner liegt, einfach noch eine Ebene tiefer schieben, also> z.B. template/standard/. Sollte ja nicht weiter stören, würde aber eine> spätere Nachrüstung von zusätzlichen Templates erleichtern.
Kann ich machen, ist ja kein großes Thema. Ich werde dann aber die
Variable $css in $theme umbenennen.
> Stimmt, im IE sehen die Dialoge nicht gerade hübsch aus. Im FF finde ich> sie aber eigentlich sehr schön.
Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps
ändern sollte. Auch gleich mal daran denken, die Frame-Sache
umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und
irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es
sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben
(Suchbegriff: Ajax)
> Daran habe ich auch schon gedacht, die lib.php ist echt schon ziemlich> umfangreich. Auch würde ich vielleicht noch ein paar Dateinamen ändern,> z.B. config_page.php ist ein etwas komischer Name für diese Seite.
setup_db.php und setup_system.php?
Udo Neist schrieb:> Kann ich machen, ist ja kein großes Thema. Ich werde dann aber die> Variable $css in $theme umbenennen.
Wie würdest du die Idee finden, wenn wir die CSS-Dateien gleich in die
jeweiligen template-Ordner verschieben würden? Dann hat quasi jedes
Template (falls es mal noch andere geben wird) seine eigenen
CSS-Dateien. So wäre man dann relativ flexibel was die Gestaltung
angeht.
Muss ja nicht sein dass es mal noch andere Templates gibt. Aber ich bin
da jeweils der Meinung man sollte sich alle Möglichkeiten offenhalten.
Was im jetztigen Moment nur eine kleine Änderung bedeutet, kann später
mal vier Arbeit geben das umzurüsten.
Udo Neist schrieb:> Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps> ändern sollte. Auch gleich mal daran denken, die Frame-Sache> umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und> irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es> sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben> (Suchbegriff: Ajax)
Kann ich so mal in die ToDO-Liste aufnehmen.
Udo Neist schrieb:> setup_db.php und setup_system.php?
Ja, oder noch näher ans Menü angelehnt config_db.php und
config_system.php
Vielleicht könnte man das auch für die anderen Dateien so übernehmen,
also edit_footprints.php, edit_supplier.php usw.
Urban B. schrieb:> Wie würdest du die Idee finden, wenn wir die CSS-Dateien gleich in die> jeweiligen template-Ordner verschieben würden? Dann hat quasi jedes> Template (falls es mal noch andere geben wird) seine eigenen> CSS-Dateien. So wäre man dann relativ flexibel was die Gestaltung> angeht.>> Muss ja nicht sein dass es mal noch andere Templates gibt. Aber ich bin> da jeweils der Meinung man sollte sich alle Möglichkeiten offenhalten.> Was im jetztigen Moment nur eine kleine Änderung bedeutet, kann später> mal vier Arbeit geben das umzurüsten.
Ich habe es derzeit so umgesetzt, das CSS und Templates getrennt sind.
Aber ich kann prüfen, ob es in den Templates auch eine partdb.css gibt
und die zusätzlich zum Standard laden. Alternativ wird die
standardmäßige CSS-Datei in die Theme-CSS integriert und man lädt in der
vlib_head.tmpl nur noch ein CSS.
>> Am besten mal in die ToDo-Liste aufnehmen, das man die Dialoge/PopUps>> ändern sollte. Auch gleich mal daran denken, die Frame-Sache>> umzustellen, da diese ja schon seit Jahren als Auslaufmodell gelten und>> irgendwann nicht mehr unterstützt werden. Per XMLHttpRequest lässt es>> sich leichter arbeiten (GET, POST) und in ein DIV-Element reinschreiben>> (Suchbegriff: Ajax)>> Kann ich so mal in die ToDO-Liste aufnehmen.
:-)
>> setup_db.php und setup_system.php?>> Ja, oder noch näher ans Menü angelehnt config_db.php und> config_system.php> Vielleicht könnte man das auch für die anderen Dateien so übernehmen,> also edit_footprints.php, edit_supplier.php usw.
config_db.php existiert bereits. Darin hab ich die
Datenbankkonfiguration ausgelagert, um schneller zwischen verschiedenen
Rechner/Datenbanken umswitchen zu können (entwickel ja nicht nur hier zu
Hause ;-) ).
Udo Neist schrieb:> Ich habe es derzeit so umgesetzt, das CSS und Templates getrennt sind.> Aber ich kann prüfen, ob es in den Templates auch eine partdb.css gibt> und die zusätzlich zum Standard laden. Alternativ wird die> standardmäßige CSS-Datei in die Theme-CSS integriert und man lädt in der> vlib_head.tmpl nur noch ein CSS.
Oder man macht es wie bisher, aber man soll dann in der Konfiguration
Template und CSS separat, voneinander unabhängig wählen können. Zuerst
dachte ich man soll einfach Template und CSS gleichnamig machen um sie
so quasi miteinander verknüpfen zu können, aber das ist auch nichts weil
es dann auch für jede CSS ein eigenes Template geben muss...
Udo Neist schrieb:> config_db.php existiert bereits. Darin hab ich die> Datenbankkonfiguration ausgelagert, um schneller zwischen verschiedenen> Rechner/Datenbanken umswitchen zu können (entwickel ja nicht nur hier zu> Hause ;-) ).
Ah ja daran habe ich gar nicht gedacht dass es die Datei schon gibt.
Allerdings wenn man sich überlegt dass der grösste Teil der
Konfiguration eh in die Datenbank ausgelagert werden soll, würde
schlussendlich eh nur noch die Datenbankkonfiguration übrig bleiben, und
die könnte man ja in der config.php belassen.
Urban B. schrieb:> Oder man macht es wie bisher, aber man soll dann in der Konfiguration> Template und CSS separat, voneinander unabhängig wählen können. Zuerst> dachte ich man soll einfach Template und CSS gleichnamig machen um sie> so quasi miteinander verknüpfen zu können, aber das ist auch nichts weil> es dann auch für jede CSS ein eigenes Template geben muss...
Ich habe jetzt CSS und Template zusammengeführt. Das Thema "Greenway"
setzt das Thema "standard" vorraus. Wenn man das CSS eines Themas
anpassen will, so sollte man jetzt ein neues Thema erstellen (kopieren
des alten). Ein Alternativ-CSS geht derzeit nicht.
> Ah ja daran habe ich gar nicht gedacht dass es die Datei schon gibt.> Allerdings wenn man sich überlegt dass der grösste Teil der> Konfiguration eh in die Datenbank ausgelagert werden soll, würde> schlussendlich eh nur noch die Datenbankkonfiguration übrig bleiben, und> die könnte man ja in der config.php belassen.
Ich würde nicht alles in die Datenbank auslagern, sondern eine
Basisinstallation machen. Damit ist das System immer lauffähig und zudem
hat man die Defaults für einen neuen User auch gleich :)
PS: Revision 486 ist zwar hochgeladen, aber irgendwas ist schief
gelaufen. Da fehlen einige Dateien :(
Udo Neist schrieb:> Ich würde nicht alles in die Datenbank auslagern, sondern eine> Basisinstallation machen. Damit ist das System immer lauffähig und zudem> hat man die Defaults für einen neuen User auch gleich :)
Also wenn ich mir die config.php (aus dem trunk) so anschaue, sehe ich
da ausser dem Datenbankzeugs und dem Zeichensatz keine wichtigen
Einstellungen. Die Seite würde auch ohne diesen ganzen Kram laufen, also
auch wenn die Einstellungen in der Datenbank fehlen würden. Viele von
diesen Einstellungen würden vor allem auch benutzerbezogen Sinn machen,
also müssten sie sowieso aus der config.php raus. Und defaults können
direkt bei der Auswertung gesetzt werden, so ist es jetzt ja
(teilweise?) auch schon gemacht. Ist eine Einstellung in der config.php
nicht vorhanden, wird einfach ein default-Wert genommen. Theoretisch
könnte man dazu sogar noch eine zusätzliche Datei defaults.php anlegen,
in der die Standardwerte stehen (und da drin hat der User nichts zu
suchen).
Bei der Benutzerverwaltung würde es Sinn machen wenn man den Gruppen
alle benutzerspezifischen Einstellungen zuordnen kann. Wird dann ein
neuer Benutzer angelegt, soll man bei jeder benutzerspezifischen
Einstellung wählen können ob die Einstellung von der entsprechenden
Gruppe übernommen werden soll, oder ob man die Einstellung manuell
setzen möchte.
Urban B. schrieb:> Ist eine Einstellung in der config.php> nicht vorhanden, wird einfach ein default-Wert genommen. Theoretisch> könnte man dazu sogar noch eine zusätzliche Datei defaults.php anlegen,> in der die Standardwerte stehen (und da drin hat der User nichts zu> suchen).
In einer defaults.php könnten wir alle Überprüfungen der Einstellungen
einbauen und mit den gültigen Möglichkeiten vergleichen. Alles was nicht
passt oder fehlt wird dort entsprechend gesetzt.
> Bei der Benutzerverwaltung würde es Sinn machen wenn man den Gruppen> alle benutzerspezifischen Einstellungen zuordnen kann. Wird dann ein> neuer Benutzer angelegt, soll man bei jeder benutzerspezifischen> Einstellung wählen können ob die Einstellung von der entsprechenden> Gruppe übernommen werden soll, oder ob man die Einstellung manuell> setzen möchte.
Was Gruppen- und was Userrechte sein sollen, das müssen wir eh noch
zusammentragen. Dann erst sehen wir, was über die config.php geladen
wird und was wir über die Benutzerverwaltung an Variablen setzen müssen.
Solange macht es keinen Sinn, über diese Baustelle zu reden.
Udo Neist schrieb:> In einer defaults.php könnten wir alle Überprüfungen der Einstellungen> einbauen und mit den gültigen Möglichkeiten vergleichen. Alles was nicht> passt oder fehlt wird dort entsprechend gesetzt.
Klingt gut. Aber ich frage mich gerade was da drin dann noch landet wenn
eh fast alle Einstellungen in der Datenbank stehen. Diese Einstellungen
werden dann ja eh über eine Funktion, so wie jetzt in der lib.php, an
einer zentralen Stelle aus der Datenbank gelesen. Würde in der Datenbank
was fehlerhaftes stehen, würde dies gleich in dieser Funktion drin
korrigiert werden.
Udo Neist schrieb:> Was Gruppen- und was Userrechte sein sollen, das müssen wir eh noch> zusammentragen. Dann erst sehen wir, was über die config.php geladen> wird und was wir über die Benutzerverwaltung an Variablen setzen müssen.> Solange macht es keinen Sinn, über diese Baustelle zu reden.
Ja, ich wollte nur mitteilen, dass ich es als wenig sinnvoll betrachte
die Konfiguration auf zwei verschiedene Dateien aufzuteilen, wenn es
später eh nur noch eine handvoll hardgecodete Einstellungen geben wird.
Dann wäre die config_db.php wieder frei für die Einstellungsseite der
Datenbank :-D
Revision 487 mit den obigen Änderungen und einigen weiteren Umstellungen
auf Templates hochgeladen :-) Ich werde noch die IC-Logos und Footprints
heute umstellen. Dann ist für heute Feierabend.
Letztes Update für heute ;-) Revision 488 mit den geänderten
footprints.php und iclogos.php. Bei letzterem würde ich auch eine
Übertragung in die Datenbank empfehlen, denn dann könnte man mehrere
Dinge machen:
- Ausgabe der Logos in einer Schleife anstelle einer statischen Datei
- Mehrere Logos einer Firma in einer Zeile ausgeben
- Zuordnung von Bauteilen zu einer Firma, insbesondere wenn ganz
bestimmte Eigenschaften dieses Bauteils wichtig sind und kein 2nd Source
gewünscht ist (Projektverwaltung)
Ab morgen werde ich die restlichen Dateien auf Templates umstellen und
dann die Funktionen noch bereinigen. Ich werde abends das Ergebnis
hochladen und hier kurz beschreiben, was geändert wurde.
Ja, das wäre keine schlechte Idee mit den Herstellerlogos. Eigentlich
könnte man doch da mehr oder weniger das Footprintsystem einfach
kopieren oder?
Es soll nicht nur auf die Hersteller beschränkt sein, von denen wir die
Logos haben. Es sollen auch eigene Hersteller hinzugefügt werden können.
Meine Rede :-)
Noch ein paar Ideen zu den IC-Logos:
- Webseite
- Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr
existiert
Daneben können wir doch noch die Logos und Footprints mit einer
Versionsnummer versehen und per Updatefunktion holen. Die Infos kann man
in der Datenbank unterbringen. Die Webseite selbst gibt alle Versionen
in einer Liste aus und ein Script lädt aufsteigend bis zur letzten
Version alle Updates. Das lässt sich eventuell auf der Konsole per
cronjob automatisieren.
Udo Neist schrieb:> Meine Rede :-)>> Noch ein paar Ideen zu den IC-Logos:> - Webseite> - Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr> existiert
Hab daraus mal "Issue 26" gestrickt.
Udo Neist schrieb:> Daneben können wir doch noch die Logos und Footprints mit einer> Versionsnummer versehen und per Updatefunktion holen. Die Infos kann man> in der Datenbank unterbringen. Die Webseite selbst gibt alle Versionen> in einer Liste aus und ein Script lädt aufsteigend bis zur letzten> Version alle Updates. Das lässt sich eventuell auf der Konsole per> cronjob automatisieren.
Das versteh ich jetzt nicht ;-)
Die Bilder werden ja durch das SVN stets aktualisiert?
Und wozu soll eine Versionsnummer gut sein?
Urban B. schrieb:>> Noch ein paar Ideen zu den IC-Logos:>> - Webseite>> - Info zu welcher Firma die Firma jetzt gehört oder ob sie nicht mehr>> existiert>> Hab daraus mal "Issue 26" gestrickt.
:-)
> Das versteh ich jetzt nicht ;-)> Die Bilder werden ja durch das SVN stets aktualisiert?> Und wozu soll eine Versionsnummer gut sein?SVN ist gut, aber nicht zu allem zu gebrauchen. In der Praxis wird man
einmal installieren und über eine Update-Funktion auf dem Laufenden
bleiben wollen. Hier sind die meisten doch eher konservativ und wollen
nur von uns freigebene Versionen haben. Das SVN gibt aber nur die
Entwicklerversion her, das ist denen zu unsicher. Mit den Updates von
Script, Logo und Footprints in getrennten Aktionen haben wir zudem auch
noch Vorteile bei der Bandbreite. Und ob wir nur Script oder auch noch
die Grafiken als weiteres Update anbieten, dürfte doch kein Problem
sein. Die Versionsnummer ist nur für den Abgleich gedacht. Kann ja auch
einfach nur das Releasedatum des Paketes sein. Zudem können wir ja auch
ein Release aus der Datenbank herausnehmen und ein Downgrade
veranlassen.
So in etwa werden auch AddOns bei diversen Softwarepaketen gehandhabt
:-)
Ah, so meinst du das. Das würde dann zum Issue 4 gehören
(http://code.google.com/p/part-db/issues/detail?id=4).
Ich würde dann schon eher nur das Releasedatum der Pakete als
Versionskontrolle nehmen, jedes Bild / jede Datei einzeln finde ich
übertrieben.
Genau. Es ist Teil des Updates. Ich meinte aber nicht das jedes einzelne
Bild upgedatet wird. Wäre irrsinnig. Ne, wenn ein Update bei den Logos
oder Footprints gemacht werden soll, dann werden alle neuen Grafiken in
ein (!) Update-Archiv gepackt. So gibt es entweder zwei Updatevarianten
(Script und Grafiken) oder drei (Script, Logos, Footprints). Damit man
aber weiß, welche Grafikpakete installiert sind, sollen diese Pakete
eine unabhängige Nummer bekommen. Ein Update des Scripts erzwingt dann
aber auch eine Aktualisierung der Grafiken.
Ein Beispiel:
Installiert sind Script R488, Logo R3, Footprints R3. Es stehen Script
R495, Logo R5 und Footprints R8 zur Verfügung. Das Script-Update holt
R495, die Logos R4 bis R5 und die Footprints R4 bis R8. Würde man nur
die Grafiken updaten, würden R4 bis R5 bzw. R4 bis R8 geladen.
Ich hoffe, es ist verständlich geworden :)
Naja aber da würde ich dann nur ein einziges Update anbieten, und zwar
gleich für alles zusammen. Ich finde es macht keinen Sinn nur ein Teil
von Part-DB zu aktualisieren. Das macht es doch nur unnötig kompliziert.
Ist ja nur ein Vorschlag von mir :-) Ich entscheide ja nicht, was ihr zu
machen habt. Ich bin ja der Neuling in eurem Projekt.
Ich hab noch einen Fehler entdeckt. Die Funktion get_svn_revision()
läuft anscheinend nach der Änderung vor einigen Tagen immer noch nicht
richtig. Ich teste gleich mal ein Bugfix aus.
Udo Neist schrieb:> Ist ja nur ein Vorschlag von mir :-) Ich entscheide ja nicht, was ihr zu> machen habt. Ich bin ja der Neuling in eurem Projekt.
Naja so viel länger bin ich auch nicht dabei ;-)
Bezüglich automatisches Update habe ich mir mal ein paar Gedanken
gemacht:
In einer Funktion wird eine Textdatei direkt von Google Code
heruntergeladen. In dieser Textdatei steht die Versionsnummer des
aktuellsten zur Verfügung stehenden Pakets, und die URL zum Paket. Ist
die Versionsnummer neuer als die installierte Version, wird das gepackte
Archiv heruntergeladen. Danach einfach per exec("gzip ...") entpackt und
alle veralteten Dateien werden mit den neuen überschrieben.
Stelle ich mir das zu einfach vor, oder wäre das so tatsächlich möglich?
gzip sollte eigentlich ziemlich jeder Hoster anbieten oder?
So etwa dachte ich mir das auch. Ob gzip auf jedem Server installiert
ist, kann ich nicht beurteilen. Man sollte vielleicht mehrere Archive
anbieten?
Mir fällt gerade noch was ein. Warum sind eigentlich die Grafiken im
Verzeichnis tools und nicht in img?
Das mit den Mouse-Over Footprints stört mich ehrlich gesagt auch etwas.
Vielleicht kann das das Mouse-Over durch einfache Links ersetzen?
Wenn das mit der Benutzerverwaltung fertig ist erübrigt sich ja eine
"einfache" Upgradefunktion, da ein normaler User damit dann ja nichts
mehr zu tun hat. Die Upgrades würden dann ja von den Entwicklern
eingepflegt nachdem diese getestet wurden.
Stefan schrieb:
> - Ich wünschte mir eine Art Log, das anzeigt, wann und wie viele einer> Baugruppe gebucht wurden. Dort könnte man eine Buchung -hoffentlich-> auch rückgängig machen, sofern man aus Versehen mal 'was Falsches> eingegeben hat.
Ja, das wäre praktisch.
Urban B. schrieb:
> Keine schlechte Idee, vorallem auch im Bezug auf die Benutzerverwaltung> die ja noch kommen soll. Dann könnten die "Admins" auch nachvollziehen> was andere Leute so in der Datenbank "rumfummeln" und können> Fehlbuchungen rückgängig machen. Würde ich als durchaus nützlich> betrachten.
Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und
Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.
Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird
(Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie
"Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.
Christian R. schrieb:> Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und> Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.> Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird> (Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie> "Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.
Es müssen ja nicht die eigentlichen Admins eingreifen, es könnten ja
auch Gruppenadmins geben, die das für ihren Bereich dürfen.
Aber was genau soll ein Gruppenadmin da dann machen?
Wenn ein User seinen Bestand 330-Ohm-Widerstände von 100 auf 50 ändert
oder seine Lagerfächer umstrukturiert ist das doch seine Sache, das
betrifft auch nur den User selber. Wenn ein User hingegen den
Conrad-Preis dieses Widerstandes ändert, sich dabei jedoch vertan hat,
dann betrifft das alle User ...und somit ist das ein Fall für die
Admins.
Udo Neist schrieb:> Mir fällt gerade noch was ein. Warum sind eigentlich die Grafiken im> Verzeichnis tools und nicht in img?
Das weiss ich auch nicht. Würde eigentlich Sinn machen, das nach img zu
verschieben...
Christian R. schrieb:> Wenn das mit der Benutzerverwaltung fertig ist erübrigt sich ja eine> "einfache" Upgradefunktion, da ein normaler User damit dann ja nichts> mehr zu tun hat. Die Upgrades würden dann ja von den Entwicklern> eingepflegt nachdem diese getestet wurden.
Naja die meisten Leute werden wohl ihre Lagerverwaltung auf ihrem
eigenen Server laufen lassen wollen, für diejenigen sind sie
Update-Pakete gedacht.
Christian R. schrieb:> Naja, die User hätten doch eh alle ihre eigenen Lagerplätze und> Stückzahlen, somit hätten die Admins damit ja garnichts zu tun.> Die Admins hätten ja nur damit was zu tun, was "global" benutzt wird> (Footprints, Datasheets, usw.), aber Benutzerspezifische Dinge wie> "Lagerort oder Stückzahl" ändert ja jeder User nur für sich selber.
Die Benutzerverwaltung soll (wie ich finde) in erster Linie dazu da
sein, dass man seine eigene Part-DB-Installation auch anderen Leuten
(Kumpels, Mitarbeiter, ...) zur Verfügung stellen kann. Und vor allem
für den (mehr oder weniger) professionellen Einsatz in einer (kleinen)
Firma ist es unverzichtbar, da sollen nunmal Einkäufer, Verkäufer,
Lagerist und Elektroniker unterschiedliche Rechte haben, und der
Lagerist soll nachvollziehen (und rückgängig machen) können, was die
anderen (falsch) gemacht haben :-)
Achso, dann habe ich das falsch verstanden.
Ich dachte dabei halt an myparts.info , wo eine große Datenbank von
vielen vielen Usern genutzt werden soll. Die meisten der User werden
vermutlich normale "Hobbyelektroniker" sein, welche keinen Server haben
und ein relativ kleines Lager.
Für die professionelle Anwendung sieht das natürlich wieder ganz anders
aus.
Japp. Wir müssen beide Fälle betrachten. Im Normalfall wird es also nur
eine Gruppe geben, in der auch nur ein User arbeitet (Standalone). Hier
brauchen wir keine Benutzerverwaltung. In einer Firma wird es
unterschiedliche Gruppen geben, die unterschiedliche Arbeiten tun
sollen. Das Lager bearbeitet nur Lager und kennt die Baugruppen nicht.
Auf unserem Server müssen wir quasi eine Firma nachbilden, in der es
nicht nur eine Gruppe mit verschiedenen Rechten gibt, sondern mehrere.
Wobei in einer Gruppe alle Personen mit gleichen Rechten und in einer
anderen verschiedene Rechte bzw. Rollen geben könnte.
Mir schwebt sowas wie folgt vor:
1
- Firma bzw. Projekt
2
-> Entwicklergruppe/Projekt bzw. Unterprojekt
3
-> Rolle (Lagerist, Einkäufer, Entwickler, Verkäufer etc.)
Dann gibt es aber noch den dritten Fall, für den ich extra myparts.info
registriert habe.
Das ist für "Normal-User", die sich eine Datenbank teilen.
Da ist eine Benutzerverwaltung ebenfalls erforderlich.
Geplant ist das ja so:
Ein User meldet sich an und kann dann auf die vorhandene Datenbank
zugreifen. Er sieht viele bereits angelegten Bauteile (samt Footprints,
Datenblätter, Preise,...) und braucht nur noch seine Lagerfächer
einzurichten und die Stückzahlen einzugeben. Solle er Bauteile haben
welche noch nicht angelegt sind gibt es entweder die Möglichkeit dass er
das Bauteil selber anlegen kann, oder dass er es auf eine Liste schreibt
und Moderatoren dieses dann anlegen. Das war noch nicht geklärt wie man
das dann handhaben will.
Auf jeden Fall hat das gegenüber der Einzelversion folgende Vorteile:
-Ein User benötigt keinen Webspace und auch keinen virtuellen Server
-Ein User erspart sich eine Menge Arbeit beim anlegen der Bauteile, der
Suche nach dem Datenblatt, Zuordnung der Footprints usw. , denn diese
sind größtenteils schon angelegt.
-Wenn ein User einen Preis aktualisiert profitieren alle User davon,
somit sind die Daten allgemein aktueller.
Revision 491: orderparts.php umgeschrieben. Infolge dessen auch die
lib.php angepasst. print_http_charset() wird nach dem Umschreiben
entfallen, da diese Funktion als Variable in vlib_head.tmpl steckt.
So, ein kleines Update für die Reihenfolge der Arbeit mit SVN:
Arbeitskopie mit dem Server abgleichen
1
svn up
Konflikte mit den Mitteln von SVN lösen und ggfs. in die eigene
Arbeitskopie einpflegen.
Backupdateien löschen (mein Editor ist Quanta+ und der legt Backups mit
der Tilde am Ende an)
1
find . -name "*~" -exec rm {} \;
Neue Dateien und Verzeichnisse aufnehmen
1
svn add * --force
Commit der Version mit COMMENT als Kommentar
1
svn commit -m "COMMENT"
Arbeitskopie mit dem Server abgleichen, um die Revision upzudaten. Gibt
sonst ein Konflikt bei einem weiteren commit.
@Christian R.
Ja, ich weiss dass diese Art von Benutzerverwaltung noch geplant ist.
Aber ich denke in erster Linie sollte es mal eine Benutzerverwaltung für
den Einsatz in einer kleinen Firma geben. Du musst etwas Geduld haben,
es dauert halt bis neue Features eingebaut werden ;-D
@Udo Neist
hmm jetzt hast du für das greenway-css extra ein neues Template erzeugt?
Eigentlich wollte ich das vermeiden weil es umso aufwändiger wird eine
Änderung einfliessen zu lassen... Deshalb dachte ich man sollte auch
mehrere CSS-Dateien zu einem Template zuordnen können, das würde die
Wartung einfacher machen.
Übrigens habe ich festgestellt, dass auf Win7 (IE und FF) das Suchfeld
nur gerade etwa halb so gross ist wie auf Linux (FF). Könnt ihr das auch
nachvollziehen?
Ich habe nämlich extra mal die Feldlänge ein bisschen reduziert damit
das Feld und der "Los"-Button noch nebeneinander Platz haben. Wenn es
jetzt aber auf Win7 einfach viel zu kurz ist, ist das auch nicht das was
ich erreichen wollte ;-)
Ich habe heute wiedermal ein bisschen um Part-DB herumstudiert. Zwei
Sachen haben mich beschäftigt:
Einerseits denke ich es wäre von (grossem) Vorteil, wenn wir auf
objektorientierte Programmierung umrüsten. Das würde das Ganze viel
übersichtlicher, weniger fehleranfällig und einfacher wartbar machen
(denke ich zumindest :-). Für die ganzen Klassen könnten wir gleich das
Verzeichnis class/ benutzen, dass Udo für die vlib angelegt hat. Dann
könnten wir unsere lib.php durch folgende Dateien ersetzen:
1
class/footprint.php
2
class/storeloc.php
3
class/supplier.php
4
usw.
Und dann habe ich mir noch ein paar Gedanken zur Benutzerverwaltung
gemacht. Aus den Gedanken heraus sind dann die zwei Tabellen im Anhang
entstanden.
Für die Rechte habe ich mir überlegt, wir machen das ähnlich wie bei den
Unix-Dateirechten. Diese sind aber eher nicht passend genug für unseren
Einsatz um sie einfach 1:1 zu übernehmen. Stattdessen dachte ich, es
soll statt der drei Attributen (Lesen, Schreiben, Ausführen) diese sechs
Attribute geben:
1
- Erben von übergeordnetem Element (schliesst die nachfolgenden Attribute aus)
2
- Betrachten
3
- Bearbeiten
4
- Erstellen
5
- Löschen
6
- Verschieben
Mit diesen Attributen könnten wir schon sehr viel erreichen. Dort wo es
nicht genügt und spezielle Attribute notwendig sind (oder eine feinere
Unterteilung möglich sein soll) (wie z.B. bei den "perms_parts_*")
verwendet man halt für jedes einzelne Element eine Datenbankspalte.
Ich finde es wichtig, dass man das Attribut "Erben" einstellen kann. So
kann man einer Gruppe die Rechte zuteilen, und jeder Benutzer dieser
Gruppe erhält automatisch die selben Rechte (sofern "Erben" eingestellt
ist).
Diese Attribute könnten wir wie beim Unix-Rechtesystem einfach als
Integer in der Datenbank abspeichern. Wie es genau codiert werden soll
(Reihenfolge) habe ich noch nicht festgelegt. Im Anhang habe ich noch
den Wert "-1" für das Attribut "Erben" und "255" für "vollumfängliche
Rechte" verwendet, ist aber erstmal uninteressant wofür das nun stehen
soll.
Für die Benutzerverwaltung für myparts.info habe ich mir überlegt, man
soll jedem Benutzer (bzw. Gruppe) die Tabellen für Baugruppen, Lagerorte
usw. zuordnen können. Dazu sind die "dataset_*" Einträge da. Für die
Kategorien, Lieferanten und Footprints wird es auf myparts.info
vermutlich nur ein solches Datenset für alle Benutzer geben
(Vollständigkeitshalber habe ich sie trotzdem mal als "variabel"
angenommen und in die Tabelle aufgenommen). Man könnte aber auch einer
Gruppe ein anderes Datenset zuweisen, dann teilen nur die User innerhalb
dieser Gruppe alle Datensätze.
Das Datenset sollte übrigens besser nur beim Anlegen eines Benutzers
zugewiesen werden. Wird nachträglich was verändert an diesen IDs, wird
es zu einem ziemlichen Durcheinander kommen.
Natürlich fehlt in meinen Überlegungen noch einiges (z.B. die Anpassung
der bestehenden Tabellen an das DatenSet-System). Vielleicht habe ich
sogar noch einen groben Überlegungsfehler gemacht, so dass das System
gar nicht so funktionieren kann wie ich es hier beschreibe.
Ich wäre froh wenn ihr euch das mal kurz (oder besser lange :-)
anschauen könntet und berichtet was ihr davon haltet.
mfg
EDIT: Die Gruppe "Administratoren" könnte man auch löschen. Würde ich
schöner finden :-) Der Benutzer "admin" braucht ja nicht unbedingt eine
Gruppe denke ich...
Urban B. schrieb:> Übrigens habe ich festgestellt, dass auf Win7 (IE und FF) das Suchfeld> nur gerade etwa halb so gross ist wie auf Linux (FF). Könnt ihr das auch> nachvollziehen?
Lag wohl daran dass die Anzahl Zeichen als Breite angegeben war. Die
Breitenangabe in Pixel soll da zuverlässiger sein (im Internet gelesen),
hab das nun mal so ins SVN geladen. Bei mir funktionierts jetzt
jedenfalls auf Win7 (FF / IE) und Linux (IE).
Bitte melden wenns bei jemanden nicht passt, dann machen wir das Feld
halt noch ein bisschen schmaler.
Die Aufteilung der lib.php sollte man schon angehen. Für den Anfang
würde ich die Teile der lib.php in ein neues Verzeichnis lib/
unterbringen und später die OO-Teile in die Klasse verschieben. Für die
Übergangszeit würde in der libs/xxx.php dann ein Wrapper für die
entsprechende Klasse existieren, bis dieser Aufruf dann aus allen
Bereichen auf OO umgestellt wurde. So haben wir einen Überblick über die
Umstellung.
Ich habe mich noch nicht mit der Datenbankstruktur befasst, daher kann
ich zur Benutzerverwaltung noch nichts konkretes beisteuern. Ich habe
bisher eine Hierachie genutzt, bei der Gruppen nur für die Eingrenzung
der Datensätze gedacht waren. Ob es sich lohnt, jeder Gruppe eigene
Tabelle(n) zu geben oder nur einfach pro Ebene eine Spalte mehr nimmt,
weiß ich nicht. Man könnte ja eine Arbeitsgruppe 1 mit Untergruppen 1, 2
und 3 haben, die ihren jeweiligen Bestand bearbeiten, aber die anderen
UG nur einsehen können. Das könnte man auch auf Arbeitsgruppen
ausweiten, so dass am Ende die nächst höhere Instanz alle Bereiche
unterhalb sehen kann. Das wäre eine Zuordnungstabelle für die
Arbeitsgruppen bzw. noch eine für die Hierachie und zwei Spalten in den
anderen Tabellen. Der Nutzer könnte innerhalb der Hierachie auch UGs aus
verschiedenen AGs angehören und beim Einloggen die passende UG wählen.
So in etwa funktioniert auch meine Chemiekalienverwaltung.
Hab noch keine weiteren Änderungen machen können. Wahrscheinlich kann
ich morgen die nächste Version hochladen.
Udo Neist schrieb:> Die Aufteilung der lib.php sollte man schon angehen. Für den Anfang> würde ich die Teile der lib.php in ein neues Verzeichnis lib/> unterbringen und später die OO-Teile in die Klasse verschieben. Für die> Übergangszeit würde in der libs/xxx.php dann ein Wrapper für die> entsprechende Klasse existieren, bis dieser Aufruf dann aus allen> Bereichen auf OO umgestellt wurde. So haben wir einen Überblick über die> Umstellung.
Naja ich weiss nicht ob es sinnvoll ist, jetzt noch eine Übergangslösung
anzugehen. Da würde ich lieber noch einen Moment warten und dann die
Umstellung auf OO gleich in einem Mal machen.
Udo Neist schrieb:> Ich habe mich noch nicht mit der Datenbankstruktur befasst, daher kann> ich zur Benutzerverwaltung noch nichts konkretes beisteuern. Ich habe> bisher eine Hierachie genutzt, bei der Gruppen nur für die Eingrenzung> der Datensätze gedacht waren. Ob es sich lohnt, jeder Gruppe eigene> Tabelle(n) zu geben oder nur einfach pro Ebene eine Spalte mehr nimmt,> weiß ich nicht.
Eigene Tabellen würde ich nicht machen, finde ich "unschön", dann
explodiert unsere Datenbank für myparts.info. Mit den Datensets dachte
ich einfach an eine zusätzliche Spalte in den bestehenden Tabellen, mit
der ID des Datensets, dem die Einträge angehören.
Ich denke, das was ich "Datenset" nenne ist mehr oder weniger das, was
du unter "Arbeitsgruppe" verstehst. Dass ein User auch mehreren
Datensets angehören kann (und dieses beim Einloggen wählt), daran dachte
ich bisher noch gar nicht. Würde eigentlich Sinn machen, da hast du
recht.
Wir müssen nur aufpassen, dass es durch die Datensets kein Durcheinander
gibt. Ein Bauteil muss dann z.B. nicht mehr nur die ID des Footprints
haben, sondern auch noch die ID des Datensets der entsprechenden
Footprint-Datensätzen. NACHTRAG: wobei, wenn die ID des Footprints ja
eindeutig ist, bräuchte es das gar nicht. Die zusätzliche Spalte in der
Footprint-Tabelle aber natürlich schon.
Es wird auf jeden Fall nicht ganz trivial :-D
Übrigens habe ich eine Seite gefunden, auf der es ziemlich coolen
Ajax/DHTML Kram gibt, auch unter der GPL Lizenz:
http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml
Viellecht können wir davon in Zukunft noch was gebrauchen (Sichworte:
Dateiupload-Dialog, Frames)
Urban B. schrieb:> Naja ich weiss nicht ob es sinnvoll ist, jetzt noch eine Übergangslösung> anzugehen. Da würde ich lieber noch einen Moment warten und dann die> Umstellung auf OO gleich in einem Mal machen.
Solange das in meinem Branch passiert, wäre das ja kein Problem. Erst
wenn die Umstellung komplett ist, würde das dann in die offizielle
Version einfliessen. Schliesslich müssen wir nicht alle Dinge im
Hauptzweig testen.
Udo Neist schrieb:> Solange das in meinem Branch passiert, wäre das ja kein Problem. Erst> wenn die Umstellung komplett ist, würde das dann in die offizielle> Version einfliessen. Schliesslich müssen wir nicht alle Dinge im> Hauptzweig testen.
Ja, das habe ich mir auch irgendwie so vorgestellt.
Stefan --- schrieb:> wenn ich mit TortoiseSVN auf http://part-db.googlecode.com/svn/trunk/> part-db> einen 'Fully Recursive' Checkout mache, bekomme ich folgende> Fehlermeldung:> URL 'http://part-db.googlecode.com/svn/trunk/%20part-db'; doesn't exist>> Hat jemand einen Tip für mich ?
Ja, den Befehl, den ich dir oben mal geschickt habe, hat nach dem
Internetpfad noch ein Leerzeichen, und dann kommt der lokale Ordner wo
das Zeug heruntergeladen werden soll. So gibt man das im Terminal ein
für den "svn checkout" Befehl. Ich denke mal bei TortoiseSVN brauchst du
den lokalen Pfad nicht, sondern nur die reine URL:
Also ich habe mal mit den Klassen angefangen. Vor allem an einer Klasse
für den Datenbankzugriff habe ich gearbeitet. Dazu habe ich was ziemlich
nützliches gefunden: http://www.peterkropff.de/site/php/pdo.htm
Diese Klasse macht es möglich, dass wir später auch ganz einfach andere
Datenbanken einsetzen können. Ausserdem gibt es einige Features, die SQL
Injections stark erschweren.
Alles in allem denke ich wäre das eine gute Basis für unsere
Datenbankklasse. Ein Nachteil ist halt, dass es mindestens PHP 5.1
voraussetzt. Da aber seit PHP5 das ganze OOP nochmal verbessert wurde,
denke ich es macht schon wegen den Klassen Sinn, dass wir nun halt PHP4
nicht mehr unterstützen.
Ich denke damit kann man leben. Wer hat denn heutzutage noch PHP4? ;-)
Was mir aber noch ein bisschen Kopfzerbrechen macht, sind
Datenbankeinträge mit Zeichen wie " oder ' im Namen. Irgendwo gibts
einfach immer Konflikte. Sei es beim JavaScript Menü oder bei HTML
Elementen.
Momentan werden alle Datenbankeinträge ja noch mit
mysql_real_escape_string() bearbeitet. Aber brauchts das eigentlich? So
wie ich die Klasse momentan programmier habe, kann man problemlos
Variablen mit " und ' im Namen in der Datenbank ablegen. Die werden dann
in phpmyadmin auch genau so angezeigt, also ohne Backslashes. Auch das
holen von diesen Daten ist kein Problem. Ein Problem gibts erst wenn so
ein String als HTML Code ausgegeben wird ;-)
Einfach diese beiden Zeichen verbieten finde ich aber nicht so toll, es
kann sicher mal vorkommen dass man solche Zeichen auch wirklich
verwenden will.
Weiss jemand wie man sowas am besten löst? Vor allem wenn beide von
diesen Zeichen erlaubt sind sehe ich ein Problem. Würde man nur eines
davon verbieten, könnte man gezielt das andere Zeichen abfangen, das
wäre wohl kein grosses Problem mehr.
Normalerweise reicht das Escapen bei den Zeichen aus, um diese zu
speichern. Wenn nicht, dann als HTML kodieren und übertragen. Als letzte
Möglichkeit wäre BLOB mit base64 oder ähnliches, nur das halte ich für
übertrieben.
Ich selbst habe mir auch eine eigene Datenbankklasse geschrieben. PDO
ist dort allerdings noch ein Dummy. Die SQL-Statements werden in meiner
Klasse in ein Array gespeichert und von der Klasse dann zusammen
gesetzt. Somit wären auch Prepared Statements möglich.
Ich glaub das mit dem escapen schaue ich mir später nochmal an, dafür
habe ich keine Nerven mehr...
Übrigens habe ich jetzt mal einen neuen Branch "kami89" angelegt für die
Entwicklung der Klassen. So könnt ihr schonmal schauen was ich gemacht
habe.
Diese Version dort ist soweit lauffähig dass die ganze Startseite
aufgebaut wird inklusive dem Kategorien-Menü. Mehr läuft noch nicht.
Damit diese Kleinigkeit aber überhaupt läuft, müsst ihr eure config.php
etwas abändern (siehe template) und per phpmyadmin die Spalte
'parentnode' von der Tabelle 'categories' in 'parent_id' umbenennen ;-)
(Grund siehe class/structural_db_element.php)
In dieser Datei habe ich ein paar Notizen gemacht die mir beim
programmieren einfach so eingefallen sind.
Die wichtigsten Dateien, an denen ich gearbeitet habe, sind system.php,
database.php, structural_db_element.php und category.php. Anhand dieser
Dateien solltet ihr erkennen wie ich mir das ganze System etwa
vorstelle.
In nav.php seht ihr wie die Klassen dann später verwendet werden.
Ich arbeite noch nicht lange mit OOP (und schon gar nicht mit php^^),
also meldet euch einfach wenn euch komische Sachen auffallen :-)
Ahja, wie die Datenbank-Klasse verwendet wird ist am Anfang vielleicht
etwas schwierig zu verstehen. Es ist jetzt halt nicht mehr nur ein
mysql_query() mit dem man auf die Datenbank zugreift (und jeder weiss
wie es geht).
In meiner Klasse gibt es jetzt zwei Funktionen: exec() für Anfragen, bei
denen man keine Datenrückgabe erwartet, und query() für Anfragen mit
Datenrückgabe (also eigentlich nur SELECT).
Da es schnell passiert ist, dass man die Rückgabewerte nicht ganz sauber
verarbeitet (z.B. 0 und false nicht getrennt behandelt), habe ich
vorgefertigte Funktionen für die wichtigsten Anfragen [insert(),
delete_record(), set_data_field(), ...] erstellt. Bei diesen muss man
dann nur noch auf false oder true prüfen, was anderes geben die nicht
zurück.
Ein Nachteil davon, dass in der Klasse alles mit prepared statements
erledigt wird, ist halt dass eine Abfrage nur noch Fragezeichen als
Platzhalter für Werte enthält, und die Werte selber dann separat
übergeben werden. Ich denke aber damit kann man leben (es kommt ja auch
der Sicherheit zugute).
Ich habe an der editpartsinfo.php und startup.php gearbeitet. Die
Autoren hab ich in eine authors.php reingeschoben, damit diese in einer
Schleife in startup.php verarbeitet werden können. Das mit den Themen
ist jetzt auch geändert. Man kann eine alternative CSS in css/ angeben,
wobei diese Datei nach dem entsprechenden Thema genannt werden muss,
z.B. Greenway -> css/Greenway.css. -> Revision 498
Deine Arbeiten an der Datenbankklasse übernehme ich später, wenn ich die
Templates fertig habe.
Ich habe mal auf die schnelle eine neues Install-Script (install.sh)
geschrieben, dass das Anlegen der Datenbank (in der Version 12)
vereinfacht. In dem SQL-Script habe ich die Befehle für die Erstellung
und Rechtevergabe eingebaut.
1
DROP DATABASE IF EXISTS `DB_NAME`;
2
CREATE DATABASE `DB_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
3
GRANT USAGE ON *.* TO `DB_NAME`@`DB_HOST` IDENTIFIED BY "DB_PASS";
4
GRANT ALL PRIVILEGES ON `DB_NAME`.`*` TO `DB_USER`@`DB_HOST`;
5
USE `DB_NAME`;
Die vier Platzhalter DB_NAME, DB_HOST, DB_USER und DB_PASS werden im
Script definiert und durch den sed (Stream EDitor) ersetzt und dann
MySQL übergeben. Das SQL-Script muss mit passenden Rechten aufgerufen
werden (Create, Grant). Es läuft unter Linux, dürfte aber auch auf
anderen Un*xen laufen.
Ist ja richtig viel los hier, sind denn alle in den Ferien? :-)
Ich könnte mal eure Hilfe gebrauchen. Und zwar will ich das neue System,
dass man einem Bauteil mehrere Lieferanten+Preise zuordnen kann, gleich
in die neuen Klassen einbauen.
Jetzt habe ich gedacht, für diese Einkaufsinformationen benutze ich
einfach die Tabelle "preise" und ändere dessen Name in "orderdetails" ab
(dann sind auch gleich alle Tabellennamen englisch^^). Da drin können
dann also pro Bauteil mehrere Einträge vorhanden sein.
Soweit, sogut. Nur muss ich jetzt mit einem Datenbankupdate die Spalten
"id_supplier" und "supplierpartnr" aus der Tabelle "parts" in diese (bis
jetzt) "preise" Tabelle hineinkriegen, ohne dass dabei etwas kaputt
geht.
Da bis jetzt in der Tabelle "preise" nur Einträge von Teilen existieren,
denen mal ein Preis zugewiesen wurde, müssen jetzt teilweise also auch
neue Einträge angelegt werden, für diejenigen Teile denen zwar ein
Lieferant, aber kein Preis zugewiesen wurde. Bei Teilen mit Preis muss
der bereits vorhandene Eintrag in "preise" einfach überschrieben werden.
Tja, nun kenne ich mich mit SQL leider etwas zu wenig aus um das
hinzukriegen. Kann mir da jemand auf die Sprünge helfen?
Die Spalten "id_supplier" und "supplierpartnr" existieren
interessanterweise schon in der Tabelle "preise", haben aber kein
Inhalt...Ob da wohl schonmal was vorbereitet wurde für genau das, was
ich jetzt machen will?
Zum Thema Klassen:
So langsam nimmt das Ganze Form an. Allerdings ist es gar nicht so
einfach, eine saubere objektorientierte Programmierung hinzubekommen
ohne dass die Performance stark leidet. Die ganzen (komplizierten)
SQL-Abfragen, wie sie bisher genutzt werden, sind halt performancemässig
einfach unschlagbar.
Ich möchte nun aber eigentlich viel mehr mit Objekten herumhantieren
statt nur mir den Daten (Arrays), die von den SQL-Abfragen zurückkommen.
Und da kommt halt schnell mal einiges an Overhead zusammen.
Naja, ich habs jetzt mal so gemacht dass die zeitintensiven Funktionen
wirklich erst bei Bedarf aufgerufen werden, und dann bis zum nächsten
Abrufen zwischengespeichert werden. Zum Beispiel die Attribute "level"
oder "full_path" von den Kategorien, Footprints usw. werden beim
Erzeugen eines neuen Objektes noch nicht zugewiesen. Erst wenn diese
Attribute das erste Mal abgerufen werden, dann werden sie "berechnet"
und auch gleich gespeichert bis zur nächsten Abfrage.
Damit kann man schon noch einiges an Zeit sparen, da häufig halt auch
ganze Objekt-Arrays erzeugt werden bei denen viele Objektattribute
nachher gar nie abgefragt werden.
Oder habt ihr da eine bessere Idee? Ich lad gleich nochmal die neuste
Version in meinen SVN Branch damit ihr meinen aktuellen Stand seht.
Ach ja, wofür ist eigentlich die Tabelle "pending_orders"? Ist die bei
euch auch leer? Die wird doch (noch?) gar nicht benutzt, oder?
Ich hab mal noch ein UML Diagramm erstellt damit man ein bisschen den
Überblick über die Klassen hat. Es entspricht nicht ganz dem aktuellen
Stand des Codes. Und die Klassen User und Group sind nicht komplett.
Die meisten Funktionen haben natürlich Argumente und Rückgabewerte, sind
aber einfach im Diagramm nicht eingezeichnet.
Ausserdem habe ich nur die Verbindungen für die Vererbungen
eingezeichnet.
P.S.
Ich wäre echt froh wenn mir noch jemand wegen dem Datenbankupdate für
die Lieferinformationen (siehe letzter Beitrag) helfen könnte.
HTMLTable? Das ganze wird doch über die vlibTemplate-Klasse abgebildet
und benötigt keine weitere Kapselung. Genauso kann die
build_html_tree()-Funktion durch eine einfach Array-Rückgabe ersetzt
werden, denn die LOOP-Funktion in den Templates braucht einfach ein
Array des Typs
1
$array[x]['name']
Dabei ist x eine Zählvariable (kann durch [] beim Aufbau ersetzt werden,
was ein Anhängen der Daten an das Array bewirkt) und 'name' der Name
(Schlüssel).
Ansonsten sieht das gut aus :-) Ich werde morgen mal wieder an die
Templates rangehen, dann können wir anfangen, beide Versionen zu
verschmelzen.
Udo Neist schrieb:> HTMLTable? Das ganze wird doch über die vlibTemplate-Klasse abgebildet> und benötigt keine weitere Kapselung. Genauso kann die> build_html_tree()-Funktion durch eine einfach Array-Rückgabe ersetzt> werden, denn die LOOP-Funktion in den Templates braucht einfach ein> Array des Typs> $array[x]['name']>> Dabei ist x eine Zählvariable (kann durch [] beim Aufbau ersetzt werden,> was ein Anhängen der Daten an das Array bewirkt) und 'name' der Name> (Schlüssel).
Ach so, okay das ist natürlich super! Ich habe selber auch schon gedacht
dass da teilweise noch etwas zu viel HTML drin ist in den Klassen.
Aber bezüglich HTMLTable hatte ich eben noch eine spezielle Idee, das
mit unserem Issue 22
(https://code.google.com/p/part-db/issues/detail?id=22) zusammenhängt:
Ich dachte da bei der HTMLTable an eine Klasse, der man einfach ein
Array aus Objekten (v.a. Teile und Bestellinformationen), den Typ der
Tabelle (showparts, orderparts, nopriceparts,...) und eine Referenz auf
den aktuellen Benutzer übergeben kann. Wie in Issue 22 beschrieben, soll
ja jeder Benutzer seine Tabellenspalten individuell gestalten können.
Und genau das soll dann diese Klasse HTMLTable erledigen. Damit könnte
man dann also extrem individuelle Tabellen erzeugen lassen.
Allerdings bin ich selber auch noch nicht ganz zufrieden mit diesem
System, weil dann eben die Tabellen nicht durchs Templatesystem
gestaltet werden.
Hast du grad eine gescheite Idee wie wir das am besten lösen?
Urban B. schrieb:> Aber bezüglich HTMLTable hatte ich eben noch eine spezielle Idee, das> mit unserem Issue 22> (https://code.google.com/p/part-db/issues/detail?id=22) zusammenhängt:> Ich dachte da bei der HTMLTable an eine Klasse, der man einfach ein> Array aus Objekten (v.a. Teile und Bestellinformationen), den Typ der> Tabelle (showparts, orderparts, nopriceparts,...) und eine Referenz auf> den aktuellen Benutzer übergeben kann. Wie in Issue 22 beschrieben, soll> ja jeder Benutzer seine Tabellenspalten individuell gestalten können.> Und genau das soll dann diese Klasse HTMLTable erledigen. Damit könnte> man dann also extrem individuelle Tabellen erzeugen lassen.>> Allerdings bin ich selber auch noch nicht ganz zufrieden mit diesem> System, weil dann eben die Tabellen nicht durchs Templatesystem> gestaltet werden.>> Hast du grad eine gescheite Idee wie wir das am besten lösen?
Da die einzelnen Tabellen ja in den Templates vorhanden sind, brauchen
wir ja nur das Array und die Tabelle zu übergeben und die HTML-Klasse
würde das entsprechend veranlassen. Genauso können wir dann Kopf- und
Fußzeilen übernehmen.
1
$html -> put_html_header($meta)
2
$html -> put_html_table($template,$array)
3
$html -> put_html_footer()
In dem Beispiel würde also zuerst der Header generiert ($meta ist ein
Array und enthält alle Kopfdaten, die derzeit alle per Hand über
$tmpl->setVar() gesetzt werden), dann die Templatevorlage geladen und
mit den Array verbunden und am Schluss noch der Footer ausgegeben.
Intern kann die Klasse die einzelnen Templates in privaten Funktionen
(nur innerhalb der Klasse sichtbar) bearbeiten, um es übersichtlicher zu
halten. Ich kann ja mal morgen eine HTML-Klasse erzeugen, die obiges
implementiert.
Die Benutzerklasse würde ihre Daten in eine Session kopieren und diese
Daten stehen global allen Klassen und Funktionen zur Verfügung. Die
SQL-Abfragen würden dann auf $_SESSION zurückgreifen, um die Userdaten
einzubauen. Sowas nutze ich in meinem eigenen CMS-Framework.
Für unsere eigenen Klassen- und Funktionsbenennung sollten wir auf alle
Fälle ein festes Namensschema einführen, sonst kommen wir irgendwann
durcheinander. Da du hier schon angefangen hast, wäre also
Kleinschreibung und Trennung mit "_" für alle verbindlich? Zudem könnten
wir auch Maintainer für die einzelnen Bereiche benennen :-) Templates
und Benutzerverwaltung wäre dann wohl meine Sache? Das Tabellendesign
bis auf die eigentliche Usertable und die Anforderungen an die anderen
Tabellen überlasse ich dann anderen.
Udo Neist schrieb:> In dem Beispiel würde also zuerst der Header generiert ($meta ist ein> Array und enthält alle Kopfdaten, die derzeit alle per Hand über> $tmpl->setVar() gesetzt werden), dann die Templatevorlage geladen und> mit den Array verbunden und am Schluss noch der Footer ausgegeben.> Intern kann die Klasse die einzelnen Templates in privaten Funktionen> (nur innerhalb der Klasse sichtbar) bearbeiten, um es übersichtlicher zu> halten. Ich kann ja mal morgen eine HTML-Klasse erzeugen, die obiges> implementiert.
Also ich habe jetzt nicht alles zu 100% verstanden, aber ich denke mal
das kommt gut so :-) Das wäre super wenn du da mal eine solche Klasse
bauen könntest.
Udo Neist schrieb:> Die Benutzerklasse würde ihre Daten in eine Session kopieren und diese> Daten stehen global allen Klassen und Funktionen zur Verfügung. Die> SQL-Abfragen würden dann auf $_SESSION zurückgreifen, um die Userdaten> einzubauen. Sowas nutze ich in meinem eigenen CMS-Framework.
OK dazu kann ich noch nicht viel sagen, von Sessions usw. habe ich noch
nicht viel Ahnung.
Udo Neist schrieb:> Für unsere eigenen Klassen- und Funktionsbenennung sollten wir auf alle> Fälle ein festes Namensschema einführen, sonst kommen wir irgendwann> durcheinander. Da du hier schon angefangen hast, wäre also> Kleinschreibung und Trennung mit "_" für alle verbindlich?
Ja das wäre sicher vorteilhaft wenn wir uns da einigen. Da bisher der
grösste Teil der Funktionen nach diesem Schema benannt wurde, habe ich
das einfach mal so übernommen. Die Klassennamen habe ich aber gross
geschrieben, ich denke das hat sich ja mehr oder weniger so
eingebürgert.
Übrigens muss ich in den nächsten paar Wochen die Zeit fürs
Programmieren etwas reduzieren, es sind bald Semesterprüfungen... ;-)
Ich bin aber eigentlich eh der Meinung dass wir jetzt an der ultimativen
Version Eins Punkt Null (Part-DB v1.0) arbeiten, und Gut Ding will ja
bekanntlich Weile haben :-D
Update auf Revision 505: class_html.php erstellt.
Die HTML-Klasse (nicht HTMLTable wie im Schema, da einfach zu
universell) kapselt jetzt die vlibTemplate-Klasse und stellt einige
Funktionen bereit.
function set_html_loop ($key = '',$array = array())
8
function unset_html_loop ($key = '')
9
function clr_html_loop ()
10
function print_html_header ()
11
function print_html_footer ()
12
function load_html_template ($template = '')
13
function parse_html_template ($template = '',$array = array())
14
function parse_html_table ($array = array())
15
function print_html_template ()
16
function print_error_state ($error = 0)
17
}
Ich habe die startup.php und config_system.php auf diese Klasse
umgeschrieben. Beide Scripte zeigen dabei die zwei Ansätze, wie man die
neue Klasse benutzen kann. Erstes Script nutzt statt der vlib-Funktionen
setVar()/setLoop() die neuen Funktionen set_html_*().
set_html_variable() ist zudem noch etwas mächtiger als setVar():
optional kann man den Variablentyp setzen (wird beispielhaft gesetzt)
oder die Formatierung nach number_format() oder sprintf() nutzen. Das
andere Script verwendet parse_html_template(), welches
load_html_template(), set_html_*() und print_html_template()
zusammenfast.
Den HTML-Kopf wird durch print_html_header() ausgegeben, der Abschluss
durch print_html_footer().
In der Klasse sind die Funktionen erklärt.
Okay, sieht ja ganz gut aus, aber wie man damit nun individuelle
Tabellen zeichnen kann, habe ich noch nicht verstanden :-)
Übrigens ist mir noch aufgefallen dass du deutsche, und ich englische
Kommentare verwende. Vielleicht sollten wir uns da auch noch einigen.
Also ich bevorzuge eigentlich englisch, weil es halt einfach DIE Sprache
für Programmierer ist, und für ein OpenSource Projekt sowieso. Und
ausserdem kann ich so mein bescheidenes Englisch noch ein bisschen
verbessern :-)
Und übrigens, in der config.php solltest du noch das define "LANGUAGE"
in Anführungszeichen setzen (bekomme immer eine Fehlermeldung deswegen).
Was hat es damit eigentlich auf sich? Soll das ermöglichen, dass part-DB
in verschiedenen Sprachen angezeigt werden kann? Das wäre ja cool! Aber
wo würde man dann die verschiedenen Übersetzungstexte definieren?
Ich habe nochmal ein neues Klassendiagramm angehängt, diesmal mit
Parametern und Rückgabewerte. Ausserdem ist jetzt die Klasse "File" neu.
Diese soll alle möglichen Dateianhänge von irgendwelchen Objekten
vereinheitlichen. Man könnte dann also jedem Subelement von
"FilesContainingElement" unbeschränkt viele Dateien anhängen.
Und die Klasse "Export" ist dazu gedacht, dass man die mit allen
möglichen Objekten befüllen kann (Teile, Bestellinformationen,
Lagerorte,...), ein Exportformat wählt, und dann eine CSV-Datei oder was
auch immer bekommt. Später wäre natürlich dann noch schön wenn man
bequem eigene Exportformate definieren kann, ist bisher aber noch nicht
vorgesehen.
Nachtrag:
Ach ja, und die class_html.php würde ich noch in html.php umbenennen,
dann hättest du das gleiche Namensschema wie ich. Die Dateien liegen ja
eh alle im Ordnert "class", sollte also eh klar sein dass es sich dort
um Klassen handelt.
Urban B. schrieb:> Okay, sieht ja ganz gut aus, aber wie man damit nun individuelle> Tabellen zeichnen kann, habe ich noch nicht verstanden :-)
An dieser Stelle bin ich noch nicht. Aber ich hatte es so vorgesehen,
das man den Namen des Templates zusammen mit einem Array übergibt und
die entsprechende Funktion die Tabelle erzeugt. Im Grunde macht das
print_html_table() ja schon, in dem ich dort das Template fest auf
"vlib_table.tmpl" setze und der Aufruf von load_html_template() den
Scriptnamen in den Pfad übernimmt.
> Übrigens ist mir noch aufgefallen dass du deutsche, und ich englische> Kommentare verwende. Vielleicht sollten wir uns da auch noch einigen.> Also ich bevorzuge eigentlich englisch, weil es halt einfach DIE Sprache> für Programmierer ist, und für ein OpenSource Projekt sowieso. Und> ausserdem kann ich so mein bescheidenes Englisch noch ein bisschen> verbessern :-)
Man kann ja die Kommentare später übersetzen :) Solange lass ich die
erstmal in Deutsch.
> Und übrigens, in der config.php solltest du noch das define "LANGUAGE"> in Anführungszeichen setzen (bekomme immer eine Fehlermeldung deswegen).
Erledigt.
> Was hat es damit eigentlich auf sich? Soll das ermöglichen, dass part-DB> in verschiedenen Sprachen angezeigt werden kann? Das wäre ja cool! Aber> wo würde man dann die verschiedenen Übersetzungstexte definieren?
Erstmal ist das nur für LC_ALL
(http://php.net/manual/de/function.setlocale.php) interessant, später
könnte man damit auch die Templates internationalisieren. Nur wer
übersetzt die Templates in andere Sprachen? gettext() wäre zwar
interessant, aber für mich noch eine Spur zu hoch.
> Nachtrag:> Ach ja, und die class_html.php würde ich noch in html.php umbenennen,> dann hättest du das gleiche Namensschema wie ich. Die Dateien liegen ja> eh alle im Ordnert "class", sollte also eh klar sein dass es sich dort> um Klassen handelt.
Umbenennen geht immer :-) Ist eine Angewohnheit von mir, die Klassen und
Libraries mit "class_" bzw. "class." oder "lib_" bzw. "lib." noch extra
zu kennzeichnen, um Verwechselungen zu vermeiden. Könnte ja jemand
meinen, Libraries und Klassen gehören in das gleiche Verzeichnis ;-)
Ich habe config_page.php auch auf mod_xsendfile erweitert. Noch
funktioniert es nicht perfekt, aber wenn, dann lohnt es sich das in die
File-Klasse zu verschieben.
Okay alles klar :-)
Das mit der Internationalisierung können wir ja mal machen wenn uns
langweilig ist ;-) Momentan stehen aber wichtigere Sachen an...
Hast du eigentlich schon Erfahrung mit Doxygen? Meinst du, es würde sich
lohnen bzw. Sinn machen den Sourcecode mit Doxygen zu dokumentieren? Ich
bin mir nicht sicher ob das vielleicht erst bei viel grösseren Projekten
beginnt Sinn zu machen.
Und kennst du dich eigentlich mit SQL gut aus? Könntest du mir beim
Datenbankupdate fürs neue Lieferantendetails-System helfen? :-)
Anbei übrigens nochmal eine neuere version des Klassendiagrammes.
Ich hab irgendwann mal mit Doxygen experimentiert, hab dann aber mal ein
anderes System getestet. Hat mich beides nicht überzeugt. So hab ich die
gesamte Doku über Dokuwiki gemacht, das keine Datenbank benötigt.
SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede
Möglichkeit kenne oder nutze.
Bin gerade an der print_table_row() aus der lib.php dran. Wenn das
funktioniert, kann ich die beiden Aufrufe aus search.php und
showparts.php auf die LOOPs umschreiben. Dann sieht man die Vorteile der
neuen HTML-Klasse. Derzeit wird der Output abgefangen und als fertiger
HTML-Block einfach eingefügt.
Udo Neist schrieb:> SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede> Möglichkeit kenne oder nutze.
Das heisst, du könntest mal probieren ein Datenbankupdate zu schreiben?
:-) Was man machen müsste, habe ich ja hier geschrieben:
Beitrag "Re: PART-DB RW 1.2"Udo Neist schrieb:> Bin gerade an der print_table_row() aus der lib.php dran. Wenn das> funktioniert, kann ich die beiden Aufrufe aus search.php und> showparts.php auf die LOOPs umschreiben. Dann sieht man die Vorteile der> neuen HTML-Klasse. Derzeit wird der Output abgefangen und als fertiger> HTML-Block einfach eingefügt.
OK das würde mich interessieren wie das dann ausschaut. Ich finde es
einfach wichtig, dass man so eine Tabelle mit Objekten wie "Part",
"Orderinformations", "Footprint", "File" usw. erzeugen kann. Dann muss
man noch entscheiden, was für ein Tabellentyp es sein soll
(nopriceparts, obsoleteparts, defectfilenamefiles, ...), und die
Tabellenspalten werden dann in Abhängigkeit vom aktuellen Benutzer
gestaltet (Sichtbarkeit und Reihenfolge der Spalten).
Urban B. schrieb:> Udo Neist schrieb:>> SQL ist für mich kein Buch mit sieben Siegeln, auch wenn ich nicht jede>> Möglichkeit kenne oder nutze.>> Das heisst, du könntest mal probieren ein Datenbankupdate zu schreiben?> :-) Was man machen müsste, habe ich ja hier geschrieben:> Beitrag "Re: PART-DB RW 1.2"
Schaue ich mir die Tage mal an :-)
> OK das würde mich interessieren wie das dann ausschaut. Ich finde es> einfach wichtig, dass man so eine Tabelle mit Objekten wie "Part",> "Orderinformations", "Footprint", "File" usw. erzeugen kann. Dann muss> man noch entscheiden, was für ein Tabellentyp es sein soll> (nopriceparts, obsoleteparts, defectfilenamefiles, ...), und die> Tabellenspalten werden dann in Abhängigkeit vom aktuellen Benutzer> gestaltet (Sichtbarkeit und Reihenfolge der Spalten).
Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der
Spalten fast beliebig machen, aber dazu muss man das Template anders
aufbauen und viele Funktionen in den Code überführen. Das würde derzeit
ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment
bei den jetzigen Tabellen belassen. Durch die Templates wird so manches
entschlackt, aber nicht an jeder Stelle flexibel.
Udo Neist schrieb:> Schaue ich mir die Tage mal an :-)
Danke :-)
Udo Neist schrieb:> Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der> Spalten fast beliebig machen, aber dazu muss man das Template anders> aufbauen und viele Funktionen in den Code überführen. Das würde derzeit> ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment> bei den jetzigen Tabellen belassen. Durch die Templates wird so manches> entschlackt, aber nicht an jeder Stelle flexibel.
Hmm okay. Naja, Voraussetzung für die flexiblen Tabellen ist ja sowieso
die Implementierung der Benutzerverwaltung, und die braucht ja noch ein
bisschen Zeit.
Revision 506: search.php und showparts.php sind auf Templates
umgestellt. Die Funtion print_table_row() gibt nur noch ein Array von
Daten zurück.
Kurze Einführung in die HTML-Klasse:
Der HTML-Kopf ist in der vlib_head.tmpl gespeichert und ist in
print_html_header() fest kodiert. Die verschiedenen Variablen werden
durch set_html_meta() gesetzt.
1
$html = new HTML;
2
$html -> set_html_meta ( array(
3
'title' => 'Deviceinfo',
4
'http_charset' => $http_charset,
5
'theme' => $theme,
6
'css' => $css,
7
'menu' => true,
8
'popup' => true,
9
'hide_id' => $hide_id
10
)
11
);
12
$html -> print_html_header();
Das Herzstück der Klasse ist die Behandlung der einzelnen Templates. Es
werden zwei Herangehensweisen unterstützt. Wer mit vlibTemplates schon
vertraut ist, der kennt die Funktion setVar(). Diese wird durch
set_html_variable() ersetzt. Zusätzlich beherrscht sie einige
Formatierungen mittels number_format() und sprintf(). Die kürze und
etwas elegantere Methode nutzt parse_html_template(). Man übergibt den
Namen des Templates und ein assoziatives Array. Ist der Wert eines
Paares ein Array, so wird dieses als Loop für die Templates
interpretiert. Ein Beispiel ist folgender Code aus showparts.php:
Die Alternative parse_html_table() ist für Loops vorgesehen, die
vollständige Blöcke (bei Tabellen müssen die table-tags im Template
vorhanden sein) erzeugen. Teilausgaben müssen mit parse_html_template()
Vorlieb nehmen.
Den Abschluss der Webseite gibt print_html_footer() aus. Die
dazugehörige Datei ist vlib_foot.tmpl.
> Udo Neist schrieb:>> Ganz so einfach geht das nicht. Zwar kann man die Reihenfolge der>> Spalten fast beliebig machen, aber dazu muss man das Template anders>> aufbauen und viele Funktionen in den Code überführen. Das würde derzeit>> ich in die ToDo- oder Wunschliste aufnehmen. Ich würde es bei im Moment>> bei den jetzigen Tabellen belassen. Durch die Templates wird so manches>> entschlackt, aber nicht an jeder Stelle flexibel.
Wuaah... Was hab ich da denn geschrieben?
Nochmal: Das würde ich derzeit in die ToDo- oder Wunschliste aufnehmen.
Ich würde es bei den jetzigen Tabellen belassen.
In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es
dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter
Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein
"Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach
ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu
laden?
Ich war so frei und hab zumindest ersteres implementiert.
Udo Neist schrieb:> Nochmal: Das würde ich derzeit in die ToDo- oder Wunschliste aufnehmen.
Da ist es schon drin ;-)
> Ich würde es bei den jetzigen Tabellen belassen.
Ja vorerst kein Problem, aber ich dachte halt ich baue gleich schon so
eine Klasse, damit man später nicht nochmal alles total umbauen muss.
Ich hätte jetzt die Tabellengestaltung noch nicht benutzerspezifisch
gemacht, aber halt einfach alles schonmal so vorbereitet dass man dann
nur noch diese eine Klasse anpassen muss, sobald die Benutzerverwaltung
steht.
Udo Neist schrieb:> In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es> dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter> Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein> "Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach> ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu> laden?
Statt einem Hinweis können wir doch einfach die ganz normale Seite
anzeigen lassen? Also ich hätte lieber eine Seite, die nicht auf
Mobilgeräte angepasst ist, als gar keine Seite :-)
check_mobile() in der index.php ist Geschichte. Man muss nicht alles in
Funktionen giessen, wenn der Aufruf nur einmal im gesamten Kontext
erfolgt. Folgende Variante ersetzt die Funktion komplett und verwendet
eine while()-Schleife. In der index.php habe ich auf die Klammern
verzichtet, um die Schleife als Zweizeiler zu bekommen. Ausgeschrieben
läuft das so ab:
1
$agents = array(
2
'Windows CE', 'Pocket', 'Mobile',
3
'Portable', 'Smartphone', 'SDA',
4
'PDA', 'Handheld', 'Symbian',
5
'WAP', 'Palm', 'Avantgo',
6
'cHTML', 'BlackBerry', 'Opera Mini',
7
'Nokia', 'PSP', 'J2ME'
8
);
9
10
$mobile = false;
11
if (isset($_SERVER["HTTP_USER_AGENT"]))
12
{
13
while(list($agent) = each($agents) && !$mobile)
14
{
15
if (strpos($_SERVER["HTTP_USER_AGENT"], $agent))
16
{
17
$mobile = true;
18
}
19
}
20
}
while() wird solange durchlaufen, bis die Bedingung ein false ergibt.
Enthält das Array ein Elemente hat und die Stringfunktion innerhalb der
Schleife hat keinen Treffer ergeben, so bleibt die Variable $mobile auf
false und wird durch die Negierung true. Die UND-Verknüpfung ergibt
damit true. Ist das Array durchlaufen oder ein Treffer im Array
gelandet, so wird die UND-Verknüpfung false und while() beendet sich.
Man erspart sich das break.
Geht man noch eins weiter, kann man die äußere IF-Abfrage in die
while()-Bedingung einfliessen lassen.
> Udo Neist schrieb:>> In der index.php steht ja ein require ('mobil/mobil.php') drin. Da es>> dieses Script nicht gibt, würde ein Aufruf von einem Tablet-PC unter>> Umständen ins Leere laufen. Wäre es da nicht sinnvoll vorerst ein>> "Sorry, wird derzeit nicht unterstützt" anzuzeigen und später einfach>> ein angepasstes Thema (dafür sind ja gerade die Templates so genial) zu>> laden?>> Statt einem Hinweis können wir doch einfach die ganz normale Seite> anzeigen lassen? Also ich hätte lieber eine Seite, die nicht auf> Mobilgeräte angepasst ist, als gar keine Seite :-)
Ich hab beim Vergleich der Branches festgestellt, das es die Meldung
bereits gab und ich die schon vor längerem entsorgt habe.
Das Problem der Mobilgeräte ist die beschränkte Größe des Screens. Da
kann man das Menü und den Content praktisch nicht nutzen. Man müsste das
Menü auslagern. Sind die Frames mal verschwunden, lässt sich das Menü
ganz einfach ausblenden (CSS: "display:none;"), damit der Inhalt
angezeigt wird und umgekehrt. Das könnte man dann sehr simple mit einem
Switch im Template freischalten. Genauso könnte man dann auch
Nicht-Fullscreen-Fenster der Browser behandeln. Beides würde ein
Javascript-Schnipsel machen.
Pseudocode:
1
var menu_on = {TMPL_IF NAME="menu_on"}1{TMPL_ELSE}0{/TMPL_IF};
2
3
if (menu_on == 1) div.menu.style="display:block";
4
if (menu_on == 0 and browser.width<=1024) div.menu.style="display:none";
Ich habe in meinem Branch einen neuen Ordner "documentation" erstellt.
Ich denke, den können wir später auch für die Dokumentation (für
Anwender und Entwickler) verwenden, z.B. für Hilfedateien.
Darin habe ich den Unterordner "UML" erstellt, in dem ich das
Klassendiagramm abgelegt habe. So werden die Versionen auch gleich vom
SVN verwaltet, und es ist immer schnell erreichbar.
Das jeweils aktuelle PDF ist unter dieser Adresse erreichbar:
https://part-db.googlecode.com/svn/branches/kami89/documentation/UML/class_diagram.pdf
Hallo Community,
ich war seit Januar 2012 auf der Suche nach einer Lagerverwaltung für
mich in der Firma. Nur durch Zufall bin ich über die PArt-DB gestolpert
und fand die auf Anhieb recht gut programmiert. Vor einem Monat dann
haben wir angefangen in unserem Lager Ersatzteile jeglicher Art
aufzunehmen. Mir ist im vornherein bewusst dass ich die Part-DB dafür
zweckentfremde, da diese ja eigentlich nur für
Kleinstelektronikkomponenten ausgelegt ist.
Was ich super finden ist, dass die GUI sehr sauber und einfach gehalten
ist. Allderdings stört mich z.b. der Footprint in den einzelnen
Bauteilen. Diesen kann ich nicht verwenden. Gibt es eine Möglichkeit
diesen rauszunehmen? Vielleicht könnt ihr da zukünftig was Einbauen wo
man den Punkt einfach per Checkbox ausblenden kann.
Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach
Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist
genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung
sehr träge.
Aktuell schaue ich fast täglich in die Google codes Projektseite
allerdings ist die Entwicklung fast ausschließlich hier im Gange.
Ich selbst bin leider programmiertechnisch nicht soo fit, was mich aber
nicht abhält auch mal Codeschnipsel nach Anleitung zu ändern.
Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.
Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die
Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher
kann ich auf SVN´s verzichten und kann von mehreren Rechner
unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von
euch schon jemand getestet hat.
Keep the work going on!
Gruß Kirkdis
Hallo kirkdis,
> ich war seit Januar 2012 auf der Suche nach einer Lagerverwaltung für> mich in der Firma. Nur durch Zufall bin ich über die PArt-DB gestolpert> und fand die auf Anhieb recht gut programmiert. Vor einem Monat dann> haben wir angefangen in unserem Lager Ersatzteile jeglicher Art> aufzunehmen.
Cool, dass unser Projekt bereits den Weg in eine Firma gefunden hat :-)
Darf man fragen, wie viele Arbeiter auf die Part-DB zugreifen? Bisher
ist Part-DB allerdings noch nicht für die Verwendung in einer Firma
ausgelegt. Das soll sich aber noch ändern, es wird in Zukunft z.B. eine
Benutzerverwaltung (mit Rechtevergabe) geben.
> Was ich super finden ist, dass die GUI sehr sauber und einfach gehalten> ist. Allderdings stört mich z.b. der Footprint in den einzelnen> Bauteilen. Diesen kann ich nicht verwenden. Gibt es eine Möglichkeit> diesen rauszunehmen? Vielleicht könnt ihr da zukünftig was Einbauen wo> man den Punkt einfach per Checkbox ausblenden kann.
Eine solche Idee hatte ich auch schon. Ich dachte da an eine Einstellung
für die Kategorien, also quasi um anzugeben ob es sich bei einer
Kategorie um Bauteile mit Footprints handelt. Ich habe bei mir z.B. eine
Kategorie "Werkstatt" in dem ich Werkzeuge und Verbrauchsmaterialien
verwalte. Und da machen die Footprints auch wenig Sinn. Daher wäre es
wünschenswert, wenn man bei ausgewählten Kategorien die Footprints
deaktivieren kann.
Da wir aber momentan an einem relativ grossen Umbau arbeiten (Einführung
eines Templatesystems und Umbau auf objektorientierte Programmierung),
denke ich, werden wir diese neue Funktion erst in die neue Version
aufnehmen. Heisst also, es wird noch etwas dauern bis diese Funktion zur
Verfügung stehen wird.
> Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach> Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist> genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung> sehr träge.
Von wievielen Teilen in der Auflistung reden wir hier etwa? Wie viele
davon haben ein Bild zugeordnet? Footprint wird keines der Bauteile
zugeordnet haben, oder? Und welche Version von Part-DB verwendest du
(hast du das Archiv v0.2.2 installiert, oder die neuste SVN-Revision)?
> Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.
Das können wir immer gebrauchen :-)
> Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die> Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher> kann ich auf SVN´s verzichten und kann von mehreren Rechner> unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von> euch schon jemand getestet hat.
Hmm was meinst du damit, dass du aufs SVN verzichten kannst? Übers SVN
ist einfach immer die allerneuste (Entwickler-)Version erhältlich. Diese
können aber durchaus auch mal einige Fehler enthalten. Die erhältlichen
Archive sind etwas älter, aber sollten dafür stabiler/erprobter sein.
Und dass man von mehreren Rechnern auf Part-DB zugreifen kann, ist
eigentlich der Sinn einer Webapplikation :-)
Gruss
Urban
kirk disen schrieb:> Aufgrund der Massen an Ersatzteilen merke ich dass wir nach und nach> Probleme bekommen. Die Funktion mit den Bildern zu den Artikeln ist> genial allerdings wird bei Kategorien mit vielen Teilen die Auflistung> sehr träge.
Eventuell können wir hier recht schnell eine Abhilfe schaffen, denn das
Abschalten der Footprints bzw. eine Option für Thumbnails oder reinen
Textlink sind ja nur kleine Änderungen. Erstes könnte man in den
Kategorien selbst unterbringen (zusätzliche Option beim Erstellen einer
Kategorie) und das andere wäre etwas für die Einstellungen in config.php
(und später für die Benutzer-/Gruppenverwaltung).
> Aktuell schaue ich fast täglich in die Google codes Projektseite> allerdings ist die Entwicklung fast ausschließlich hier im Gange.
Das Projekt ist hier ja auch entstanden und viele Interessierte haben
diesen Thread auch abonniert. Das wir auf Google Codes das Wiki mal
überarbeiten sollten, ist mir schon in den Sinn gekommen :-)
> Ich selbst bin leider programmiertechnisch nicht soo fit, was mich aber> nicht abhält auch mal Codeschnipsel nach Anleitung zu ändern.>> Ich würde mich gerne aber als Tester bereit erklären euch zu helfen.
Ich schliess mich da Urban an. Tester kann man immer gebrauchen. Wir
Entwickler sehen ja nur einen Teil der möglichen Probleme und Fehler.
> Was sich sehr gut bewährt hat ist die Hardware mit der ich arbeite. Die> Datenbank und der Webserver läuft auf einer Synology DS 107. Von daher> kann ich auf SVN´s verzichten und kann von mehreren Rechner> unproblematisch auf die Datenbank zugreifen. Ich weiss nicht ob das von> euch schon jemand getestet hat.
Bei mir gibt es derzeit drei Systeme, auf denen ich die Entwicklung
mache, einer ist öffentlich zugänglich und erhält die Updates meines
Branches, wenn ich sie für stabil halte. Ich schätze, ich bin bei ca.
70% des Umbaus auf Templates angelangt.
> Keep the work going on!
Wir sind dabei :-)
also so wie ich das im überflug gelesen habe handelt es sich bei svn um
eine version für windows die eine datenbank und einen webserver
emuliert. gut vielleicht verwechsle ich da grad was hab den ellenlangen
threat zu meiner entschuldigung auch nicht ganz gelesen. aber so wie
sich jetzt herausstellt handelt es sich dabei wohl um die neuste version
eures entwicklerteams.
synology stellt miniaturwebserver her. google mal danach sind echt feine
geräte.
aktuell läuft bei mir die 0.2.2. würde alternativ eure mal ebenbei
laufen lassen oder gibts da bekannte probleme mit der datenbank wenn
zwei scripte darauf zugreifen. will mir auf keinen fall die sql db
zerschiessen. falls die db von 0.2.2 mit eurer neuesten svn kompatibel
ist werd ich mich montag mal drüber machen die parallel laufen zu
lassen.
artikel haben wir aktuell ca 2500 eingetragen. wieviele davon mit bild
kann ich nicht genau sagen werds aber mal checken am montag und
berichten.
nur so nebenbei aktuell verwalten wir mit eurem system 2 kardex
hochregallager. wobei da eine wichtige funtkion gerade noch fehlt. habt
ihr in eurer neuesten bereits etwas integriert wo ich nach lagerplatz
sortieren kann?
gruss kirkdis
kirk disen schrieb:> also so wie ich das im überflug gelesen habe handelt es sich bei svn um> eine version für windows die eine datenbank und einen webserver> emuliert. gut vielleicht verwechsle ich da grad was hab den ellenlangen> threat zu meiner entschuldigung auch nicht ganz gelesen. aber so wie> sich jetzt herausstellt handelt es sich dabei wohl um die neuste version> eures entwicklerteams.SVN ist ein Versionsverwaltungssystem:
https://de.wikipedia.org/wiki/Apache_Subversion
Google Code ist z.B. so ein SVN-Server, deshalb wird unser Projekt dort
verwaltet.
> aktuell läuft bei mir die 0.2.2. würde alternativ eure mal ebenbei> laufen lassen oder gibts da bekannte probleme mit der datenbank wenn> zwei scripte darauf zugreifen. will mir auf keinen fall die sql db> zerschiessen. falls die db von 0.2.2 mit eurer neuesten svn kompatibel> ist werd ich mich montag mal drüber machen die parallel laufen zu> lassen.
Bezüglich Datenbank zerschiessen würde sich sowieso ein gelegentliches
Backup anbieten. Vorallem im professionellen Einsatz sollte man
unbedingt regelmässige Backups der Datenbank machen.
Du kannst nicht verschiedene Versionen von Part-DB auf die gleiche
Datenbank zugreifen lassen, da einige Updates die Datenbankstruktur
verändern. Auch ein Downgrade ist nicht mehr einfach so ohne weiteres
möglich.
Ich würde dir empfehlen, dass du erstmal deine komplette Datenbank
sicherst (z.B. über phpMyAdmin oder mysqldump). Dann lädst du die neuste
Version aus dem SVN herunter. Den Link dazu gibts hier:
https://code.google.com/p/part-db/source/checkout und Anleitungen findet
man über Google.
Einfach die alten Dateien mit den neuen aus dem SVN überschreiben.
Danach kannst du die Version austesten, schauen ob alles so läuft wie es
soll. Ich habe immer die neuste SVN-Version als Produktivsystem
installiert und hatte noch nie wirklich Probleme.
Bei der neusten Version gibts übrigens auch gleich die Möglichkeit,
direkt aus Part-DB heraus eine Datenbanksicherung durchzuführen.
Wenn irgendwas nicht richtig funktioniert mit der SVN-Version von
Part-DB spielst du einfach wieder das Datenbank-Backup der Version 0.2.2
und die alten 0.2.2er-Dateien ein, und du hast wieder genau deinen
jetztigen Stand.
> artikel haben wir aktuell ca 2500 eingetragen. wieviele davon mit bild> kann ich nicht genau sagen werds aber mal checken am montag und> berichten.
Naja ich wollte eigentlich wissen, wie viele Einträge in den Kategorien
vorhanden sind, die schon sehr lange zum Laden brauchen. Die Ladezeit
beim Anzeigen einer Kategorie hängt vielmehr von der Anzahl der
anzuzeigenden Teile, als von der Gesamtanzahl Teile ab. Vorallem die
Bilder brauchen vermutlich viel Zeit, deshalb wollte ich wissen wie
viele (ungefähr) Bilder aufgelistet werden. Also z.B. "100 Teile in
einer Kategorie, 30 davon mit Bild, Ladezeit 10 Sekunden".
Übrigens spielt die Grösse der Bilder wahrscheinlich auch noch eine sehr
grosse Rolle. Wenn jedes Teil ein 1MB grosses Bild hat, wird es sehr
lange dauern z.B. 50 davon aufzulisten.
Vielleicht müssen wir da mit Thumbnauls arbeiten, damit die Ladezeiten
sich in Grenzen halten bei Kategorien mit vielen (grossen) Bildern.
> nur so nebenbei aktuell verwalten wir mit eurem system 2 kardex> hochregallager. wobei da eine wichtige funtkion gerade noch fehlt. habt> ihr in eurer neuesten bereits etwas integriert wo ich nach lagerplatz> sortieren kann?
Ist bereits in der Wunschliste, aber noch nicht eingebaut. Zur Zeit
musst du dich halt mit der Suchfunktion begnügen, die findet ja auch
Lagerorte.
Vielleicht hast du auch Glück und jemand baut die Funktion nächstens mal
ein, so eine grosse Sache wär das gar nicht. Ich habe aber leider in den
nächsten paar Wochen nicht viel Zeit zum programmieren
(Semesterprüfungen...).
Urban B. schrieb:> Vielleicht müssen wir da mit Thumbnauls arbeiten, damit die Ladezeiten> sich in Grenzen halten bei Kategorien mit vielen (grossen) Bildern.
Lohnt sich auf alle Fälle. So 64 oder 96 Pixel, je nach Qualität.
Update auf Revision 510
- Fehlerbehandlungsklasse eingeführt (error.php: class _exception)
- HTML-Klasse mit Exceptions versehen
- HTML-Klasse nimmt Defaults für Thema, CSS und Charset aus der
config.php, braucht nicht mehr mit angegeben zu werden (kann aber
überschrieben werden)
- startup.php auf HTML->parse_html_template() umgestellt
PS: Die englischen Kommentare müssten noch überarbeitet werden ;-)
Ich habe mal die Copyright-Info überarbeitet und hoffe, es ist euch
recht so.
1
part-db version 0.1
2
Copyright (C) 2005 Christoph Lechner
3
http://www.cl-projects.de/
4
5
part-db version 0.2+
6
Copyright (C) 2009 K. Jacobs and others (see authors.php)
7
http://code.google.com/p/part-db/
8
9
This program is free software; you can redistribute it and/or
10
modify it under the terms of the GNU General Public License
11
as published by the Free Software Foundation; either version 2
12
of the License, or (at your option) any later version.
13
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
GNU General Public License for more details.
18
19
You should have received a copy of the GNU General Public License
20
along with this program; if not, write to the Free Software
21
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Aktuelle Änderungen (ist noch nicht im SVN, da ich obige Änderung nicht
ohne Zustimmung übernehmen will)
1
- Lizenzinfo in die einzelnen Scripte reinkopiert bzw. aktualisiert
2
- error.php entsprechend dem Namensschema umgeschrieben
3
- Einige Variablen aus der config.php in das Array $conf verschoben
4
- html.php angepasst
5
- install.sh geändert: Lizenz und Abfrage ob diese akzeptiert wird, sowie Abfrage der Daten zur Installation der Datenbank
6
- SQL-Script an install.sh angepasst
Ich hänge mal die install.sh hier an. Bitte testet die mal bei euch aus
(läuft unter Bash) und gebt mir Rückmeldung, ob sie sauber funktioniert.
Ich möchte nämlich die INSTALL.txt bzw. auch das Thema im Wiki
überarbeiten.
Udo Neist schrieb:> list_backup_files() liest dazu aus $db['backup_path'] rekursiv und gibt> alles als Array zurück. Download und Löschen muss ich noch anpassen.
list_backup_files() gibt jetzt den Pfad unterhalb der Installation
zurück. Download und Löschen ergänzen dann noch zu einem absoluten Pfad,
um darauf zurückgreifen zu können. Beim Download wird nur der Dateiname
genutzt.
@Udo Neist
Du gibst ja richtig Gas beim programmieren :-D
Also wenn du mich fragst, ich finde das neue Copyright gut, da man sieht
dass das ursprüngliche Projekt von uns "weitergeführt wurde. Aber K.J.
ist hier der Chef :-) Scheint aber momentan irgendwie nicht sehr aktiv
zu sein, oder ist er vielleicht in den Ferien?
Übrigens, hast du das "Problem" mit dem Datenbankupdate fürs neue
Preissystem mal angeschaut?
Wenn es nicht einfach so direkt per SQL-Anweisung möglich ist, dann
müssten wir halt dafür etwas PHP Code schreiben, der dann das Update
durchführt. Aber so mächtig wie SQL ist, wirds bestimmt auch ohne PHP
möglich sein :-)
Ich habe mal wieder meinen Branch aktualisiert. Auch das Klassendiagramm
wurde aktualisiert
(https://part-db.googlecode.com/svn/branches/kami89/documentation/UML/class_diagram.pdf).
Ich habe mal angefangen die Benutzerverwaltung einzubauen. Ich stelle
mir das so vor, dass man bei jedem Objekt, das man anlegt, eine Referenz
auf den aktuell angemeldeten Benutzer übergibt. Die Berücksichtigung der
Rechte würde dann direkt innerhalb der einzelnen Klassen stattfinden.
Zuerst dachte ich es wäre besser wenn die Überprüfung auf die
notwendigen Rechte ausserhalb der Klassen passieren würde. So könnte man
auch besser auf fehlende Rechte reagieren und entsprechend eine
Fehlermeldung ausgeben. Allerdings bin ich mir noch nicht sicher ob
früher oder später einzelne Klassenmethoden doch noch eine Information
über die vorhandenen Rechte brauchen werden. Und ausserdem wird so die
Überprüfung der Rechte nur an einer zentralen Stelle durchgeführt und
muss nicht für jede Seite extra programmiert werden.
Um trotzdem gescheite Fehlermeldungen ausgeben zu können, habe ich bei
den Klassen eine Funktion "get_last_error()" eingebaut. Versucht ein
Benutzer z.B. den Namen eines Bauteils abzuändern, kann man einfach
"set_name()" ganz normal aufrugen, und direkt nach diesem Aufruf halt
noch per "get_last_error()" überprüfen ob ein Fehler aufgetreten ist.
Falls ein String zurückkommt, wird direkt dieser String als
Fehlermeldung ausgegeben.
Irgendwann müssen wir ja unsere zwei Branches ja noch miteinander
verschmelzen. Momentan sind meine Klassen aber noch nicht wirklich
fertig, eigentlich möchte ich sie zuerst möglichst fertig kriegen bevor
wir die Branches zusammenschnüren. Nur wird es voraussichtlich noch ca.
5 Wochen dauern bis es soweit ist, weil ich eben momentan zu wenig Zeit
zum programmieren habe. Ist das für dich ein Problem, oder hast du in
dieser Zeit selber noch genug zu tun mit den Templates?
Was sicher nicht schaden würde, ist wenn du mein Klassendiagramm einfach
ein bisschen studierst, damit du ungefähr weisst wie das ganze aufgebaut
ist. Nicht dass es später noch böse Überraschungen gibt beim
Verschmelzen unserer Branches.
Urban B. schrieb:> @Udo Neist>> Du gibst ja richtig Gas beim programmieren :-D
Ich hab an diesem WE nichts vor, bis jetzt jedenfalls ;-)
> Also wenn du mich fragst, ich finde das neue Copyright gut, da man sieht> dass das ursprüngliche Projekt von uns "weitergeführt wurde. Aber K.J.> ist hier der Chef :-) Scheint aber momentan irgendwie nicht sehr aktiv> zu sein, oder ist er vielleicht in den Ferien?
Ich warte ab. Er muss ja zustimmen.
> Übrigens, hast du das "Problem" mit dem Datenbankupdate fürs neue> Preissystem mal angeschaut?
Nein, ich habe mich heute Abend an ein Online-Update der Datenbank
versucht. Bisher läuft es mit lokalen Daten. Hier fehlt noch der
Download des entsprechenden Archivs.
Kurzfassung zum Prinzip: Es wird die Datenbankversion ausgelesen, auf
dem Server nach einem Update-Archiv für diese Version geschaut, geladen
und installiert. Das Archiv beinhaltet eine PHP-Datei mit einem Array
für einen Gültigkeitscheck und eine Datei mit den SQL-Befehlen.
Möglichst eine Zeile pro SQL-Befehl, wird anhand des Semikolons
getrennt. Eventuell müsste ich da noch ein alternatives Trennzeichen
einführen, falls irgendwo bei den Daten selbst ein Semikolon vorhanden
ist.
> Wenn es nicht einfach so direkt per SQL-Anweisung möglich ist, dann> müssten wir halt dafür etwas PHP Code schreiben, der dann das Update> durchführt. Aber so mächtig wie SQL ist, wirds bestimmt auch ohne PHP> möglich sein :-)
Ich will mir das auf alle Fälle noch anschauen, bevor ich mich dazu
äußere. Also einfach noch ein bisschen liegen lassen ;-)
> Zuerst dachte ich es wäre besser wenn die Überprüfung auf die> notwendigen Rechte ausserhalb der Klassen passieren würde. So könnte man> auch besser auf fehlende Rechte reagieren und entsprechend eine> Fehlermeldung ausgeben. Allerdings bin ich mir noch nicht sicher ob> früher oder später einzelne Klassenmethoden doch noch eine Information> über die vorhandenen Rechte brauchen werden. Und ausserdem wird so die> Überprüfung der Rechte nur an einer zentralen Stelle durchgeführt und> muss nicht für jede Seite extra programmiert werden.
Es gibt bestimmt Notwendigkeiten in den verschiedenen Klassen, auch mal
die Benutzerrechte zu testen. Ich lasse schon im eigentlichen Script
prüfen, ob jemand überhaupt berechtigt ist, diese Funktion zu nutzen.
Die Klassenfunktionen brauchen hier dann nur noch das tun, für das sie
gedacht sind.
> Um trotzdem gescheite Fehlermeldungen ausgeben zu können, habe ich bei> den Klassen eine Funktion "get_last_error()" eingebaut.
Gute Idee. Im Prinzip mache ich das ähnlich. Entweder gibt es einen
Zahlencode für verschiedene Fehler und man kann den dann als Klartext
zurückbekommen oder, wenn es extrem wichtige Funktionen sind, es gibt
eine Exception und die Ausführung wird abgebrochen.
> Irgendwann müssen wir ja unsere zwei Branches ja noch miteinander> verschmelzen. Momentan sind meine Klassen aber noch nicht wirklich> fertig, eigentlich möchte ich sie zuerst möglichst fertig kriegen bevor> wir die Branches zusammenschnüren. Nur wird es voraussichtlich noch ca.> 5 Wochen dauern bis es soweit ist, weil ich eben momentan zu wenig Zeit> zum programmieren habe. Ist das für dich ein Problem, oder hast du in> dieser Zeit selber noch genug zu tun mit den Templates?
Meine Idee war es, erstmal beide Konzepte soweit zu entwickeln, dass sie
nutzbar sind. Die fehlenden Templates sind in vielleicht zwei Wochen
erstellt, wenn ich nicht wieder irgendeine Idee zu einem Issue hab ;-)
> Was sicher nicht schaden würde, ist wenn du mein Klassendiagramm einfach> ein bisschen studierst, damit du ungefähr weisst wie das ganze aufgebaut> ist. Nicht dass es später noch böse Überraschungen gibt beim> Verschmelzen unserer Branches.
Da sehe ich weniger ein Problem. Ich würde einfach Klasse für Klasse in
meinen Branch integrieren. Wenn du die Klassen so geschrieben hast, das
die Funktionen der lib.php praktisch identisch in einer Klasse
existieren, so macht der Umstieg kaum Ärger. Ich integriere die
Templates auch erstmal so, das nur der HTML-Teil vom Rest getrennt wird.
Ist das Template funktionstüchtig, nehme ich mir i.d.R. auch die
dortigen Routinen vor. Gibt so manches, was man sinnvoller umsetzen
kann.
Ich sehe in deinem Klassendiagramm, das du Objekte einsetzt. Ich muss
gestehen, ich hab mit Objekten bei PHP noch nicht gearbeitet.
Meine Klassendefinition habe ich mal als Text-Datei erstellt. Sie
umfasst meine eigenen drei Klassen html.php, error.php und pack.php.
EDIT: Korrigierte Klassendefinition (zweite Datei laden)
Udo Neist schrieb:> Wenn du die Klassen so geschrieben hast, das> die Funktionen der lib.php praktisch identisch in einer Klasse> existieren, so macht der Umstieg kaum Ärger.
Naja praktisch identisch ist es sicher nicht ;-) Die neuen Funktionen
sind natürlich voll auf OOP ausgelegt, geben also z.B. keine Arrays von
SQL-Querys mehr zurück, sondern Objekte.
Udo Neist schrieb:> Ich sehe in deinem Klassendiagramm, das du Objekte einsetzt. Ich muss> gestehen, ich hab mit Objekten bei PHP noch nicht gearbeitet.
Das verstehe ich jetzt nicht^^ Arbeitet man mit Klassen, so arbeitet man
doch automatisch auch mit Objekten ;-) Ansonsten machen die Klassen bzw.
OOP nicht viel Sinn...
Ich hab nicht gesagt, ich hätte noch nicht mit Objekten zu tun gehabt.
Nur unter PHP halt noch nicht, deswegen kenne ich die Zugriffe darauf
noch nicht. Klassen sind der Weg zu Objekten, aber nach meinem
Wissensstand haben Objekte auch noch Eigenschaften. Bisher habe ich
Klassen nur Variablen zur Verarbeitung übergeben und vielleicht hier und
da einen Ansatz zu Objekten drin gehabt.
Ob jetzt eine Funktion aus der lib.php ein String, Integer oder Bool
zurück gibt oder eine Klasse ein Objekt, das die gleichen Infos liefert,
macht keinen Unterschied. Es ist nur ein anderer Zugriff auf die Daten.
Wir werden sehen, wie man beide Branches zusammenbringen werden. Ich bin
zuversichtlich, dass es uns gelingen wird.
Ich habe gerade die partsinfo.php auf Templates umgestellt. Dabei ist
mir aufgefallen, das die Auflistung eine Schleife enthält, die aber wohl
nur einen Datensatz durchläuft.
1
$result = parts_select( $_REQUEST["pid"]);
2
while ( $data = mysql_fetch_assoc( $result))
3
{
4
...
5
}
Wenn ich das System richtig verstehe, kann PID nur einen Wert annehmen,
da parts_select() nur ein Ergebnis zurückliefert. Die Schleife wird also
nur einmal durchlaufen. Somit ist sie überflüssig. Liege ich da richtig
in meiner Annahme?
Udo Neist schrieb:> Ich hab nicht gesagt, ich hätte noch nicht mit Objekten zu tun gehabt.> Nur unter PHP halt noch nicht, deswegen kenne ich die Zugriffe darauf> noch nicht. Klassen sind der Weg zu Objekten, aber nach meinem> Wissensstand haben Objekte auch noch Eigenschaften. Bisher habe ich> Klassen nur Variablen zur Verarbeitung übergeben und vielleicht hier und> da einen Ansatz zu Objekten drin gehabt.
Ach so, okay :-)
Naja schwierig ist es nicht, einfach wie bei anderen Sprachen mit dem
"new" Operator neue Objekte anlegen usw. Ich selber habe ja bis vor
kurzem nichtmal PHP programmiert, und jetzt habe ich 22 Klassen erstellt
in PHP (und das was ich bisher getestet habe, funktioniert auch :-)
Eigentlich ist ja vieles sehr änlich wie in C++, vorallem der
objektorientierte Teil. Und wenn man sich mal etwas nicht sicher ist,
findet man im Internet für fast alles eine Erklärung.
Udo Neist schrieb:> Wenn ich das System richtig verstehe, kann PID nur einen Wert annehmen,> da parts_select() nur ein Ergebnis zurückliefert. Die Schleife wird also> nur einmal durchlaufen. Somit ist sie überflüssig. Liege ich da richtig> in meiner Annahme?
Würde ich jetzt auch meinen, ja. Es darf ja keine zwei Teile mit der
gleichen ID geben.
Übrigens kommt mir noch in den Sinn, dass ich mal daran dachte die
device.php zu löschen, und deren Aufgabe auch in die deviceinfo.php
einzubauen. Dann bräuchte das JavaScript-Menü der Baugruppen nicht mehr
zwei unterschiedliche Links (device.php oder deviceinfo.php). Das
JavaScript-Menü wird bei mir nun ja in der Klasse "StructuralDBElement"
erzeugt, und ist somit für Footprints, Kategorien, Baugruppen usw.
verwendbar, aber das System muss natürlich einheitlich sein. Da sind
solche "Extrawürste" wie zwei unterschiedliche URLs nicht erwünscht.
Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens
würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php
nennen, das ist aussagekräftiger und wird ja bereits bei der
showparts.php verwendet.
Urban B. schrieb:> Ach so, okay :-)> Naja schwierig ist es nicht, einfach wie bei anderen Sprachen mit dem> "new" Operator neue Objekte anlegen usw. Ich selber habe ja bis vor> kurzem nichtmal PHP programmiert, und jetzt habe ich 22 Klassen erstellt> in PHP (und das was ich bisher getestet habe, funktioniert auch :-)> Eigentlich ist ja vieles sehr änlich wie in C++, vorallem der> objektorientierte Teil. Und wenn man sich mal etwas nicht sicher ist,> findet man im Internet für fast alles eine Erklärung.
Ich hab mir die PHP-Interpretation angeschaut. Im Prinzip hab ich das ja
schon in den Klassen drin. Nur noch nie so betrachtet :-)
C++ hab ich mal angefangen, aber bin nicht weit gekommen. Ich hab
irgendwo die C++-Bibel, nur finde ich die gerade nicht. Hab mir die
ganzen Sachen selbst beigebracht :-)
> Würde ich jetzt auch meinen, ja. Es darf ja keine zwei Teile mit der> gleichen ID geben.
Ich nehme das mal raus. Überflüssiges müssen wir nicht mitschleppen.
> Übrigens kommt mir noch in den Sinn, dass ich mal daran dachte die> device.php zu löschen, und deren Aufgabe auch in die deviceinfo.php> einzubauen. Dann bräuchte das JavaScript-Menü der Baugruppen nicht mehr> zwei unterschiedliche Links (device.php oder deviceinfo.php). Das> JavaScript-Menü wird bei mir nun ja in der Klasse "StructuralDBElement"> erzeugt, und ist somit für Footprints, Kategorien, Baugruppen usw.> verwendbar, aber das System muss natürlich einheitlich sein. Da sind> solche "Extrawürste" wie zwei unterschiedliche URLs nicht erwünscht.>> Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens> würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php> nennen, das ist aussagekräftiger und wird ja bereits bei der> showparts.php verwendet.
Ich bin auch dafür, möglichst viel zu vereinheitlichen. Wenn es sinnvoll
ist, warum auch nicht. Ich werde beides mal umsetzen :-)
So... deviceinfo.php ist erstmal ein Wrapper für showdevices.php. Sobald
ich das auf vlibTemplate umgeschrieben habe, werde ich mir device.php
schnappen und integrieren.
Die deviceinfo.php ist in showdevices.php umbenannt und schätzungsweise
zu 50% auf vlibTemplate umgestellt.
Anmerkungen:
1) Mir ist aufgefallen, dass manche Beschreibungen bzw. Überschriften
der Funktionsblöcke auf der Webseite zu Verwirrungen führen können. Auf
Anhieb hätte ich nicht gewußt, dass "Benötigte Teile abfassen" die
Entnahme eines oder mehrerer kompletten Bausatzes/Bausätze bedeutet. Es
wäre hilfreich, wenn man die Hilfe auch in Form von Tooltips anbieten
würden. Man könnte am rechten Rand der Überschrift ein kleines
Fragezeichen einbauen, welches dann den Tooltip präsentiert.
2) Warum bei "Zugeordnete Bauteilen" rechts das Kästchen für "Entfernen"
markieren und dann über den Button "Löschen" löschen? Das könnte man
doch in die Funktion hinter "Übernehmen" integrieren. Schließlich will
man ja das als Änderung übernehmen. Etwas unlogisch nach meiner Meinung.
3) Die Javscript-Funktion validatePosIntNumber() erlaubt keine Änderung
per "Backspace", "Ins", "Del" oder den Cursortasten. Mein Vorschlag:
Udo Neist schrieb:>> Vielleicht könntest du das ja noch bei Gelegenheit einbauen? Übrigens>> würde ich dann vielleicht die deviceinfo.php auch gleich showdevices.php>> nennen, das ist aussagekräftiger und wird ja bereits bei der>> showparts.php verwendet.>> Ich bin auch dafür, möglichst viel zu vereinheitlichen. Wenn es sinnvoll> ist, warum auch nicht. Ich werde beides mal umsetzen :-)
Wunderbar, danke :-)
Udo Neist schrieb:> 1) Mir ist aufgefallen, dass manche Beschreibungen bzw. Überschriften> der Funktionsblöcke auf der Webseite zu Verwirrungen führen können. Auf> Anhieb hätte ich nicht gewußt, dass "Benötigte Teile abfassen" die> Entnahme eines oder mehrerer kompletten Bausatzes/Bausätze bedeutet. Es> wäre hilfreich, wenn man die Hilfe auch in Form von Tooltips anbieten> würden. Man könnte am rechten Rand der Überschrift ein kleines> Fragezeichen einbauen, welches dann den Tooltip präsentiert.
Klingt gut. Wenn es aber mal noch eine richtige Dokumentation geben
wird, würde ein Link auf die entsprechende Stelle in der Doku ja auch
genügen.
Udo Neist schrieb:> 2) Warum bei "Zugeordnete Bauteilen" rechts das Kästchen für "Entfernen"> markieren und dann über den Button "Löschen" löschen? Das könnte man> doch in die Funktion hinter "Übernehmen" integrieren. Schließlich will> man ja das als Änderung übernehmen. Etwas unlogisch nach meiner Meinung.
Jup, das finde ich auch. Ausserdem verbraucht die "Löschen"-Spalte
extrem viel Platz, obwohl nur kleine Kästchen drin stehen. Vielleicht
könnte man auch da noch etwas verbessern, also den Platz besser
ausnutzen.
Udo Neist schrieb:> 3) Die Javscript-Funktion validatePosIntNumber() erlaubt keine Änderung> per "Backspace", "Ins", "Del" oder den Cursortasten. Mein Vorschlag:
Jo, wenns funktioniert --> einbauen :-)
Ich habe vor 2 Wochen zu Testzwecken auch mal die Datenbank (Version
0.2.2) in der Firma/Abteilung) installiert.
Wir sind eine 7 Mann große Entwicklungsabteilung und haben unser
Bauteilellager bisher mit Excel 'gepflegt'. Ich habe dann mal so vor 2
Wochen den Vorschlag gemacht sich diese Datenbank mal anzusehen.
Was ich bisher so von den Kollegen gehört habe klang sehr positiv.
Bevor ich jetzt aber unsere Excel-Tabelle in die Datenbank überführe
würde mich interessieren, wann ihr meint in etwa mit dem Zusammenführen
eurer Branches fertig zu sein. Wenn das jetzt nur so 2-3 Wochen dauert,
würde ich noch warten ;-)
Wenn ich das richtig verstanden habe ist es in der neuen Version dann
möglich einem Bauteil mehreren Lieferanten zuzuordnen?
Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen
zu können?
Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites
Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man
nicht da zum bereits offenem Dialog wieder zurückkehren?
Eine Suche nach Preis oder die Splate Preis bei den Suchergebnissen
währe sicher sehr hilfreich.
Wenn ihr noch jemandem zum Test braucht, kann ich euch da auch gerne
weiterhelfen. Ich habe die Datenbank in einer XEN-Domu am laufen und
kann die schnell klonen und so auch Tests mit einer umfangreichen
Datenbank machen.
Mit PHP und MySQL kenn ich mich auch etwas aus, kleinere Aufgaben kann
ich auch gerne übernehmen.
M. K. schrieb:> Ich habe vor 2 Wochen zu Testzwecken auch mal die Datenbank (Version> 0.2.2) in der Firma/Abteilung) installiert.>> Wir sind eine 7 Mann große Entwicklungsabteilung und haben unser> Bauteilellager bisher mit Excel 'gepflegt'. Ich habe dann mal so vor 2> Wochen den Vorschlag gemacht sich diese Datenbank mal anzusehen.> Was ich bisher so von den Kollegen gehört habe klang sehr positiv.
Das freut uns natürlich :-)
M. K. schrieb:> Bevor ich jetzt aber unsere Excel-Tabelle in die Datenbank überführe> würde mich interessieren, wann ihr meint in etwa mit dem Zusammenführen> eurer Branches fertig zu sein. Wenn das jetzt nur so 2-3 Wochen dauert,> würde ich noch warten ;-)
Also ich von meiner Seite würde sagen, dass ich in ca. 5 Wochen die
Klassen einigermassen fertig habe. Ab dann wird es aber sicher nochmal 1
bis 2 Wochen dauern bis die beiden Branches zusammengeführt und
lauffähig sind. Bis dann ein neues Downloadarchiv rauskommt (also eine
als "stabil" bezeichnete Version) wird es dann aber nochmal ein weilchen
dauern, die neue Version muss ja erst noch gründlich getestet und Fehler
ausgemerzt werden.
Aber warten musst du ja eigentlich nicht, du kannst auch die Version
0.2.2 oder die aktuelle SVN Version benutzen bis die "brandneue" Version
rauskommt. Danach kannst du einfach deine Version aktualisieren, das ist
kein Problem, die Datenbankstruktur wird automatisch angepasst. Part-DB
ist so gebaut, dass man problemlos immer auf die neuste Version
aktualisieren kann.
M. K. schrieb:> Wenn ich das richtig verstanden habe ist es in der neuen Version dann> möglich einem Bauteil mehreren Lieferanten zuzuordnen?
Jup, genau. Und auch den Bezug der Preise auf eine bestimmte
Bestellmenge wird dann vermutlich möglich sein.
> Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen> zu können?
Hmm...Also ich würde da jetzt nicht direkt einen Sinn erkennen. Ich
würde ähnliche Bauteile (genau gleich werden sie ja kaum sein), die von
anderen Herstellern stammen, als separate Bauteile abspeichern. Dieses
hat dann ja auch wieder andere Bestellnummern, andere Lieferanten,
andere Preise. Gemeinsamkeiten unter den verschiedenen Teilen gibt es
dann ja kaum noch (softwaretechnisch betrachtet, nicht die Bauteile an
sich verglichen).
Wenn du aber einen guten Grund hast, warum diese Funktion Sinn machen
würde, dann immer her damit :-)
M. K. schrieb:> Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites> Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man> nicht da zum bereits offenem Dialog wieder zurückkehren?
Entweder habe ich dich falsch verstanden, oder dieses Verhalten ist in
der aktuellen SVN-Version nicht mehr so vorhanden. Ich habe leider grad
keine 0.2.2er Version installiert, kann es also grad nicht testen.
Wenn die Online-Demo funktionieren würde, könntest du es dort rasch
probieren. Aber irgendwie scheint der ganze Server momentan ein Problem
zu haben, sogar auf der normalen Seite von K.J. kommen MySQL Fehler. Ich
schreib ihm mal eine PN...
M. K. schrieb:> Eine Suche nach Preis oder die Splate Preis bei den Suchergebnissen> währe sicher sehr hilfreich.
Es ist geplant, dass die Tabellen(spalten) individuell anpassbar werden
sollen. Allerdings wird das noch eine ganze Weile dauern, da wir zuerst
die Benutzerverwaltung brauchen. Wenn es dringend ist, müsstest du es
halt selber einbauen, oder nochmal hier nachfragen ob es jemand von uns
machen kann (also nur für dich, nicht allgemein). Sollte keine grosse
Sache sein.
M. K. schrieb:> Wenn ihr noch jemandem zum Test braucht, kann ich euch da auch gerne> weiterhelfen.
Wie ich schon weiter oben einmal geschrieben habe: Tester kann man immer
brauchen :-) Alles was wir uns von euch wünschen, ist Feedback :-)
Speziell wenn Part-DB beruflich eingesetzt wird, sind die
Anforderungen/Erwartungen an die Software ja anders als bei privater
Nutzung. Da Part-DB vermutlich (noch?) nicht stark im beruflichen Umfeld
genutzt wird, sind die Feedbacks von solchen Benutzern speziell wichtig.
Gruss
Urban
Urban B. schrieb:> Ich würde dir empfehlen, dass du erstmal deine komplette Datenbank> sicherst (z.B. über phpMyAdmin oder mysqldump). Dann lädst du die neuste> Version aus dem SVN herunter. Den Link dazu gibts hier:> https://code.google.com/p/part-db/source/checkout und Anleitungen findet> man über Google.>> Einfach die alten Dateien mit den neuen aus dem SVN überschreiben.> Danach kannst du die Version austesten, schauen ob alles so läuft wie es> soll. Ich habe immer die neuste SVN-Version als Produktivsystem> installiert und hatte noch nie wirklich Probleme.
Steig da grad bei der Struktur auf Google code nicht ganz durch.
Muss ich da die einzelnen Branches einfach nachinstallieren, oder gibts
da irgendwo ein komplettarchiv dass ich dann einfach komplett einspiele?
Wollte da grad mal loslegen aber da habperts schon weil ich bei google
code nur einzelne files runterladen kann, vielleicht hab ich da auch nur
was übersehen?!?
kirk disen schrieb:> Muss ich da die einzelnen Branches einfach nachinstallieren, oder gibts> da irgendwo ein komplettarchiv dass ich dann einfach komplett einspiele?> Wollte da grad mal loslegen aber da habperts schon weil ich bei google> code nur einzelne files runterladen kann, vielleicht hab ich da auch nur> was übersehen?!?
Du brauchst einen SVN Client (ein Programm) um das komplette Projekt
herunterladen zu können.
Für Windows gibts dieses hier: http://tortoisesvn.net/
Für Linux muss das Paket "subversion" installiert sein.
Mit diesem Programm können dann die Dateien heruntergeladen werden. Du
musst das Programm einfach mit diesem Link füttern:
1
http://part-db.googlecode.com/svn/trunk/
Wie TortoiseSVN genau funktioniert weiss ich nicht, da ich Linux
verwende. Aber es sollte genügend Anleitungen dazu geben im Internet.
Die Verzeichnisse "uneist" und "kami89" unterhalb von
http://part-db.googlecode.com/svn/branches/ sind aktuell in Entwicklung
und sollen nach der Zusammenführung die neue Version von Part-DB werden.
Ich schätze, es dürfte Weihnachten werden, bis wir soweit sind. Das
Update wird auf alle Fälle so unkompliziert wie möglich gemacht. Wir
sind dabei, einen Update-Mechanismus dafür zu entwickeln :-)
Danke erstmal mti dem Tipp zum Tortoise SVN. Aber warum so kompliziert?
wäre es denn nicht sinnvoll einfach ein aktuelles Package mit den ganzen
Files online zu stellen? Bin ansich kein Freund von Client Programmen
weshalb ich auch so erfreut über eure offene Part-DB bin. Einziger
Vorteil den ich aktuell sehe durch das SVN ist dass Traffic gespart wird
falls neue Versionen rauskommen wobei das bei der aktuellen Nutzerzahl
wohl eher unwichtig ist. Das soll ja die neue Version von Part-DB
selbstständig managen können so wie ich das aktuell lese. Erklär mir
jetzt bitte noch wie man dem "umständlichen" SVN das verklickert die
Files in nem Ordner zu laden. hab das grad beim 3. versuch immernoch
nicht hinbekommen...
kirk disen schrieb:> Aber warum so kompliziert?> wäre es denn nicht sinnvoll einfach ein aktuelles Package mit den ganzen> Files online zu stellen?
Das SVN ist eigentlich nur für die Entwickler gedacht, nicht für die
"Endkunden". Mit dem SVN können wir nämlich sehr bequem und schnell
Änderungen in Google Code hochladen, Branches erstellen, Branches
verschmelzen, Versionen verwalten, Änderungen nachvollziehen usw. Es
gibt eine Menge Vorteile für uns Entwickler. Gerade auch wenn eben
mehrere Personen am gleichen Projekt arbeiten. Und natürlich kann man
eben seine eigene, lokal installierte Testversion ganz einfach immer
aktuell halten.
Der "Nachteil" ist aber, dass die (aktuellste) SVN-Version nicht immer
stabil läuft, noch Fehler enthält usw. weil eben mehrere Leute dran
"rumfummeln" und sich auch mal gegenseitig in die Quere kommen können.
Ist also wirklich nicht für die Endkunden gedacht, das würde nur Ärger
geben.
Zwischendurch, wenn wir der Ansicht sind dass die aktuelle SVN-Version
stabil und fehlerfrei läuft, stricken wir ein Archiv zusammen, das dann
in Google Code unter "Downloads" erscheint. Das ist dann die offizielle
stable-Version die für die Endkunden bestimmt ist.
Da aber unser Projekt noch einigermassen überschaubar ist (verglichen
mit anderen SVN Projekten), nicht zu viele Leute dran rumschrauben und
die aktuelle SVN-Version gar nicht schlecht läuft, "darf" man momentan
auch die SVN-Version benutzen wenns sein muss.
kirk disen schrieb:> Das soll ja die neue Version von Part-DB> selbstständig managen können so wie ich das aktuell lese.
Genau. Das würde das Updaten dann sehr bequem machen.
kirk disen schrieb:> Erklär mir> jetzt bitte noch wie man dem "umständlichen" SVN das verklickert die> Files in nem Ordner zu laden.
Was willst du genau machen? Die Dateien aus dem SVN herunterladen? Wie
gesagt, bei TortoiseSVN kenne ich mich überhaupt nicht aus.
Bei Linux geht es sehr bequem mit einem einzigen Terminalbefehl:
Udo Neist schrieb:> Das> Update wird auf alle Fälle so unkompliziert wie möglich gemacht. Wir> sind dabei, einen Update-Mechanismus dafür zu entwickeln :-)
Das hört sich sehr gut an. Dann werde ich erst einmal bei Version 0.2.2
bleiben und mich dann auf die nächste Version freuen ;-)
Urban B. schrieb:> M. K. schrieb:>> Dann ist uns aufgefallen das beim anlegen von Bauteilen ein zweites>> Fenster aufpoppt wenn man neue Footprints/Lagerorte anlegt, kann man>> nicht da zum bereits offenem Dialog wieder zurückkehren?>> Entweder habe ich dich falsch verstanden, oder dieses Verhalten ist in> der aktuellen SVN-Version nicht mehr so vorhanden. Ich habe leider grad> keine 0.2.2er Version installiert, kann es also grad nicht testen.
Ich habe mal ein Bild angehangen, wenn man auf die rot eingekreisten
Buttons klickt öffnet sich ein neues Popup mit der selben Maske wo dann
nur die DropDown-Listen aktualisiert sind.
Es scheint nur den Internet Explorer (IE 8.0) zu betreffen der Firefox
12 macht dies nicht.
Ein paar Fragen zu dem CSV-Import:
Im Beispiel wird vor den Daten eine Zeile mit den Spaltennamen
angegeben, sind in dem Beispiel alle Spalten aufgeführt die es gibt und
das # am Anfang muss auch sein?
Hier nochmal das Beispiel von der Seite:
Wenn ich die Vorschaubilder(Footprints) benutzen möchte muss ich bei
Footprint exakt den Namen des Vorschaubildes angeben?
Die Lagerorte haben bei uns Unterkategorien, wie kann ich die in der
CSV-Datei angeben? z.B. Schubladenkästen -> S-0123
Das gleiche bei den Bauteilkategorien.
M. K. schrieb:> Ich habe mal ein Bild angehangen, wenn man auf die rot eingekreisten> Buttons klickt öffnet sich ein neues Popup mit der selben Maske wo dann> nur die DropDown-Listen aktualisiert sind.> Es scheint nur den Internet Explorer (IE 8.0) zu betreffen der Firefox> 12 macht dies nicht.
Ah ja, stimmt, beim IE läuft da was falsch :-)
Ich habe den Fehler auch schon gefunden und lade ihn gleich noch ins SVN
hoch. Wer nicht auf die SVN-Version aktualisieren will, kann die
Änderungen auch selber durchführen.
Dazu einfach die folgenden Dateien herunterladen und die alten Dateien
damit überschreiben:
https://part-db.googlecode.com/svn-history/r512/trunk/editpartinfo.phphttps://part-db.googlecode.com/svn-history/r512/trunk/newpart.php
Dann muss man in der newpart.php die Zeile 145
1
$p_footprint = footprint_add( $NewFootprint, '');
ersetzen durch diese Zeile:
1
$p_footprint = footprint_add( $NewFootprint);
Und ausserdem muss in der alten partinfo.php eine neue Zeile (Nr. 54)
eingefügt werden:
54: <base target="_self" /> <!-- Diese Zeile ist neu -->
7
55:</head>
@Udo
Kannst du diese Änderungen auch gleich in deinen Branch übernehmen? Und
natürlich sollte der Header immer vor der ersten Ausgabe geschrieben
werden, was in der editpartinfo.php momentan nicht so ist. Da habe ich
etwas "gebastelt", da es eh nur eine Übergangslösung ist (die Seite wird
ja eh noch auf Templates umgestellt).
M. K. schrieb:> Ein paar Fragen zu dem CSV-Import:> Im Beispiel wird vor den Daten eine Zeile mit den Spaltennamen> angegeben, sind in dem Beispiel alle Spalten aufgeführt die es gibt und> das # am Anfang muss auch sein?
Ja es sind alle Spalten aufgeführt, die existieren. Und alle Zeilen mit
einem # am Anfang werden einfach ignoriert, das sind nur Kommentare
(brauchts also nicht).
M. K. schrieb:> Wenn ich die Vorschaubilder(Footprints) benutzen möchte muss ich bei> Footprint exakt den Namen des Vorschaubildes angeben?
Ja, in Version 0.2.2 ist das noch so. Die aktuelle SVN-Version
unterscheidet nun zwischen Footprint-Name und Dateiname (sind also
unabhängig voneinander). Allerdings ist das Zuweisen eines Bildes noch
nicht sehr bequem möglich, mann muss direkt den Dateinamen inkl. Pfad
angeben. Es gibt aber immerhin einen Trick: Einfach den Dateinamen (ohne
Pfad) eingeben, und so speichern. Danach ist dieser Footprint unter
"Fehlerhafte Dateinamen" aufgelistet (mit einem Vorschlag als
Dateinamen) und man muss nur noch bestätigen, dass der neue Pfad
übernommen wird.
Das ist halt alles noch ein bisschen provisorisch weil uns der neue
Uploadmanager noch fehlt (bzw. der Programmierer, der ihn programmiert)
;-)
M. K. schrieb:> Die Lagerorte haben bei uns Unterkategorien, wie kann ich die in der> CSV-Datei angeben? z.B. Schubladenkästen -> S-0123> Das gleiche bei den Bauteilkategorien.
Das automatische Anlegen von Kategorien funktioniert meines Wissens
nicht mit Unterkategorien. Alle noch nicht existierenden Kategorien
werden unter der Kategorie "Import" abgelegt.
Existieren die Kategorien aber bereits, dann brauchst du nur den
direkten Kategorienamen anzugeben (ohne Pfad), das müsste funktionieren.
Allerdings funktioniert das nur dann zuverlässig, wenn es nur eine
einzige Kategorie mit diesem Namen gibt!
Für deinen Fall wäre die einzig gescheite Lösung also, dass du alle
Kategorien schon vorher von Hand anlegst. Wäre das zu aufwändig (hast du
viele Kategorien)? Dann könnte vielleicht auch jemand das Importscript
so abändern, dass man auch ganze Pfade angeben kann, und die dann auch
so angelegt werden...
Urban B. schrieb:> Für deinen Fall wäre die einzig gescheite Lösung also, dass du alle> Kategorien schon vorher von Hand anlegst. Wäre das zu aufwändig (hast du> viele Kategorien)? Dann könnte vielleicht auch jemand das Importscript> so abändern, dass man auch ganze Pfade angeben kann, und die dann auch> so angelegt werden...
Soviele sind es nicht, diese vorher per Hand anzulegen dürfte recht gut
gehen. Die Lagerorte sind eindeutig, die Bauteilkategorien sollten auch
eindeutig sein, wenn nicht lässt sich da sicher ein wenig tricksen.
Mehr Arbeit habe ich im Moment sowieso damit die Daten aus Excel
aufzubereiten :-/
Urban B. schrieb:>> Macht es vielleicht auch Sinn einem Bauteil mehrere Hersteller zuordnen>> zu können?>> Hmm...Also ich würde da jetzt nicht direkt einen Sinn erkennen. Ich> würde ähnliche Bauteile (genau gleich werden sie ja kaum sein), die von> anderen Herstellern stammen, als separate Bauteile abspeichern. Dieses> hat dann ja auch wieder andere Bestellnummern, andere Lieferanten,> andere Preise. Gemeinsamkeiten unter den verschiedenen Teilen gibt es> dann ja kaum noch (softwaretechnisch betrachtet, nicht die Bauteile an> sich verglichen).>> Wenn du aber einen guten Grund hast, warum diese Funktion Sinn machen> würde, dann immer her damit :-)
Darüber haben wir gerade nochmal überlegt, dann ist uns aufgefallen das
es überhaupt keine Spalte für den Hersteller gibt. :D
Wahrscheinlich reicht es uns wenn wir solche Bauteile dann doppelt
anlegen.
Was aber öfters vorkommt ist, das wir 2 Bauteile an 2 Lagerorten haben.
Eine kleine Menge in unseren Schubladenkästen für Prototypen und eine
größere Menge die wir evtl. unseren Bestücker für die erste Serie
beistellen. Manchmal passen die Teile auch nicht in eine Schublade dann
wird das auf 2 oder 3 Schubladen aufgeteilt.
Man kann dafür zwar auch mehrere Bauteile anlegen, wenn sich dann aber
der Preis, Bestellnummer, Datenblatt ändert muss man halt daran denken
bei allen die Änderung durchzuführen.
M. K. schrieb:> Darüber haben wir gerade nochmal überlegt, dann ist uns aufgefallen das> es überhaupt keine Spalte für den Hersteller gibt. :D> Wahrscheinlich reicht es uns wenn wir solche Bauteile dann doppelt> anlegen.
Ja, noch gibt es keine solche Spalte, aber die kommt noch :-)
M. K. schrieb:> Was aber öfters vorkommt ist, das wir 2 Bauteile an 2 Lagerorten haben.> Eine kleine Menge in unseren Schubladenkästen für Prototypen und eine> größere Menge die wir evtl. unseren Bestücker für die erste Serie> beistellen.
Hmm ja, ich denke darüber lässt sich nachdenken. Mal schauen ob wir das
so einbauen werden.
Urban B. schrieb:> @Udo> Kannst du diese Änderungen auch gleich in deinen Branch übernehmen? Und> natürlich sollte der Header immer vor der ersten Ausgabe geschrieben> werden, was in der editpartinfo.php momentan nicht so ist. Da habe ich> etwas "gebastelt", da es eh nur eine Übergangslösung ist (die Seite wird> ja eh noch auf Templates umgestellt).
Ich habe die Änderungen gerade eingepflegt :-) Meine aktuelle Version
stelle ich heute abend ins SVN, unabhängig von der Freigabe der neuen
Lizenzinfo.
Von meiner Seite ist es auch geplant, die Popups auf Pseudo-Popups
(DIV-Blöcke, die über die Seite gelegt werden und wie neue Fenster
aussehen) zu ändern. Aber lasst mich erstmal die Templates erstellen und
die Klassen zusammen mit Urban integrieren :-)
Udo Neist schrieb:> Ich habe die Änderungen gerade eingepflegt :-) Meine aktuelle Version> stelle ich heute abend ins SVN, unabhängig von der Freigabe der neuen> Lizenzinfo.
Wunderbar :-) Ich habe K.J mal eine PN geschickt, auch deine
Lizenzänderung habe ich erwähnt. Jedoch hat er bisher nicht geantwortet.
Es erstaunt mich dass dieser Bug erst jetzt gemeldet wurde, es war ein
extrem nerviges Verhalten wenn man den IE verwendet. Es waren nicht nur
die genannten drei Buttons betroffen, es gab auch noch andere
Situationen in denen unnötig neue Popups geöffnet wurden. Naja
vielleicht arbeitet einfach kein Mensch mehr mit dem IE ;-)
Udo Neist schrieb:> Von meiner Seite ist es auch geplant, die Popups auf Pseudo-Popups> (DIV-Blöcke, die über die Seite gelegt werden und wie neue Fenster> aussehen) zu ändern.
Klingt gut, bin gespannt wie das aussehen wird :-)
Revision 513:
- neue Lizenzinfo in den Scripten, abgesehen von externen
Third-Party-Modulen
- diverse Templates erstellt, darunter für die Tools
- Änderung von validatePosIntNumber()
- Erstes Updatesystem für die Datenbank: soll auf einem spezifierten
Server nach einem Update für die Datenbank suchen und installieren
- Bugfix (siehe ein paar Posts weiter oben)
Infos zum Updatesystem:
Das Updatesystem prüft auf einem spezifizierten Server, ob zur
installierten Datenbank ein passendes Update vorliegt. Die aktuelle
Datenbank trägt die Version 12. Das neue System verlangt eine Version,
Subversion und Revision. Dafür legt die derzeitige update.php über das
mitgelieferte update/part-db_update_rev12.zip zwei zusätzliche Einträge
dbSubversion und dbRevision in der Tabelle internal an. Damit
können wir sehr genau steuern, welche Version wir zum Update anbieten.
Treten Fehler in unseren Versionen auf, soll ein passender Mechanismus
ein Rollback und ein neues Update ermöglichen. Geplant ist es, die
betreffenden Tabellen bzw. die gesamte Datenbank zuvor zu sichern.
Ob das Updatesystem auch ein Online-Update der Scripte/Templates
ermöglicht, das kann man zum jetzigen Zeitpunkt noch nicht sagen.
Udo Neist schrieb:> Das Updatesystem prüft auf einem spezifizierten Server, ob zur> installierten Datenbank ein passendes Update vorliegt. Die aktuelle> Datenbank trägt die Version 12. Das neue System verlangt eine Version,> Subversion und Revision. Dafür legt die derzeitige update.php über das> mitgelieferte update/part-db_update_rev12.zip zwei zusätzliche Einträge> dbSubversion und dbRevision in der Tabelle internal an. Damit> können wir sehr genau steuern, welche Version wir zum Update anbieten.
Das verstehe ich nicht ganz. Wir sollten kein Durcheinander mit dem
Update der Datenbank, und dem Update des Systems (die Dateien) machen.
Die Updatefunktion der Datenbank finde ich so wie sie momentan ist,
eigentlich sehr gut. Es ist total unkompliziert und vorallem aber prüft
sie quasi immer, ob das aktuell installiere System (die Dateien) eine
neuere Datenbankversion braucht als die aktuell installierte. Es ist so
quasi ein sehr selbstständiges und unkompliziertes System. Und
ausserdem, was ich auch noch sehr wichtig finde: Wenn jemand die
Updatefunktion des Systems nicht nutzen will oder kann, aber trotzdem
eine aktuelle Version haben will, der kann weiterhin problemlos die
neuen Dateien einfach von Hand auf den Server laden. Ein eventuell
notwendiges Datenbankupdate wird dann automatisch durchgeführt wenn die
db_update.php mit einer neueren Version überschrieben wurde.
Daher denke ich wir sollten es nicht unnötig kompliziert machen. Also
das Datenbankupdate und das Systemupdate sollen unabhängig voneinander
funktionieren, und das tun sie wenn wir das Datenbankupdate genau so
lassen wie es jetzt ist.
Beim Systemupdate dachte ich, dass ein Updatearchiv einfach alle neuen
(geänderten) Dateien enthalten soll, auch Footprint-Bilder usw. Durch
ein einfaches Entpacken werden dann alle Dateien überschrieben. Und
damit man auch Dateien löschen, verschieben usw. kann, wäre vielleicht
ein im Archiv enthaltenes Shell-Script eine einfache, aber sehr flexible
Lösung. Dieses Skript soll sich vielleicht nach einem erfolgreichen
Ausführen gleich automatisch Löschen, dann bräuchten wir nichtmal zu
überprüfen ob das Skript bereits ausgeführt wurde, oder ob es noch
ausgeführt werden muss.
EDIT: Oder man benutzt genau das gleiche Prinzip wie beim
Datenbankupdate. Das Skript enthält ein switch-case, mit einem case pro
Systemversion. Das wäre meiner Meinung nach eine gut geeignete Lösung.
> Treten Fehler in unseren Versionen auf, soll ein passender Mechanismus> ein Rollback und ein neues Update ermöglichen. Geplant ist es, die> betreffenden Tabellen bzw. die gesamte Datenbank zuvor zu sichern.
Für die Datenbank soll es dazu in meiner Datenbankklasse ja die
Funktionen backup() und restore() geben. Fürs System müsste man wohl
zuerst alle Dateien sichern (zippen?), um sie auch wiederherstellen zu
können. Zumindest die Systemdateien (ohne Bilder, das wäre wohl zu viel
des Guten).
Ach übrigens, K.J. hat auf meine PN geantwortet und schrieb dass die
Lizenzänderung so in Ordnung sei.
Hmm nach einigem Nachdenken gefällt mir mein Vorschlag zwar auch nicht
mehr so gut, also vergiss diesen Teil meines letzten Beitrages einfach
wieder^^
Ich bin noch ein bisschen am überlegen wie man es besser machen
könnte...
Das Prinzip neue Softwareversion = neue Datenbankversion bleibt ja
weiterhin bestehen. Dieser Mechanismus soll dafür sorgen, das zur
jeweiligen Software auch immer die richtige Datenbankversion installiert
ist. Wenn es ein Fehler in der Datenbank gibt, können wir den Bugfix auf
diese Weise zur Verfügung stellen. Der jetzige Ansatz bedingt ja, das
wir die Änderungen immer in der db_update.php einbauen. Das wird aber
nicht in jedem Fall auch funktionieren. Nicht jeder hat Zugriff auf die
Dateien von Part-DB und muss daher eine passende Updatefunktion für
Datenbank und System besitzen.
Switch oder If-Sequenzen für jede einzelne Datenbankversion? Das wird
irgendwann unwartbar werden.
Udo Neist schrieb:> Der jetzige Ansatz bedingt ja, das> wir die Änderungen immer in der db_update.php einbauen. Das wird aber> nicht in jedem Fall auch funktionieren. Nicht jeder hat Zugriff auf die> Dateien von Part-DB und muss daher eine passende Updatefunktion für> Datenbank und System besitzen.
Warum hat nicht jeder Zugriff auf die Dateien von Part-DB? Direkten
Dateizugriff hat nicht jeder, das ist klar. Aber ein Update wird ja
nicht vom Benutzer durchgeführt, sondern vom Webserver (auf Linux
standardmässig ja die Gruppe "www-data"). Der Webserver sollte ja in
jedem Fall Zugriff auf die Dateien haben. Hat er kein Schreibrecht im
ganzen Part-DB Ordner, kann man ein automatisches Update natürlich
vergessen, da keine Dateien aktualisiert werden können.
Und per separaten Updates nur die Datenbank zu aktualisieren halte ich
für unnötig. Entweder gibts das ganze Update-Programm oder nix :-)
Aber eigentlich sollte es ja kein Problem darstellen, dass man dem
Benutzer "www-data" Schreibrechte für den ganzen Ordner von Part-DB gibt
oder?
Udo Neist schrieb:> Switch oder If-Sequenzen für jede einzelne Datenbankversion? Das wird> irgendwann unwartbar werden.
Ja das denke ich eben momentan auch gerade. Es wäre schon nicht
schlecht, wenn jedes Update immer nur diejenigen Updateschritte enthält,
die für dieses Update notwendig sind. Das Problem ist dann allerdings,
dass das System wirklich nur noch Version für Version aktualisiert
werden darf. Wenn man immer die Online-Updates benutzt ist das kein
Problem. Will man aber nur manuelle Updates machen, und das nur einmal
im Jahr, dann müsste man ja alle in dieser Zeit veröffentlichten
Update-Pakete separat herunterladen, nacheinander auf den Server
kopieren und jedesmal nach dem Kopieren die Seite im Browser
aktualisieren damit die Updateschritte durchgeführt werden ;-)
Oder hast du für dieses Problem auch eine Lösung? :-)
Urban B. schrieb:> Ja das denke ich eben momentan auch gerade. Es wäre schon nicht> schlecht, wenn jedes Update immer nur diejenigen Updateschritte enthält,> die für dieses Update notwendig sind. Das Problem ist dann allerdings,> dass das System wirklich nur noch Version für Version aktualisiert> werden darf. Wenn man immer die Online-Updates benutzt ist das kein> Problem. Will man aber nur manuelle Updates machen, und das nur einmal> im Jahr, dann müsste man ja alle in dieser Zeit veröffentlichten> Update-Pakete separat herunterladen, nacheinander auf den Server> kopieren und jedesmal nach dem Kopieren die Seite im Browser> aktualisieren damit die Updateschritte durchgeführt werden ;-)>> Oder hast du für dieses Problem auch eine Lösung? :-)
Wenn man das ganze mal weiter spinnt, wäre folgendes wohl sinvoller:
Statt einem Update gäbe es Sammelupdates, also ein Paket von x
SQL-Scripte. Die PHP-Datei würde dann eine Zuordnung SQL-Script zur
Datenbank- und Part-DB-Version beinhalten. Wir würden also zur
Datenbankversion 12 ein Paket anbieten, zur 13 ein anderes, zur 14
wieder ein anderes. Die Updatefunktion durchsucht das Array in der
PHP-Datei nach gültigen Updates für sich und spielt die ein. Im Prinzip
könnten wir so auch die Installation der Datenbank durchführen,
sozusagen als Update Nummer 0 ;-)
So in etwa stelle ich mir das vor:
1
$up2date[12]['sqlscript'][]=12-0-0.sql;
2
$up2date[12]['required'][]=511;
3
$up2date[12]['sqlscript'][]=12-0-1.sql;
4
$up2date[12]['required'][]=553;
5
$up2date[12]['sqlscript'][]=12-0-2.sql;
6
$up2date[12]['required'][]=599;
7
$up2date[12]['sqlscript'][]=12-0-3.sql;
8
$up2date[12]['required'][]=615;
Das Update der Datenbank selbst wäre ja eher ein Sonderfall. Ich kann
mir vorstellen, dass wir das in Richtung Update von Logos, Footprints
u.ä. weiter"spinnen". Es wären also nicht nur SQL-Scripte in dem Archiv,
sondern auch Dateien, die ins System kopiert werden. Wenn man so will,
wäre das das Systemupdate, was wir wollen :-)
Hi, wollte mich mal kurz melden um einiges zu erwähnen:
- Das mit der Lizenz ist ok find auch das jeder der was dran macht sich
ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe
ist das irgendwie blöd:
"- Nick Art der Änderungen Datum"
Ansonsten die Demo DB ist erstmal bis Mo. nicht funktionsfähig, leider
gab es eine Sicherheitslücke im Plesk des Servers, also werde ich den am
WE neu aufsetzen müssen, diesmal ohne Admin Interface ;-)
So ich glaub das war es erstmal, ansonsten per Mail wen was wichtiges
ist (die gmail. addy)
K. J. schrieb:> Hi, wollte mich mal kurz melden um einiges zu erwähnen:>> - Das mit der Lizenz ist ok find auch das jeder der was dran macht sich> ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe> ist das irgendwie blöd:>> "- Nick Art der Änderungen Datum"
Gute Idee :-) Ich denke, das sollten wir im offiziellen
Entwicklungszweig einführen und, wenn die beiden Zweige von Urban und
mir zusammengeführt sind, entsprechend neu starten. Ist ja fast ein
kompletter Rewrite des Codes.
Ich führe in meinem Zweig ein kurzes Logfile, welches die wichtigsten
Änderungen zusammenfasst.
> Ansonsten die Demo DB ist erstmal bis Mo. nicht funktionsfähig, leider> gab es eine Sicherheitslücke im Plesk des Servers, also werde ich den am> WE neu aufsetzen müssen, diesmal ohne Admin Interface ;-)
Aus diesem Grund hab ich auf jegliche Adminoberfläche verzichtet und
nutze nur wenige Webtools. Alles andere geht über die Konsole :-)
Udo Neist schrieb:> Das Update der Datenbank selbst wäre ja eher ein Sonderfall. Ich kann> mir vorstellen, dass wir das in Richtung Update von Logos, Footprints> u.ä. weiter"spinnen". Es wären also nicht nur SQL-Scripte in dem Archiv,> sondern auch Dateien, die ins System kopiert werden. Wenn man so will,> wäre das das Systemupdate, was wir wollen :-)
Jo, ein Updatepaket soll alles mögliche beinhalten: Die neuen
PHP-Dateien, Footprints, IC-Logos, Dokumentation, Updateanweisungen für
exec() und Datenbankupdate.
Wenn wir jetzt die Updatepakete so minimal bauen, dass damit die Version
immer nur um eine erhöht wird, wäre das schlussendlich für das
automatische Update wohl das Beste, da die Pakete dadurch immer nur so
gross sind wie nötig. Und ausserdem ist es zuverlässiger, da nicht die
unmöglichsten Versionssprünge überwunden werden müssen, sondern wirklich
immer nur die jeweils nächstneuere. Also ich meine jetzt dateitechnisch
ist es so sicherer, weil keine Dateivsersionen übersprungen werden
können.
Für die Manuell-Updater müssten wir dann halt ab und zu mal komplette
Updatearchive anbieten, mit denen dann auch grössere Versionssprünge auf
einmal gemacht werden können. Ist halt leider schon wieder ein
zusätzlicher Aufwand für uns Entwickler, aber man muss ja nicht bei
jedem neuen Einzelupdate auch ein Komplettupdate anbieten.
Man könnte vielleicht ja auch der Versionsbezeichnung eine Bedeutung
zuweisen. also wenn die Versionsbezeichnung wie die 0.2.2 aus drei
Zahlen besteht, ist die erste Zahl die Hauptversion, die zweite Zahl
entspricht den Komplettupdatepaketen und die dritte Zahl den
Einzelupdates. Ist aber nur mal ein Vorschlag...
Für die Updates könnte man vielleicht einen neuen Ordner anlegen, z.B.
"updates/". Die Dateien darin sind genau nach der jeweiligen
Versionsnummer benannt, z.B. "0.2.3.inc" (oder php, wie auch immer...).
In den Einzelupdatepaketen ist jeweils nur eine solche Datei vorhanden,
in den Komplettupdatepaketen ist für jede Version, die mit dem Archiv
überwunden werden kann, eine Datei vorhanden. Bei den Komplettupdates
kann es ja auch vorkommen, dass eine gewisse Version Voraussetzung ist,
um problemlos updaten zu können. Also wenn man v0.2.2 installiert hat,
und dann das Komplettpaket v0.4.0 installieren will, das aber unbedingt
v0.3.3 voraussetzt, muss das System merken dass die Update-Dateien für
die Versionen 0.2.2 bis v0.3.3 gar nicht vorhanden sind.
In den jeweiligen Updatedateien sind dann vielleicht folgende
Informationen enthalten:
- Version, die vorausgesetzt wird (normalerweise immer eine Version
tiefer als die von der Datei, aber für Sprünge von z.B. 0.2.9 auf 0.3.0
ist diese Information wichtig)
- Version, die installiert wird (könnte man ev. auch weglassen, da der
Dateinamen diese Information ja schon enthält)
- Kurze Zusammenfassung des Updates (Changelog, der dem Benutzer auch
gezeigt wird damit man weiss was neu ist)
- Eine Updatefunktion, der eine Referenz auf das PDO meiner
Datenbankklasse übergeben wird (und ev. noch weitere Parameter)
- In dieser Funktion sind dann direkt die kompletten Datenbankupdates
enthalten, also nicht nur die SQL-Querys. Dies hat den Vorteil, dass man
einfach flexibler ist. Man kann auch mal ein kompliziertes
Datenbankupdate durchführen, bei dem eine PHP Schleife notwendig ist
oder sowas, da man über das PDO den direkten Vollzugriff auf die
Datenbank hat.
- In der Funktion können auch per exec() noch spezielle Sachen gemacht
werden, wie z.B. nicht mehr benötigte Dateien löschen, Dateien
verschieben usw. Da ist man dann eigentlich völlig frei was man hier
noch machen will.
So, und jetzt lese ich das gleich nochmal ein paarmal durch und finde
bestimmt wieder einige Aspekte die ich noch vergessen habe :-)
K. J. schrieb:> - Das mit der Lizenz ist ok find auch das jeder der was dran macht sich> ja auch da unter verewigen kann in etwa wie folgt wen nur ich da stehe> ist das irgendwie blöd:>> "- Nick Art der Änderungen Datum"
Jo, das finde ich gut. So kann man nämlich sehr schnell nachvollziehen
wer welche Änderung gemacht hat, das ist ab und zu mal nützlich. Wenn
ich einen Vorschlag machen darf, würde ich aber das Datum zu vorderst
schreiben, so dass es dann eine schöne, nach Datum sortierte Liste gibt
:-)
die updatefunktion ist schon schön allerdings muss ich gestehen dass
meine partdb aktuell ohne internetleitung auskommt und das möchte ich
auch ungern ändern schon allein wegen der datensicherheit. updatepakete
wären toll. beim ersten start kann dann das script prüfen ob die
datenbank auf dem neuesten stand ist.
Was mich noch freuen würde wenn man auch andere einheiten benutzen kann
als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel
verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung
bezüglich teile die nicht stückzahlabhängig geführt werden? die
problematik die ich aktuell habe sind dann so sachen wie aderendhülsen
die in massen im lager liegen. wir behelfen uns momentan damit dass wir
einfach 999999 als stückzahl eingeben, allerdings schlägt sich das in
der statistik nieder. im vergleich mit anderen "professionellen"
lagerverwaltungssystemen ist ich die partdb um längen voraus. gibts
schon eine lösung die footprints auszublenden? ich weiss ihr seid voll
im wuseln mit der updateroutine. falls ihr mal ein aktuelles package zum
testen habt das ohne grobe bugs läuft wäre es schön wenn ihr dass mal
irgendwo online stellen könnt. ich würde das dann mal versuchen bei uns
im alltag einzusetzen, da findet man am ehesten fehler und bugs..
gruß
kirk disen schrieb:> die updatefunktion ist schon schön allerdings muss ich gestehen dass> meine partdb aktuell ohne internetleitung auskommt und das möchte ich> auch ungern ändern schon allein wegen der datensicherheit. updatepakete> wären toll. beim ersten start kann dann das script prüfen ob die> datenbank auf dem neuesten stand ist.
Es wird natürlich weiterhin möglich sein, die Updates manuell
einzuspielen. Man lädt sich dann halt die Updatepakete selber im
Internet runder, entpackt sie und kopiert die neuen Dateien auf den
Webserver. Das Update der Datenbank führt dann das System selber durch.
kirk disen schrieb:> Was mich noch freuen würde wenn man auch andere einheiten benutzen kann> als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel> verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung> bezüglich teile die nicht stückzahlabhängig geführt werden?
Daran habe ich noch gar nie gedacht, ist aber natürlich eine sehr gute
Idee. Wird aber wohl auch noch ein Weilchen dauern bis wir das eingebaut
haben. Bis dahin musst du dir halt z.B. bei Kabel einfach vorstellen es
wäre nicht die Stückzahl, sondern die Anzahl Meter ;-)
kirk disen schrieb:> im vergleich mit anderen "professionellen"> lagerverwaltungssystemen ist ich die partdb um längen voraus.
Ja das ist natürlich klar, hier arbeiten keine 50 gut bezahlte Leute je
8 Stunden am Tag an dem Programm :-)
Und die Versionsnummer 0.2.2 sollte auch darauf hinweise, dass es noch
eine sehr frühe Version ist, also noch nicht wahnsinnig fortgeschritten.
kirk disen schrieb:> gibts> schon eine lösung die footprints auszublenden? ich weiss ihr seid voll> im wuseln mit der updateroutine. falls ihr mal ein aktuelles package zum> testen habt das ohne grobe bugs läuft wäre es schön wenn ihr dass mal> irgendwo online stellen könnt. ich würde das dann mal versuchen bei uns> im alltag einzusetzen, da findet man am ehesten fehler und bugs..
Also ich habe dir zuliebe mal rasch eine Funktion eingebaut, damit man
die Footprints deaktivieren kann. Es ist aber keine 100% saubere Arbeit
sondern eher eine Übergangslösung bis es dann in der nächsten Version
richtig eingebaut wird.
Ich habe mal die aktuellste SVN-Version mit diesem neuen Feature hier
angehängt (dann musst du dich nicht auch noch mit dem SVN
auseinandersetzten :-)
Einfach wieder die config.php_template als config.php kopieren und die
Einstellungen setzen. Die neue Variable $disable_footprints müsstest du
dann auf "true" setzen.
kirk disen schrieb:> die updatefunktion ist schon schön allerdings muss ich gestehen dass> meine partdb aktuell ohne internetleitung auskommt und das möchte ich> auch ungern ändern schon allein wegen der datensicherheit. updatepakete> wären toll. beim ersten start kann dann das script prüfen ob die> datenbank auf dem neuesten stand ist.
An sowas hab ich schon gedacht. Es wird zwei Optionen geben: On- oder
Offlineupdate (aus einem lokalen Verzeichnis).
> Was mich noch freuen würde wenn man auch andere einheiten benutzen kann> als nur stückzahlen. aktuell ist es so dass wir im lager auch kabel> verwalten da geht et z.b. um meter, oder habt ihr schon eine lösung> bezüglich teile die nicht stückzahlabhängig geführt werden?
Könnte man in der Kategorie lösen. Dort würde ich quasi die verwendete
Verpackung hinterlegen, z.B. Stk, VE, Meter, Trommel oder einfach nur
ein Schalter für "Vorhanden/Bestellt/Nicht verfügbar". Letzeres wäre für
Massenartikel wie die Aderendhülsen.
Ich habe mir zudem überlegt, ob Part-DB nicht auch Platinen oder Gehäuse
aufnehmen sollte. Damit wären dann die Baugruppen soweit komplett.
> gibts schon eine lösung die footprints auszublenden? ich weiss ihr seid> voll im wuseln mit der updateroutine. falls ihr mal ein aktuelles> package zum testen habt das ohne grobe bugs läuft wäre es schön wenn ihr> dass mal irgendwo online stellen könnt. ich würde das dann mal versuchen> bei uns im alltag einzusetzen, da findet man am ehesten fehler und bugs..
Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle
Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der
Footprints per Konfiguration. Besser wäre es, wenn wir die Grafiken
anders präsentieren. Mir schwebt vor, die Grafiken entweder
user-/gruppengebunden bzw. in der Kategorie schaltbar zu machen oder per
Tooltip bzw. Popup anzuzeigen. Mal schauen :-)
Zu den Updates:
Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete
bereit stellt und zu anderen (z.B. für diejenigen die eine langsame
Internetverbindung haben) eine Update-Funktion.
Die Update-Funktion könnte ich mir so vorstellen dass zuerst einmal die
aktuelle Version ausgelesen wird (z.B. 2.0.1). Das Update soll nun auf
2.0.5 updaten, also erst einmal auf 2.0.2 , dann auch 2.0.3 usw.
Wird die Update-Funktion zu groß, dann setzt man ab da die Version x.x.x
voraus, welche man dann halt komplett herunterladen muss.
So wären die Updatefunktionen überschaubar und man müsste nicht immer
gleich "alles" herunterladen.
Auch denkbar wäre eine Funktion, die immer wenn man Part-DB startet auf
Updates prüft und wenn verfügbar, dann eine Meldung erscheint.
In dem Fall könnte es dann so aussehen, dass man in einem Webordner alle
Updates ablegt. Part-DB schaut nun in den Webordner (bei jedem start)
und listet die Dateien auf, welche mit einer bestimmten Ziffernfolge
beginnen (z.B. PDBU020005 --> Part DB Update 2.0.5) und vergleicht das
mit der eigenen Version. Ist irgendeine Datei im Webordner größer als
die vorhandene, dann wird stückweise geupdatet. Das könnte dann so
aussehen:
Vorhandene Version = 2.0.0 , neuste Version im Webordner 2.0.5 ...
Da ich mich mit PHP nicht auskenne schreibe ich es einfach mal grob auf:
1. Dateien auslesen
2. PDBU aus den Dateinamen filtern und die Dateiendung entfernen, so
dass nur noch die Zahl übrig bleibt, davon die höchste Nummer merken
(neustesUpdate)
3. Hat nichts mit PHP zu tun, soll nur grob erklären wie ich es meine:
Version := aktuelleVersion
While (neustesUpdate > Version) (Schleife bis alle Dateinamen überprüft
sind)
{
update := Version + 1
if (exist Update) { ;püfen ob dieses Update existiert
Gosub Updateroutine Update ;Updateroutine mit Update als Param.
}
Version := neueVersion
}
So könnte man das vollautomatisch machen (zumindest für diejenigen die
einen Internetzugang haben).
Da ich mich mit php leider nicht auskenne weiß ich natürlich nicht ob
das so einfach realisierbar ist wie mit anderen Programmiersprachen,
aber es soll ja auch nur ein Vorschlag sein.
Christian R. schrieb:> Zu den Updates:> Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete> bereit stellt und zu anderen (z.B. für diejenigen die eine langsame> Internetverbindung haben) eine Update-Funktion.
Und warum soll eine Update-Funktion eine weniger schnelle
Internetverbindung benötigen als wenn man es von Hand herunterlädt?
Ich verstehe nicht richtig was du meinst...
Aber keine Angst, es wird sicher eine gescheite Lösung rauskommen ;-)
Es wird ganz sicher die Möglichkeit geben, dass man zwischen manuellem
und automatischen Update wählen kann.
Diejenigen, deren Webserver die technischen Voraussetzungen für ein
automatisches Update haben, können direkt aus Part-DB heraus ein Update
durchführen lassen. Dabei soll das System natürlich immer selber
überprüfen ob eine neurere Version verfügbar ist.
Und für die, deren Webserver aus technischen oder sonst irgendwelchen
Gründen kein Update durchführen können oder wollen, die können die
Updatepakete einfach von Hand im Internet runterladen und auf den
Webserver kopieren.
Udo Neist schrieb:>> gibts schon eine lösung die footprints auszublenden? ich weiss ihr seid>> voll im wuseln mit der updateroutine. falls ihr mal ein aktuelles>> package zum testen habt das ohne grobe bugs läuft wäre es schön wenn ihr>> dass mal irgendwo online stellen könnt. ich würde das dann mal versuchen>> bei uns im alltag einzusetzen, da findet man am ehesten fehler und bugs..>> Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle> Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der> Footprints per Konfiguration.
Genau das habe ich ja schon gemacht, guckst du SVN Revision 514 ;-)
Das ist entspricht in etwa meiner Vorstellung:
- ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen
und alle Updatepakete ab eigener Version in ein Array aufnehmen
- Update in der Reihenfolge bis zum letzten Version innerhalb der
Majorversion vornehmen
Die Beschreibungsdatei jedes Updatearchivs sagt, was wohin kopiert
werden soll und welche SQL-Scripte in welcher Reihenfolge ausgeführt
werden müssen.
Könnte wie folgt aussehen:
Die erste Ebene im Array $up2date enthält die Versionsnummer, für die
die folgenden Anweisungen gelten:
- copy : Welche Datei wohin kopiert wird, wobei das Ziel als Backup
gesichert wird
- delete : Welche Datei gelöscht wird (darf nur nach copy ausgeführt
werden)
- sql : SQL-Scripte
- cleanup : Macht eine Bereinigung der automatisch angelegten
Backupdateien (true) oder nicht (false). Bei false wäre sogar ein
Rollback der Scripte möglich.
- version : Ändert die Versionsnummer auf die angegebene
- stable : Damit können wir bestimmte Versionen als stabil
kennzeichnen und dem User damit sagen, das dieses Update "gefahrlos"
ist. Wer bis auf das letzte stabile System updaten will, der durchläuft
dann aber auch alle unstable Versionen.
Weitere Befehle wären z.B.:
- mkdir
- rmdir
- chmod
Mit einem solchen System könnte man sogar Sammelupdates für Systeme
anbieten, die keine Internetverbindung haben oder nur selten upgedatet
werden soll.
Programmtechnisch wäre das also ein Interpreter für eine Art
Scriptsprache. Wenn jetzt jemand sagt, db_update.php beinhaltet doch
sowas schon, dem kann ich sagen jein. Hier werden ja nur SQL-Befehle
in der Reihenfolge wie im Array gespeichert ausgeführt. Die
Versionsabfrage verläuft statisch per switch(). Vorrausetzung ist
allerdings, das die Datenbank nicht mehr eine eigene Versionsnummer
besitzt, sondern die (SVN-)Version von Part-DB nutzt. Für uns Entwickler
bedeutet es, dass wir die zur Vorversion geänderte Dateien in diese
Liste eintragen müssen. svn diff nimmt uns zum Glück etwas Arbeit ab
und gibt die Änderungen zum Repository aus. Dabei benötigen wir ja nur
die Dateinamen selbst:
Urban B. schrieb:>> Wenn ich die Tage Zeit finde, kann ich mal schauen, ob ich eine schnelle>> Lösung dafür finde. Quick&Dirty wäre das Ein- und Ausschalten der>> Footprints per Konfiguration.>> Genau das habe ich ja schon gemacht, guckst du SVN Revision 514 ;-)
Eine Baustelle weniger ;-)
Udo Neist schrieb:> - ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen> und alle Updatepakete ab eigener Version in ein Array aufnehmen> - Update in der Reihenfolge bis zum letzten Version innerhalb der> Majorversion vornehmen>> Die Beschreibungsdatei jedes Updatearchivs sagt, was wohin kopiert> werden soll und welche SQL-Scripte in welcher Reihenfolge ausgeführt> werden müssen.>> Könnte wie folgt aussehen:
Ich finde so eine Lösung aber irgendwie ziemlich aufwändig und
unflexibel.
Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert
werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv
erledigen, in nur einem einzigen Befehl.
Nehmen wir mal an, ein Update v0.2.3 beihaltet eine neue lib.php, ein
neues Dioden-Footprintbild, und die Informationen zum Update.
Ein Updatepaket könnte dann in etwa so aussehen:
1
part-db_v0.2.3.tar.gz:
2
- update/0.2.3/updateinfo.inc
3
- update/0.2.3/update.tar.gz:
4
- lib.php
5
- tools/footprints/Aktiv/Dioden/SMD/neuediode.png
Die neuen Dateien sind also nochmal separat in einem Archiv
zusammengefasst.
In einem ersten Schritt würde Part-DB alle verfügbaren Updates nach
update/ herunterladen. Wenn man die automatischen Updates nicht
aktiviert hat, legt man die Pakete einfach von Hand in diesen Ordner,
mehr muss man nicht machen.
Das System merkt jetzt, dass im Ordner update/ Archive für neuere
Versionen als die momentan installierte verfügbar sind. Einfach anhand
der Dateinamen der Archive, mehr brauchts nicht.
Sind neue Dateien vorhanden, beginnt das System sich zu aktualisieren.
Als erstes werden alle neuen Archive einfach mal entpackt. Dann entsteht
für jedes Update ein Ordner wie z.B. update/0.2.3/, in dem eine
Infodatei und das Update an sich (als Archiv) liegen.
Jetzt wird die Datei updates/x.x.x/updateinfo.inc ausgelesen. Darin
stehen:
- Version des Updates
- Vorausgesetzte Version
- Status (stable, unstable, ...)
- Checksumme des Archives "update.tar.gz", um auf Beschädigung zu prüfen
- Changelog, der dem Benutzer schon vor dem Update gezeigt werden kann
- Eine Funktion, die noch alle zusätzlich notwendigen Schritte enthält
Und genau diese Funktion ist das Geniale: Darin kann man einfach ALLES
machen, was man möchte. Man hat nicht nur ein Array zur Verfügung, das
man mit vordefinierten Befehlen befüllen kann. Nein, man hat vollen
Zugriff auf das PDO Objekt, kann also auch Querys durchführen, Schleifen
einbauen usw. Und für Systemoperationen kann man direkt den exec()
Befehl benutzen.
Der nächste Schritt ist nun stinkeinfach, erledigt aber schon fast
alles: Einfach nur das Archiv update/x.x.x/update.tar.gz der
nächstneueren Version ins Hauptverzeichnis entpacken. Die Dateien sind
jetzt schon alle auf dem neusten Stand, mit nur einem einzigen Befehl.
Danach wird dann noch die oben beschriebene Funktion aufgerufen, die ein
Datenbankupdate, exec() Anweisungen oder was auch immer enthalten kann.
Wäre das nicht ein sehr einfaches, aber extrem flexibles und dadurch
mächtiges Updatesystem?
Urban B. schrieb:> Ich finde so eine Lösung aber irgendwie ziemlich aufwändig und> unflexibel.> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv> erledigen, in nur einem einzigen Befehl.>> Nehmen wir mal an, ein Update v0.2.3 beihaltet eine neue lib.php, ein> neues Dioden-Footprintbild, und die Informationen zum Update.> Ein Updatepaket könnte dann in etwa so aussehen:part-db_v0.2.3.tar.gz:> - update/0.2.3/updateinfo.inc> - update/0.2.3/update.tar.gz:> - lib.php> - tools/footprints/Aktiv/Dioden/SMD/neuediode.png> Die neuen Dateien sind also nochmal separat in einem Archiv> zusammengefasst.
Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows
kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die
Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen
Plattformen laufen, sofern das Modul existiert. Statt dem copy-Befehl im
Array ginge natürlich auch ein unpack :-) Mir wäre es lieber, wenn wir
die PHP-Funktionen anstelle der Shell nehmen, denn einige Provider
verbieten exec() und ähnliches.
> In einem ersten Schritt würde Part-DB alle verfügbaren Updates nach> update/ herunterladen. Wenn man die automatischen Updates nicht> aktiviert hat, legt man die Pakete einfach von Hand in diesen Ordner,> mehr muss man nicht machen.
Geschenkt ;-) Wichtig ist, das nur alle Updates für die aktuelle Version
und höher geladen werden. Alle vorherigen Updates wären überflüssig beim
Download. Deshalb ja der List-Befehl auf einen FTP angewendet und
durchforsten.
> Das System merkt jetzt, dass im Ordner update/ Archive für neuere> Versionen als die momentan installierte verfügbar sind. Einfach anhand> der Dateinamen der Archive, mehr brauchts nicht.> Sind neue Dateien vorhanden, beginnt das System sich zu aktualisieren.> Als erstes werden alle neuen Archive einfach mal entpackt. Dann entsteht> für jedes Update ein Ordner wie z.B. update/0.2.3/, in dem eine> Infodatei und das Update an sich (als Archiv) liegen.>> Jetzt wird die Datei updates/x.x.x/updateinfo.inc ausgelesen. Darin> stehen:> - Version des Updates> - Vorausgesetzte Version> - Status (stable, unstable, ...)> - Changelog, der dem Benutzer schon vor dem Update gezeigt werden kann> - Eine Funktion, die noch alle zusätzlich notwendigen Schritte enthält>> Und genau diese Funktion ist das Geniale: Darin kann man einfach ALLES> machen, was man möchte. Man hat nicht nur ein Array zur Verfügung, das> man mit vordefinierten Befehlen befüllen kann. Nein, man hat vollen> Zugriff auf das PDO Objekt, kann also auch Querys durchführen, Schleifen> einbauen usw. Und für Systemoperationen kann man direkt den exec()> Befehl benutzen.
Letzteres geht nicht auf allen Servern! myparts.info lässt den
Shell-Zugriff nicht zu. Und ich würde auf irgendwelche Scripte im
Updatesystem verzichten oder willst du eine Hintertür erlauben? Ein paar
Zeilen eingeschmuggelt und schon hat jemand anderes eine komplette
Datenbank. cURL braucht nur ein paar Zeilen Code. Und es steht einem
Angreifer zudem alle Möglichkeiten offen, die im Kontext des Webservers
möglich sind.
> Der nächste Schritt ist nun stinkeinfach, erledigt aber schon fast> alles: Einfach nur das Archiv update/x.x.x/update.tar.gz der> nächstneueren Version ins Hauptverzeichnis entpacken. Die Dateien sind> jetzt schon alle auf dem neusten Stand, mit nur einem einzigen Befehl.>> Danach wird dann noch die oben beschriebene Funktion aufgerufen, die ein> Datenbankupdate, exec() Anweisungen oder was auch immer enthalten kann.>> Wäre das nicht ein sehr einfaches, aber extrem flexibles und dadurch> mächtiges Updatesystem?
Nein, denn es scheitert an eventuell fehlenden Rechten bei PHP, die man
oft nicht ändern kann (safe_mode, open_basedir, disable_functions,
disable_classes), fehlende Programme auf der Plattform, Manipulation von
Daten über die Shell (falls Zugriff möglich) und so manch anderes
Problem. Part-DB muss den Systemrichtlinien der IT-Abteilungen von
Firmen standhalten und erst recht im Internet funktionieren. Ansonsten
können wir das Projekt myparts.info gleich wieder beerdigen.
Cross-site-Scripting, SQL-Injections, Auslesen verschiedener
Systemdateien, Backdoor installieren und so weiter... DNS umbiegen ist
auch beliebt. Die Liste der möglichen Angriffe ist lang.
Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über
eine Signierung der Archive nach und wie man die Gültigkeit überprüft.
Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund,
ein Update zu verweigern.
Ich will hier nicht deine Ideen zerreden, aber ich bin nicht erst seit
gestern Admin von einigen Servern im Inter- und Intranet. Musste hin und
wieder mal Bots entfernen, die sich über schlechte PHP-Scripte
eingeschlichen hatten. Geht ja erstmal ums Prinzip und darum, den
gangbarsten Weg zu finden. Ich werde erstmal einen Interpreter erstellen
und diesen zur Diskussion stellen.
Udo Neist schrieb:> Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows> kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die> Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen> Plattformen laufen, sofern das Modul existiert.
OK kein Problem, dann halt ZIP :-) Das ist ja auch wurscht, hauptsache
irgend ein Archiv.
> Statt dem copy-Befehl im> Array ginge natürlich auch ein unpack :-) Mir wäre es lieber, wenn wir> die PHP-Funktionen anstelle der Shell nehmen, denn einige Provider> verbieten exec() und ähnliches.
Ebenfalls kein Problem, da man ja in der Funktion, die ich oben
erwähnte, ja so flexibel ist und die Befehle einbauen kann, die man
möchte :-)
Was eben noch ein Hintergedanke von mir ist:
Es könnte ja mal vorkommen, dass wir ein Datenbankupdate durchführen
müssen, das nicht mehr nur durch reine SQL Querys machbar ist, sondern
zwingend über einen individuellen PHP-Code gemacht werden muss. Man kann
dann aus dieser Funktion heraus auch auf alle meine Klassen zugreifen,
und mit Objekten arbeiten usw.
Und vielleicht tauchen ja mal noch irgendwelche andere Probleme auf, die
wir nur duch einen individuellen Codeblock lösen können, an die wir
momentan nicht denken.
Udo Neist schrieb:> Geschenkt ;-) Wichtig ist, das nur alle Updates für die aktuelle Version> und höher geladen werden. Alle vorherigen Updates wären überflüssig beim> Download. Deshalb ja der List-Befehl auf einen FTP angewendet und> durchforsten.
Ja, es werden natürlich immer nur die neueren Versionen runtergeladen.
Und jedes Updatearchiv beinhaltet nur gerade die neuen Dateien, also nur
die, die sich verändert haben. So kann ein Update sogar aus nur einer
einzigen PHP Datei bestehen, wenn z.B. ein Fehler in der lib.php behoben
wurde. (Also natürlich würde sich diese lib.php dann auch zusammen mit
einer Updateinfo-Datei in einem Archiv befinden)
Udo Neist schrieb:> Letzteres geht nicht auf allen Servern! myparts.info lässt den> Shell-Zugriff nicht zu. Und ich würde auf irgendwelche Scripte im> Updatesystem verzichten oder willst du eine Hintertür erlauben? Ein paar> Zeilen eingeschmuggelt und schon hat jemand anderes eine komplette> Datenbank. cURL braucht nur ein paar Zeilen Code. Und es steht einem> Angreifer zudem alle Möglichkeiten offen, die im Kontext des Webservers> möglich sind.
Das mit der Shell bzw. exec() ist nun klar das geht wohl nicht, ist aber
auch egal (war ja nur ein Beispiel. Ich hätte auch eine PHP Funktion als
Beispiel nehmen können xD).
Wie will jemand ein paar Zeilen in die Updatefunktion einschmuggeln?
Dazu gäbe es doch nur zwei Möglichkeiten: Entweder der "Angreifer" hat
FTP-Zugriff auf dem Webserver, dann hilft aber jegliche
Sicherheitsfunktion nichts mehr. Oder aber per DNS umbiegen oder sowas
könnte man das Updatepaket von einer anderen Seite holen lassen, aber
auch da kann man dann nichts mehr dagegen machen, denn dann müsste man
ja nur z.B. eine neue, startup.php (die was Böses enthält) ins
gefälschte Updatearchiv legen, und schon wird das böse Skript sogar bei
jedem Aufruf der Seite, und nicht nur einmalig beim Update ausgeführt
:-)
Somit sehe ich dieses Updatesystem nicht als Sicherheitslücke, zumindest
nicht unsicherer als dein System (sofern ich deines richtig verstanden
habe).
Udo Neist schrieb:> Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über> eine Signierung der Archive nach und wie man die Gültigkeit überprüft.> Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund,> ein Update zu verweigern.
Das wäre doch eigentlich gar keine schlechte Idee!
Wie gesagt, ich denke auch jedes andere Updatesystem, das sich Daten von
anderen Webserver holt ist eigentlich ja schonmal nicht 100%tig sicher.
Somit wäre eine Signatur wohl sowieso für jedes Updatesystem eine sehr
gute und nützliche Sicherheitseinrichtung.
Udo Neist schrieb:> Ich will hier nicht deine Ideen zerreden, aber ich bin nicht erst seit> gestern Admin von einigen Servern im Inter- und Intranet.
Jo kein Problem, wir diskutieren ja hier um eine Lösung zu finden, mit
der möglichst alle Beteiligten zufrieden sind :-)
Und dass ich keine grosse Erfahrung mit dem Sicherheits-"Kram" von
Servern habe, das ist halt so. Aber ich kann ja trotzdem Vorschläge
machen, dann lerne ich auch gleich noch was dabei wenn du gute
Gegenargumente bringst :-)
Urban B. schrieb:> Udo Neist schrieb:>> Funktioniert aber nur dort, wo auch tar zur Verfügung steht. Windows>> kennt den Befehl von Haus aus nicht. GNU tar reagiert anders als die>> Versionen auf anderen Unices. ZIP (über zlib) müsste von PHP auf allen>> Plattformen laufen, sofern das Modul existiert.>> OK kein Problem, dann halt ZIP :-) Das ist ja auch wurscht, hauptsache> irgend ein Archiv.
ZIP hab ich auch schon in meiner Packer-Klasse drin :-)
> Was eben noch ein Hintergedanke von mir ist:> Es könnte ja mal vorkommen, dass wir ein Datenbankupdate durchführen> müssen, das nicht mehr nur durch reine SQL Querys machbar ist, sondern> zwingend über einen individuellen PHP-Code gemacht werden muss. Man kann> dann aus dieser Funktion heraus auch auf alle meine Klassen zugreifen,> und mit Objekten arbeiten usw.> Und vielleicht tauchen ja mal noch irgendwelche andere Probleme auf, die> wir nur duch einen individuellen Codeblock lösen können, an die wir> momentan nicht denken.
Ich wüsste nicht, welche Probleme wir noch mittels Script lösen müssen.
Thumbnails erzeugen oder ähnliches geht auch mit entsprechend geänderten
Scripte, die über das normale Update rein kommen. Sollte doch mal was
gemacht werden, so wäre es am Besten, wenn der User aufgefordert wird
oder mittels Redirect ein Post-Update-Script aus dem Archiv laufen zu
lassen. Perfekt ist diese Lösung zwar nicht, aber man kann zumindest
dieses Script je nach Wichtigkeit absichern (md5, sha1 oder was auch
immer).
> Das mit der Shell bzw. exec() ist nun klar das geht wohl nicht, ist aber> auch egal (war ja nur ein Beispiel. Ich hätte auch eine PHP Funktion als> Beispiel nehmen können xD).
War das schlechteste Beispiel g> Wie will jemand ein paar Zeilen in die Updatefunktion einschmuggeln?
Die Leute, die einem schaden wollen, die sind sehr erfinderisch. Und PHP
gilt nicht als die sicherste Sprache, also lieber ein paar mehr
Prüfungen rein als notwendig.
> Dazu gäbe es doch nur zwei Möglichkeiten: Entweder der "Angreifer" hat> FTP-Zugriff auf dem Webserver, dann hilft aber jegliche> Sicherheitsfunktion nichts mehr. Oder aber per DNS umbiegen oder sowas> könnte man das Updatepaket von einer anderen Seite holen lassen, aber> auch da kann man dann nichts mehr dagegen machen, denn dann müsste man> ja nur z.B. eine neue, startup.php (die was Böses enthält) ins> gefälschte Updatearchiv legen, und schon wird das böse Skript sogar bei> jedem Aufruf der Seite, und nicht nur einmalig beim Update ausgeführt
Im schlechtesten Fall wäre das ganze System ohne Überprüfung und würde
direkt den Code beim Updaten mit ausführen. Lässt man keinen Code zu, so
muss der Angreifer die Scripte manipulieren. Hat man Checksummen wie
sha1 und gibt die dem Updatesystem mit, so ist eine Hürde mehr drin. Man
kann zu jedem Update-Archiv ein zweites anbieten, das Checksummen und
ähnliches vorhält.
> Somit sehe ich dieses Updatesystem nicht als Sicherheitslücke, zumindest> nicht unsicherer als dein System (sofern ich deines richtig verstanden> habe).
Zumindest wären bei mir keine direkten Zugriffe möglich. Wäre in der
Form noch ein include() nötig, aber ich möchte auch darauf verzichten
und so eine Art INI-Datei oder XML nutzen. Die lassen sich nicht mit
include(), require() oder eval() ausführen. Da braucht man einen
Interpreter. Und wenn man genauer hinschaut, brauchst du auch einen
solchen, ansonsten könntest du die Variablen nicht verabeiten. Für uns
Entwickler würde ich passende Scripte schreiben, die das Zusammenbauen
(weitgehends) erledigen.
> Udo Neist schrieb:>> Wenn du deinen Vorschlag umsetzen willst, dann denk auch gleich über>> eine Signierung der Archive nach und wie man die Gültigkeit überprüft.>> Nicht vertrauenswürdige Schlüssel bzw. Signaturen sind dann ein Grund,>> ein Update zu verweigern.>> Das wäre doch eigentlich gar keine schlechte Idee!> Wie gesagt, ich denke auch jedes andere Updatesystem, das sich Daten von> anderen Webserver holt ist eigentlich ja schonmal nicht 100%tig sicher.> Somit wäre eine Signatur wohl sowieso für jedes Updatesystem eine sehr> gute und nützliche Sicherheitseinrichtung.
GPG wäre ja eine gute Lösung, aber PHP unterstützt es nicht direkt. Und
sowas selbst zu Entwicklen ist overkill. sha1 für Checksummen (wird in
einer anderen Datei gespeichert, die man auch noch downloaden muss) ist
schon recht gut.
> Jo kein Problem, wir diskutieren ja hier um eine Lösung zu finden, mit> der möglichst alle Beteiligten zufrieden sind :-)> Und dass ich keine grosse Erfahrung mit dem Sicherheits-"Kram" von> Servern habe, das ist halt so. Aber ich kann ja trotzdem Vorschläge> machen, dann lerne ich auch gleich noch was dabei wenn du gute> Gegenargumente bringst :-)
Es heißt nicht umsonst im PHP-Umfeld: Drum prüfe, was du bekommst. In
den wenigsten Teilen habe ich vernünftige Prüfungen der übergebenen
Daten gesehen. $_REQUEST ist fast immer falsch, $_GET oder $_POST ist
besser. $_GET für die Sachen, die man darstellen will, $_POST für die
Formulare. $_REQUEST unterscheidet nicht, woher die Daten kommen.
Desweiteren ist Part-DB ziemlich anfällig was SQL-Injections betrifft.
Viele Variablen werden gar nicht auf den Typ geprüft. IDs sind entweder
numerisch oder ein String. Fehlt eine Prüfung, kann aus einem harmlosen
Select auch schnell mal ein Truncate oder Drop werden, denn ein
Semikolon und ein Kommentarzeichen an der richtigen Stelle, schon wars
das. Hier und da ein paar settype() reingeschrieben, noch ein paar
Wertebereiche geprüft und die Daten möglichst noch escaped. Wobei man so
oder so auf Prepared Statements setzen sollte.
Ich habe in meiner HTML-Klasse die Variablen im Konstruktor typisiert.
Prüfungen des Inhalts gibt es kaum/keine, sind zum Teil auch gar nicht
durchführbar, manches wird von vlibTemplate abgefangen. Sicher kann ich
hier also auch nicht wirklich sein, was die übergebenen Daten angeht.
Zumindest prüfe ich einige Daten und werfe bei Fehlern ein Exception.
Das kann man erweitern und aus einem Abbruch mit Fehlermeldung noch
zusätzlich ein Warning bei problematischen Parametern/Inhalten ausgeben.
Gute Nacht :-)
Udo Neist schrieb:> Ich wüsste nicht, welche Probleme wir noch mittels Script lösen müssen.> Thumbnails erzeugen oder ähnliches geht auch mit entsprechend geänderten> Scripte, die über das normale Update rein kommen. Sollte doch mal was> gemacht werden, so wäre es am Besten, wenn der User aufgefordert wird> oder mittels Redirect ein Post-Update-Script aus dem Archiv laufen zu> lassen. Perfekt ist diese Lösung zwar nicht, aber man kann zumindest> dieses Script je nach Wichtigkeit absichern (md5, sha1 oder was auch> immer).
OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber
tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:
Es sollen bei allen Footprint-Datensätzen, deren Bilddateiname ungültig
sind, der Dateiname gelöscht werden.
Per SQL-Query kann man wohl kaum überprüfen, ob ein Datenbankeintrag
einen Pfad zu einer existierenden Datei darstellt, oder nicht.
Wäre also ein Fall für PHP statt für SQL.
Oder:
Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien
mit dem selben Namen zu haben. Dies soll später verboten werden, da es
z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien,
Footprints usw. eindeutig sind.
Sobald dieses Update eingespielt wird, muss die Datenbank auf solche
doppelten (gleichnamigen) Kategorien durchsucht werden. Sind solche
doppelte Einträge vorhanden, wäre es am besten wenn die Updatefunktion
z.B. gleich sein eigenes PopUp mitliefert, in dem alle doppelt
vorkommenden Kategorien aufgelistet werden, mit der Möglichkeit die
Kategorien gleich umzubenennen.
Solche Überprüfungen in die Systemdateien einzubauen ist, wie du schon
selber geschrieben hast, ziemlich unschön und sollte vermieden werden.
Ist man beim Update so flexibel dass man sogar solche Sachen wie "Popups
öffnen um Benutzereingaben zu erfassen" machen kann, wäre das sehr
vorteilhaft und eine saubere Implementierung (alles ist da, wo es
hingehört).
Übrigens wäre die von mir genannte updateinfo.inc eine normale PHP
Datei, das ".inc" habe ich nur geschrieben weil ich diese Datei nicht
als ganz normale PHP Datei betrachte, sondern als Include-Datei für die
Systemdatei (z.B. update.php), die das Update durchführt :-) Vielleicht
verwirrt es aber auch zu sehr und sie sollte doch besser in ".php"
umbenannt werden xD
Udo Neist schrieb:> Im schlechtesten Fall wäre das ganze System ohne Überprüfung und würde> direkt den Code beim Updaten mit ausführen. Lässt man keinen Code zu, so> muss der Angreifer die Scripte manipulieren. Hat man Checksummen wie> sha1 und gibt die dem Updatesystem mit, so ist eine Hürde mehr drin. Man> kann zu jedem Update-Archiv ein zweites anbieten, das Checksummen und> ähnliches vorhält.
Also ich sehe da keinen Unterschied, ob man nun Code zulässt oder nicht.
Schafft es ein Angreifer, ein Updatepaket zu manipulieren (bzw. zu
fälschen), stehen ihm sowieso alle Tore offen und er kann machen was er
will. Ich meine, einem Update kann nicht verboten werden, die
Systemdateien zu überschreiben, sonst kann man damit schlecht ein Update
durchführen ;-) Der Angreifer hat also sowieso die Möglichkeit,
Systemdateien zu überschreiben, warum soll er sich dann nur die
Updatedatei unter denn Nagel reissen, wenn er das ganze System
manipulieren kann?
OK was man an meiner Version noch ändern könnte, wäre folgendes:
Die updateinfo.inc wird aufgeteilt in zwei Dateien. Eine davon ist nur
eine Textdatei, die es nicht ermöglicht, Code auszuführen. In einer
anderen Datei ist dann die eigentliche Updatefunktion, die es erlaubt
PHP Code auszuführen.
Zuerst wird dann nur die Textdatei gelesen, die PHP-Datei wird noch gar
nicht includet. Erst wenn die Angaben aus der Textdatei die Gültigkeit
des Updates bestätigen (per Hash oder sowas), wird die PHP-Datei mit der
Updatefunktion includet.
Udo Neist schrieb:> Für uns> Entwickler würde ich passende Scripte schreiben, die das Zusammenbauen> (weitgehends) erledigen.
Daran dachte ich auch schon, das wäre natürlich für meine Updatevariante
genau so gut möglich wie für deine.
Udo Neist schrieb:> GPG wäre ja eine gute Lösung, aber PHP unterstützt es nicht direkt. Und> sowas selbst zu Entwicklen ist overkill. sha1 für Checksummen (wird in> einer anderen Datei gespeichert, die man auch noch downloaden muss) ist> schon recht gut.
Was bringt es denn, wenn man die Checksumme noch separat herunterlädt?
Wenn ein Angreifer ein Paket fälschen kann, kann er das doch auch mit
einer Checksumme machen.
Udo Neist schrieb:> Es heißt nicht umsonst im PHP-Umfeld: Drum prüfe, was du bekommst. In> den wenigsten Teilen habe ich vernünftige Prüfungen der übergebenen> Daten gesehen.
Viele solcher Überprüfungen müssen später gar nicht mehr in den PHP
Dateien der einzelnen Seiten gemacht werden, da meine Klassen bei jeder
Zuweisung von neuen Daten diese zuerst auf Gültigkeit überprüft. Diese
Variante halte ich eh für sinnvoller, da dann die Überprüfung nur noch
an einer zentralen Stelle (in der Klasse) überprüft werden müssen, und
nicht in jeder einzelnen Datei, die diese Klasse verwendet.
Udo Neist schrieb:> Desweiteren ist Part-DB ziemlich anfällig was SQL-Injections betrifft.> Viele Variablen werden gar nicht auf den Typ geprüft. IDs sind entweder> numerisch oder ein String. Fehlt eine Prüfung, kann aus einem harmlosen> Select auch schnell mal ein Truncate oder Drop werden, denn ein> Semikolon und ein Kommentarzeichen an der richtigen Stelle, schon wars> das. Hier und da ein paar settype() reingeschrieben, noch ein paar> Wertebereiche geprüft und die Daten möglichst noch escaped. Wobei man so> oder so auf Prepared Statements setzen sollte.
Hast du schonmal meine Datenbankklasse angeschaut? Dort stelle ich ja
die zwei Funktionen execute() und query() zur Verfügung für die
Benutzung der Datenbank. ALLE Datenbankzugriffe von ganz Part-DB laufen
schlussendlich über eine dieser beiden Funktionen. Und dort werden dann
genau Prepared Statements verwendet. Voraussetzung ist natürlich, dass
man diesen Funktionen die Parameter richtig übergibt, also den
Query-String mit Fragezeichen als Platzhalter und dann die Variablen
separat.
Ich denke damit ist die Gefahr einer SQL Injection ziemlich stark
gesunken.
Udo Neist schrieb:> Gute Nacht :-)
Ebenfalls :-)
P.S.
Versteh mich bitte nicht falsch: Ich zweifle nicht an der
Funktionsfähigkeit oder Sicherheit deiner vorgeschlagenen
Updatefunktion.
Nur habe ich das Gefühl, dass:
1. Irgendwann die Flexibilität deiner Methode nicht mehr ausreicht, und
ab und zu extra für Updates umgebaut/erweitert werden muss
2. Es auch einfacher geht :-)
Urban B. schrieb:> OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber> tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:> Es sollen bei allen Footprint-Datensätzen, deren Bilddateiname ungültig> sind, der Dateiname gelöscht werden.> Per SQL-Query kann man wohl kaum überprüfen, ob ein Datenbankeintrag> einen Pfad zu einer existierenden Datei darstellt, oder nicht.> Wäre also ein Fall für PHP statt für SQL.
Lässt sich in der entsprechenden Funktion dauerhaft einbauen. Somit ist
es unabhängig von eventuell technischen Problemen auf dem Server. Könnte
ja sein, das die Bilder auf einer anderen Partition liegen. Zudem könnte
man die Datenbank per Admintool von "Leichen" befreien. Das ist
sinnvoller als sowas per Update machen zu wollen.
Und der Datenbank macht das nichts, wenn sie ein paar unnütze Daten mehr
drin hat :-) Ich glaube kaum, das Part-DB jemals TB von Daten verwalten
wird.
> Oder:> Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien> mit dem selben Namen zu haben. Dies soll später verboten werden, da es> z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien,> Footprints usw. eindeutig sind.> Sobald dieses Update eingespielt wird, muss die Datenbank auf solche> doppelten (gleichnamigen) Kategorien durchsucht werden. Sind solche> doppelte Einträge vorhanden, wäre es am besten wenn die Updatefunktion> z.B. gleich sein eigenes PopUp mitliefert, in dem alle doppelt> vorkommenden Kategorien aufgelistet werden, mit der Möglichkeit die> Kategorien gleich umzubenennen.
Geht per SQL-Script ebenso. Wenn man den SQL-Scripten im Update eine
Flag für Rückgabewerte (show, question oder ähnliches) mitgibt, läuft
das auch ohne Script. Wenn das nicht als SQL-Statement geht, dann als
Stored Procedure :D
Zudem sollte man alle Vorkommnisse beim Updaten mitloggen und auch zum
Ausdrucken anbieten. So kann der User entsprechende Meldungen per Hand
beseitigen.
> Solche Überprüfungen in die Systemdateien einzubauen ist, wie du schon> selber geschrieben hast, ziemlich unschön und sollte vermieden werden.> Ist man beim Update so flexibel dass man sogar solche Sachen wie "Popups> öffnen um Benutzereingaben zu erfassen" machen kann, wäre das sehr> vorteilhaft und eine saubere Implementierung (alles ist da, wo es> hingehört).
Ich meinte nicht die üblichen Tests auf fehlerhafte Eingaben oder
unlogische Datensätze, sondern eher das typische Wartungsaufgaben wie
ein Update nichts darin verloren haben. Das gehört in die Kategorie
Admintools und sind Sonderaufgaben mit eigenen Scripten.
> Übrigens wäre die von mir genannte updateinfo.inc eine normale PHP> Datei, das ".inc" habe ich nur geschrieben weil ich diese Datei nicht> als ganz normale PHP Datei betrachte, sondern als Include-Datei für die> Systemdatei (z.B. update.php), die das Update durchführt :-) Vielleicht> verwirrt es aber auch zu sehr und sie sollte doch besser in ".php"> umbenannt werden xD
Ich würde das gar nicht als PHP-Datei machen, sondern als Pseudo-Sprache
definieren. Damit hast du wohl das größte Problem aus der Welt: ein
Fehler im Updatescript und der User steht höchstwahrscheinlich mit einer
unbenutzbaren Part-DB-Installation da. Und warum für jedes Update dann
ein eigenes Script schreiben wollen? Zeitverschwendung! Alle wichtigen
Funktionen in eine Update-Klasse und falls notwendig, wird diese dann
ersetzt, bevor das eigentliche Update läuft. Stichwort:
Stapelverarbeitung (Batch-Datei, Bash-Script etc. nur nicht so mächtig
wie diese).
> Hast du schonmal meine Datenbankklasse angeschaut? Dort stelle ich ja> die zwei Funktionen execute() und query() zur Verfügung für die> Benutzung der Datenbank. ALLE Datenbankzugriffe von ganz Part-DB laufen> schlussendlich über eine dieser beiden Funktionen. Und dort werden dann> genau Prepared Statements verwendet. Voraussetzung ist natürlich, dass> man diesen Funktionen die Parameter richtig übergibt, also den> Query-String mit Fragezeichen als Platzhalter und dann die Variablen> separat.> Ich denke damit ist die Gefahr einer SQL Injection ziemlich stark> gesunken.
Ich gehe erstmal von der offiziellen Version aus. Das die neue Version
etliche Probleme schon jetzt beseitigt hat, das denke ich mir.
Nicht jede Überprüfung sollte zudem in eine Klassenfunktion ausgelagert
werden. Funktionen sollten die übergebenen Daten auf Gültigkeit für
ihren Scope prüfen. Das Hauptscript prüft, ob die Funktion überhaupt
gebraucht wird. Welche Funktion kostet am wenigsten?
1) Wert -> Funktion -> Wert falsch -> Rückgabe Wert nicht verwertbar
2) Wert falsch -> Nächste Funktion
> P.S.> Versteh mich bitte nicht falsch: Ich zweifle nicht an der> Funktionsfähigkeit oder Sicherheit deiner vorgeschlagenen> Updatefunktion.> Nur habe ich das Gefühl, dass:> 1. Irgendwann die Flexibilität deiner Methode nicht mehr ausreicht, und> ab und zu extra für Updates umgebaut/erweitert werden muss> 2. Es auch einfacher geht :-)
Jede Updatefunktion ist nie perfekt und muss immer wieder neu
geschrieben werden. Aber warum jedesmal ein neues Script erstellen, wenn
man eine Klasse mit den üblichen Funktionen bereits hat und diese
vielleicht alle x Updates überarbeiten muss?
Aktuell wären folgende "Befehle" in der Updateklasse nötig (private
Funktionen, wird vom Interpreter aufgerufen):
- copy
- delete
- mkdir
- rmdir
- chmod
- log
- unpack
- sync (Gleicht Datenbank mit Verzeichnis ab, z.B. Grafiken)
- sql
Diese Funktionen sind übergeordnete Funktionen und werden von update.php
direkt aufgerufen:
- check_version (Prüft die installierte Version gegen dem Update)
- check_updates (Überprüft auf Updates)
- get_updates (Holt die Updates)
- parse (Der eigentliche Interpreter)
Sind halt zwei Positionen die wir hier einnehmen und beide haben in
verschiedenen Fragestellungen wahrscheinlich ihren Vorteil. Wir müssten
einfach mal jeder ein Beispielupdate erstellen und dann kann man
schauen, was wir von welchem System übernehmen sollten.
Grüße
Udo
Urban B. schrieb:> Christian R. schrieb:>> Zu den Updates:>> Kann man es nicht so machen, dass man Zum einen immer aktuelle Pakete>> bereit stellt und zu anderen (z.B. für diejenigen die eine langsame>> Internetverbindung haben) eine Update-Funktion.>> Und warum soll eine Update-Funktion eine weniger schnelle> Internetverbindung benötigen als wenn man es von Hand herunterlädt?> Ich verstehe nicht richtig was du meinst...
Ich habe mich ungünstig ausgedrückt. Mit Pakete meinte ich eigentlich
ein komplettes Archiv aller Dateien, also für jemanden der neu auf
Part-DB stößt. So kann diese Person gleich die aktuellste Version
herunterladen anstatt Version XXX welche dann gleich auf YYY geupdatet
werden kann.
Bei automatischen Updates kommt es letztendlich aufs gleiche hinaus,
aber aus eigener Erfahrung fühlt es sich besser an die "aktuellste
Version" herunterladen zu können, statt eine "veraltete" die dann
aktualisiert werden muss.
Udo Neist schrieb:> Das ist entspricht in etwa meiner Vorstellung:>> - ein Listbefehl auf einen FTP oder einem lokalen Verzeichnis loslassen> und alle Updatepakete ab eigener Version in ein Array aufnehmen> - Update in der Reihenfolge bis zum letzten Version innerhalb der> Majorversion vornehmen
Genau so meinte ich das.
Urban B. schrieb:> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv> erledigen, in nur einem einzigen Befehl.
Durch manuelles kopieren kann man die zu überschreibenden Dateien
sichern um notfalls die Ursprungsversion wieder herzustellen falls doch
mal irgendetwas nicht klappt.
Udo Neist schrieb:> Urban B. schrieb:>> OK hier mal ein Beispiel, das zwar keinen Sinn macht, technisch aber>> tatsächlich so ein Fall für eine PHP-Funktion statt einem SQL-Query ist:>> [...]>> Lässt sich in der entsprechenden Funktion dauerhaft einbauen.
Ja klar lässt sich das dauerhaft einbauen, aber:
- Wer sagt uns dass nachher nicht bei jedem 3. Update nochmal eine
zusätzliche, spezielle Funktion gebraucht wird? In Version 3.x.x Platzt
dann doch die Update-Klasse aus allen Nähnten, weil darin noch 20
Funktionen für irgendwelche Updates rumliegen, die nur ein einziges Mal
gebraucht wurden. Und nach jedem Update wieder die nicht mehr benötigten
Funktionen aus der Update-Klasse zu löschen zeugt auch nicht grad von
einem durchdachten System ;-)
- Wozu sollen Funktionen, die nur ein einziges Mal (beim Update)
gebraucht werden, ins System integriert werden? Die haben dort nichts zu
suchen, die wurden geschrieben um Version x.x.a auf x.x.b zu
aktualisieren, also gehören sie zum Update x.x.b und nicht ins System.
> Somit ist> es unabhängig von eventuell technischen Problemen auf dem Server. Könnte> ja sein, das die Bilder auf einer anderen Partition liegen.
Was für technische Probleme auf dem Server? Meine Variante wäre sicher
nicht fehleranfälliger als deine Variante. Da die Updatefunktion ja zum
Ausführen includet werden muss, hat sie somit auch Zugriff auf den
ganzen Rest von Part-DB (Einstellungen aus der config.php,
Datenbankklasse, ...).
Dort, wo Part-DB die Bilder sucht, dort sucht sie auch meine
Updatefunktion, egal ob das nun auf einer anderen Partition liegt oder
nicht.
> Zudem könnte> man die Datenbank per Admintool von "Leichen" befreien. Das ist> sinnvoller als sowas per Update machen zu wollen.
Um sich von Leichen zu befreien, dazu soll natürlich ein Admintool
vorhanden sein, das ist richtig. Das habe ich nämlich schon mit den
Dateien vor, es soll möglich sein die Datenbank nach Dateien zu
durchforsten die nicht (mehr) existieren.
Aber: Es gibt auch Funktionen, die wirklich nur ein einziges mal beim
Update ausgeführt werden müssen, und nachher für den Benutzer nicht
erreichbar sein sollen. Und genau für solche (und nur für solche)
Funktionen wäre meine individuelle Updatefunktion gedacht.
>> Oder:>> Momentan ist es noch möglich, in einer Kategorie mehrere Unterkategorien>> mit dem selben Namen zu haben. Dies soll später verboten werden, da es>> z.B. für den Teile-Import notwendig ist, dass die Pfade zu Kategorien,>> Footprints usw. eindeutig sind.[...]>> Geht per SQL-Script ebenso. Wenn man den SQL-Scripten im Update eine> Flag für Rückgabewerte (show, question oder ähnliches) mitgibt, läuft> das auch ohne Script. Wenn das nicht als SQL-Statement geht, dann als> Stored Procedure :D
Ja logisch geht es. Aber es muss extra wieder in die Updatefunktion
eingebaut werden, das bläht die Updatefunktion immer stärker auf und
wird unnötig kompliziert.
Das ist ja genau das, was ich dir versuche mitzuteilen :-) Natürlich
kann man mit deiner Methode auch alles bewerkstelligen was zu
bewerkstelligen ist. Aber es macht die Update-Klasse immer komplizierter
wegen Features, die nur ein einziges Mal bei einem Update gebraucht
wurden und nachher kein Mensch mehr braucht.
Ich bin einfach der Meinung: Updateroutinen sind von Update zu Update
individuell und sollen daher immer mit dem jeweiligen Update
mitgeliefert werden. Individuelle Updateroutinen gehören nicht ins
System, und eine Allgemeine, flexible Updateroutine die ALLES machen
kann, das die Updates jemals brauchen könnten, macht die Updateklasse
viel zu aufwändig, zu kompliziert und daher evtl. auch noch
fehleranfällig.
> Zudem sollte man alle Vorkommnisse beim Updaten mitloggen und auch zum> Ausdrucken anbieten. So kann der User entsprechende Meldungen per Hand> beseitigen.
Sowas könnte man natürlich auch in meiner Variante einbauen. Die
Log-Funktion gehört dann natürlich ins System, da sie bei jedem Update
gebraucht wird. In der Updatefunktion, die im Updatearchiv daherkommt,
müsste dann z.B. nur noch ein Array mit den Meldungen gefüllt werden, so
ähnlich wie in den case-Blöcken der momentanenen db_update.php.
> Ich meinte nicht die üblichen Tests auf fehlerhafte Eingaben oder> unlogische Datensätze, sondern eher das typische Wartungsaufgaben wie> ein Update nichts darin verloren haben. Das gehört in die Kategorie> Admintools und sind Sonderaufgaben mit eigenen Scripten.
Ja, wie bereits oben erwähnt: Typische Wartungsarbeiten sollen natürlich
ins System integriert werden. Individuelle Funktionen, die wirklich nur
ein einziges Mal beim Update ausgeführt werden müssen, gehören da aber
nicht rein, und das sind ja genau die, von denen ich die ganze Zeit
spreche.
> Ich würde das gar nicht als PHP-Datei machen, sondern als Pseudo-Sprache> definieren.
Dann wäre mein Ziel, es möglichst einfach, unkompliziert und flexibel zu
gestalten, aber total verfehlt ;-)
> Damit hast du wohl das größte Problem aus der Welt: ein> Fehler im Updatescript und der User steht höchstwahrscheinlich mit einer> unbenutzbaren Part-DB-Installation da.
Dafür soll es ja dann eine Rollback-Funktion geben -> Problem gelöst.
> Und warum für jedes Update dann> ein eigenes Script schreiben wollen? Zeitverschwendung!
Also für ein normales Update, bei dem nur Dateien überschrieben und
SQL-Befehle ausgeführt werden, ist das Skript ziemlich kompakt (siehe
"update_bsp2.php" im Anhang). Und die Grundstruktur kann man natürlich
immer wieder übernehmen fürs nächste Update. Wenn man mal mehr machen
möchte als nur SQL Befehle ausführen, könnte das z.B. etwa so aussehen
wie in der "update.php" im Anhang.
> Ich gehe erstmal von der offiziellen Version aus. Das die neue Version> etliche Probleme schon jetzt beseitigt hat, das denke ich mir.
Ach so, ja das stimmt zum Teil. Aber ich denke es wäre Zeitverschwendung
wenn wir diese Version noch umbauen würden.
> Nicht jede Überprüfung sollte zudem in eine Klassenfunktion ausgelagert> werden. Funktionen sollten die übergebenen Daten auf Gültigkeit für> ihren Scope prüfen. Das Hauptscript prüft, ob die Funktion überhaupt> gebraucht wird. Welche Funktion kostet am wenigsten?>> 1) Wert -> Funktion -> Wert falsch -> Rückgabe Wert nicht verwertbar>> 2) Wert falsch -> Nächste Funktion
Jup, das macht natürlich Sinn.
> Jede Updatefunktion ist nie perfekt und muss immer wieder neu> geschrieben werden. Aber warum jedesmal ein neues Script erstellen, wenn> man eine Klasse mit den üblichen Funktionen bereits hat und diese> vielleicht alle x Updates überarbeiten muss?
Bei meiner Variante existiert natürlich auch eine Klasse die die Updates
durchführt. Diese kümmert sich ums Backup vor dem Update, ums Rollback
bei einem Fehler, verarbeitet die Logs usw. Das ist ja immer das selbe
und gehört ganz klar ins System integriert.
> Sind halt zwei Positionen die wir hier einnehmen und beide haben in> verschiedenen Fragestellungen wahrscheinlich ihren Vorteil. Wir müssten> einfach mal jeder ein Beispielupdate erstellen und dann kann man> schauen, was wir von welchem System übernehmen sollten.
Ja, das wäre nich schlecht. Momentan habe ich dazu aber nicht die Zeit.
Allerdings habe ich mal so auf die schnelle ein Beispiel-Updatepaket
erstellt, so wie ich mir das in etwa vorstelle. Ich denke, daran
erkennst du viel mehr als wenn ich hier 500 Zeilen Text schreiben würde.
Kurze Beschreibung:
In einem Updatepaket gibt es immer diese Elemente:
- Datei "info.ini": Eine nicht ausführbare Datei, die alle wichtigen
Informationen zum Update enthält
- Datei "update.php": Die Datei, die die notwendigen Updateschritte
enthält. Allerdings ist hier nichts drin, was das Überschreiben der
alten Systemdateien mit den neuen Dateien betrifft.
- Ordner "files/": Hier sind alle neuen Systemdateien enthalten (also
alle, die sich seit der letzten Version geändert haben). Die
Ordnerstruktur darin ist genau so wie es nachher auch sein muss.
Die Updatefunktion des Systems entpackt das Updatepaket erstmal nach
updates/0.2.3/. Dann wird die info.ini ausgelesen und entschieden, ob
dieses Update durchgeführt werden kann/darf.
Ist das Update in Ordnung, wird das Verzeichnis updates/0.2.3/files/
nach Dateien durchsucht. Von allen momentan installieren Systemdateien,
die auch in diesem files/ Ordner enthalten sind, werden nun Backups
angelegt. Auch von der Datenbank wird ein Update angelegt.
Dann kann das Update losgehen:
Die Update-Klasse kopiert einfach alle Dateien aus dem Ordner
update/0.2.3/files/ ins Systemverzeichnis. Jetzt sind schonmal alle
Dateien aktuell.
Dann wird noch die Datei update/0.2.3/update.ini includet und die darin
enthaltene Funktion ausgeführt. Diese nimmt dann das Datenbankupdates
oder sonst irgendwelche speziellen Updateroutinen vor.
Meldet diese Funktion Erfolg, ist das Update fertig. Meldet sie ein
Fehler, wird direkt ein Rollback der alten Systemdateien und der
Datenbank gemacht.
Christian R. schrieb:> Ich habe mich ungünstig ausgedrückt. Mit Pakete meinte ich eigentlich> ein komplettes Archiv aller Dateien, also für jemanden der neu auf> Part-DB stößt. So kann diese Person gleich die aktuellste Version> herunterladen anstatt Version XXX welche dann gleich auf YYY geupdatet> werden kann.
Ah so meinst du das. Naja das weiss ich jetzt nicht ob wir bei jedem
kleinsten Update extra noch ein vollständiges Paket schnüren. Inklusive
Footprints wären das auch jedesmal wieder 100MB Daten.
Was ich mir aber vorstellen könnte, wären Sammelupdates. Also dass man
sich zwar eine nicht ganz aktuelle Part-DB runterlädt, und dann noch ein
Updatearchiv das alle Updates bis zur aktuellsten Version enthält. Das
wären dann also im schlimmsten Fall zwei Pakete die man runterladen
müsste.
Aber eigentlich ist es momentan noch unwichtig, wie wir das dann genau
machen. Ich denke wir sind alle der Meinung, dass die Updatepakete für
das automatische Update immer nur diejenigen Dateien enthalten, die sich
seit der Vorversion geändert haben. Sammelupdates wären dann also ein
Thema das überhaupt keinen Einfluss auf die Updateroutine hat, das würde
alles ausserhalb von Part-DB geschehen.
Christian R. schrieb:> Urban B. schrieb:>> Ausserdem, wozu sollen die neuen Dateien noch manuell herumkopiert>> werden? Das kann man doch direkt mit dem Entpacken eines Updatesarchiv>> erledigen, in nur einem einzigen Befehl.>> Durch manuelles kopieren kann man die zu überschreibenden Dateien> sichern um notfalls die Ursprungsversion wieder herzustellen falls doch> mal irgendetwas nicht klappt.
Das kann man auch so machen wie ich es oben beschrieben habe. Die
Updatefunktion des Systems merkt selbst, welche Dateien durch das Update
überschrieben werden und welche nicht.
OK eine kleine Unschönheit gibt es da bei meiner Variante: Löscht man im
Updateskript eine Datei, so wird sie vom System nicht gesichert weil sie
sich nicht im files/ Ordner befindet. Dazu sind aber die Funktionen
backup() und restore() in der update.php gedacht. Hier kann man die
Backup- und die Restore-Funktion des Systems ergänzen mit
individuellen Befehlen, die auf das jeweilige Update zugeschnitten sind.
Die Update- und Restorefunktion des Systems wird aber natürlich trotzdem
auch ausgeführt, so muss man sich wirklich nur noch ganz selten um ein
paar wenigen Dateien kümmern, alles andere übernimmt das System völlig
automatisch.
puuh das ist jetzt ganz schön viel Text geworden, sorry ;-)
Ich schlage einfach mal vor, dass wir beide unsere Updatevarianten am
Beispiel des Updates von der offiziellen Version auf unser eigenen
Branch vorstellen. Tests:
1) Update erfolgreich
2) Fehler beim Kopieren einer Datei und Behandlung dieses Fehlers
3) Datenbankupdate wird durchgeführt (einfach ein Update auf die Tabelle
internal mit dem Einfügen und Ändern von Dummyvariablen)
Udo Neist schrieb:> Ich schlage einfach mal vor, dass wir beide unsere Updatevarianten am> Beispiel des Updates von der offiziellen Version auf unser eigenen> Branch vorstellen. Tests:>> 1) Update erfolgreich> 2) Fehler beim Kopieren einer Datei und Behandlung dieses Fehlers> 3) Datenbankupdate wird durchgeführt (einfach ein Update auf die Tabelle> internal mit dem Einfügen und Ändern von Dummyvariablen)
Können wir machen, muss aber noch mindestens 3 Wochen warten :-)
Sorry wenn ich langsam nerve^^ aber irgendwie konnte ich einfach noch
kein richtiges Argument von dir lesen, das gegen meine Variante sprechen
würde. Deshalb halte ich natürlich an meiner Variante fest :-)
Dass es weniger sicher ist, das glaube ich nicht. Speziell jetzt, wo das
Update vor dem Includen der Updatedatei erstmal verifiziert wird.
Dass man übertrieben viel Code schreiben muss für ein Update finde ich
auch nicht. Man kann ja die Funktionen execute() und query() aus der
Datenbankklasse nutzen, dann wird das sehr kompakt. Natürlich ist es ein
bisschen mehr als nur ein Array das man befüllt, darf es aber auch sein
wenn man dadurch enorm viel flexibler ist.
Allerdings sehe ich zwei grosse Vorteile bei meiner Variante:
- Flexibilität (es kann später noch kommen was will, alles kein Problem)
- Saubere Strukturierung (Funktionen, die häufiger genutzt werden kommen
ins System, Funktionen speziell auf ein Update angepasst kommen nur ins
Updatepaket, sind also "Einweg-Skripte")
Speziell die Flexibilität finde ich wichtig. Es ist ziemlich nervig,
ständig das eigene System umzubauen / zu erweitern nur weil man früher
nicht an alle möglichen Konstellationen gedacht hat. Ich jedenfalls
programmiere ein Progemm lieber nur einmal, und zwar so dass man es
möglichst flexibel nutzen kann, dann gibts später auch viel weniger
Anpassungen.
Mein Stand der Updatefunktion habe ich angehängt. Die Datei
update_r1000.ups enthält die Updatebefehle und ist Bestandteil eines
fiktiven Archivs part_db_r1000.zip, welches bereits in
update/part_db_r1000 extrahiert wurde. Wie die Scriptdatei später heißen
wird, das habe ich noch nicht festgelegt. Die Klasse ist ein
Proof-Of-Concept und sollte, abgesehen von kleineren - teilweise schon
bekannten - Fehlern, laufen. Einige Funktionen sind noch nicht benannt
(z.B. für den Online-Krams) oder nur ohne Inhalt.
Prinzipielle Vorgehensweise (hier als Online-Update):
1
$update = new update;
2
...
3
$files = $update -> get_update_list();
4
foreach ($file in $files)
5
{
6
$update -> get_update_file( $file ); // Holt das File
7
if ( is_readable( $file ) $archiv = $update -> f_unpack( $file ); // Entpackt das file
8
if ( is_readable( $archiv.'/update.ups' ) && $update->load_script( $archiv.'/update.ups' ) $update->parse_script(); // Parst das File
9
10
}
Die Funktion update->parse_script() interpretiert die zuvor mit
update->load_script(DATEINAME) in einen Array eingelesene Datei. Jedes
Element enthält Kommando, festgelegtes Trennzeichen (hier ein " :: ")
und ein oder mehrere Optionen (mit Leerzeichen getrennt). Die
Reihenfolge im Script entspricht auch der im Array und baut daher
aufeinander auf. Das Schlüsselwort "critical :: false" sorgt dafür, die
bis zum nächsten "critical :: true" vorhandenen Befehle ohne Rücksicht
auf einen Fehler auszuführen. "critical :: true" dagegen bricht die
Ausführung des Updates sofort ab. Ein Log wird (ist noch auf der
ToDo-Liste) immer mitgeschrieben. Es können mit der log-Anweisung auch
individuelle Texte eingefügt werden.
Meine Update-Klasse funktioniert soweit schon. Noch sind nicht alle
Befehle vorhanden, aber immerhin :-) Das Proof-Of-Concept konnte wegen
etlichen (flüchtigen) Fehlern - war ja auch nicht wirklich zum Austesten
gedacht - nicht laufen.
Zum System:
Das Script update.php von Part-DB lädt die update-Klasse, holt dann die
Updates von einem Server (die Funktionen download_*() und check_script()
sind hier nur Dummies), entpackt diese und parst die Datei dort
enthaltene "update.ups".
1
require_once ('lib.php');
2
require_once ('class/update.php');
3
4
$update =& new update;
5
6
// downloading a list of updates from url and get some files
7
$update -> download_list( 'ftp://' );
8
$update -> download_file( 'part-db_up515.zip' );
9
10
// parse an update script
11
$update -> check_script(515);
12
$update -> load_script('update/update.ups');
13
$update -> parse_script();
14
if ( ! $update -> get_debug() ) $update -> show_report();
In dem Script "update.ups" werden die Befehle in der Reihenfolge von
oben nach unten ausgeführt.
1
log :: update to revision xxx
2
copy :: authors.php
3
chmod :: authors.php 0755
4
#chmod :: update 0775
5
mkdir :: tmp 0775
6
rmdir :: tmp
7
critical :: false
8
sql :: part-db_update_rev12.sql
9
critical :: true
10
sql :: part-db_update_rev12.sql
Es sucht die notwendigen Dateien im Unterverzeichnis "files/". Die
Dateistruktur entspricht dabei der von Part-DB selbst.
1
part-db/update # l *
2
-rw-r--r-- 1 xxx xxx 1234 4. Aug 20:43 part-db_update_rev12.zip
3
-rw-r--r-- 1 xxx xxx 170 9. Aug 22:36 update.sh
4
-rw-r--r-- 1 xxx xxx 228 12. Aug 16:58 update.ups
5
6
files:
7
insgesamt 68
8
drwxr-xr-x 2 xxx xxx 54 12. Aug 17:58 ./
9
drwxrwxr-x 4 xxx xxx 93 12. Aug 17:58 ../
10
-rw-r--r-- 1 xxx xxx 1831 4. Aug 14:40 authors.php
11
-rw-r--r-- 1 xxx xxx 255 12. Aug 14:26 part-db_update_rev12.sql
Schlägt ein Kommando fehl, so wird in Abhängigkeit des Status "critical"
die Ausführung abgebrochen und ein Rollback veranlasst oder die
Ausführung ausgeführt. Der Status "critical" ist standardmässig ein und
lässt sich mit dem Befehl "critical :: (true|false)" beeinflussen.
1
loading update/update.ups...
2
executing log => update to revision xxx
3
executing copy => authors.php
4
- backup authors.php
5
- copying /update/files/authors.php to /authors.php
6
executing chmod => authors.php 0755
7
- chmod /srv/www/htdocs/part-db/authors.php to 0755
copy file /update/files/authors.php to /authors.php: success
30
chmod file "authors.php" to 0755: success
31
mkdir tmp: success
32
rmdir : success
33
executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbSubversion', '0')
34
sql state: error => Duplicate entry 'dbSubversion' for key 'keyName'
35
executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbRevision', '0')
36
sql state: error => Duplicate entry 'dbRevision' for key 'keyName'
37
executing sql: UPDATE `part-db`.`internal` SET `keyValue` = '1' WHERE `keyName` = 'dbSubversion'
38
sql state: ok
39
executing sql: INSERT INTO `part-db`.`internal` (`keyName`, `keyValue`) VALUES ('dbSubversion', '0')
40
sql state: error => Duplicate entry 'dbSubversion' for key 'keyName'
41
stop executing sql-script!
In folgenden Report ist die Datei authors.php umbenannt in author.php
und lässt sich daher nicht finden:
1
loading update/update.ups...
2
executing log => update to revision xxx
3
executing copy => authors.php
4
5
something getting wrong, stop executing script!
6
7
at least executing cleanup...
8
report:
9
10
comment: update to revision xxx
11
copy file /update/files/authors.php to /authors.php: failed -> file not found
12
something getting wrong, stop executing script!
Damit lassen sich auch die Installation oder auch eine Reparatur von
Part-DB bewerkstelligen. Einfach eine "install.ups" oder "repair.ups"
erstellen, die entsprechende Anweisungen enthält. Dazu müsste noch ein
Befehl "base :: PFAD" integriert werden, der relativ zum
Installationspfad liegt, um z.B. wichtige SQL- oder Systemscripte finden
zu können. Falls es dennoch notwendig werden sollte, spezielle
PHP-Scripte aufrufen zu müssen (ich hab bisher noch keine Beispiele
gelesen, für die man sowas braucht), so könnte man das hier auch noch
einbauen. Die meisten Updates benötigen das nicht. Entpacken, kopieren
von Dateien, Verzeichnisse erzeugen, Rechte wechseln, und Datenbank
updaten sind praktisch allen Fällen die einzigen Funktionen beim Update
und mit dieser Lösung schon abgedeckt.
Die Erstellung der UPS-Scripte lassen sich mit einem Batch-Script
vereinfachen (z.B. svn diff auswerten und damit copy-Befehle erzeugen,
wie ich schon weiter oben beschrieben hatte).
Im übrigen ist diese Klasse nicht auf Part-DB beschränkt und könnte auch
in anderen Projekten ihren Dienst versehen :-)
also hab gerade mal versucht die neueste r512 version auf den ftp
hochzuladen vorher ne kopie von der datenbank angelegt und aktuell hab
geht es
hatte vorher nen fehler...
"Unknown column 'footprints.filename' in 'field list'
ein datenbankupate wurde so wie ich das gesehen habe nicht
durchgeführt...
weiß einer rat?
aktuell habe ich noch die kategoriesturktur da aber keine artikel
mehr..."
habe gerade manuell über konfiguration die datenbank geupdatet...
scheint jetzt wieder alles zu gehen... werd morgen mal bisl rumtesten...
ein fehler steht aber noch an:
auf der Hauptseite steht oben unter part-db 0.2.1 SVN REV512:
Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in
/volume1/web/lager/lib.php on line 536 Warning: shell_exec(): Cannot
execute using backquotes in Safe Mode in /volume1/web/lager/lib.php on
line 536
wie bekomme ich das weg? ansich funktioniert alles die meldung hatte ich
auch schon vorher bei der offiziellen part-db
hier nochmal ein Screenshot von der Hauptansicht der part-db mit der
Fehlermeldung.
Footprints ausblenden geht soweit auch. allerdings ist die Spalte
footprints in der Artikelauflistung noch vorhanden. Stört aber soweit
gerade nicht.
DANKE!
kirk disen schrieb:> also hab gerade mal versucht die neueste r512 version auf den ftp> hochzuladen vorher ne kopie von der datenbank angelegt und aktuell hab> geht es
r512 ist nicht die neuste Version, die neuste wäre r514. Welche davon
hast du nun installiert?
kirk disen schrieb:> Footprints ausblenden geht soweit auch. allerdings ist die Spalte> footprints in der Artikelauflistung noch vorhanden. Stört aber soweit> gerade nicht.
Aleo wenn das Footprint ausblenden geht, müsstest du r514 haben, denn
vorher ging das noch nicht. Dann sollte aber auch die Footprint-Spalte
nicht mehr angezeigt werden (bei mir funktioniert das).
Bist du dir ganz sicher dass das Installieren der neuen Version auch
alles sauber funktioniert hat? Überschreib mal deine lib.php und
showparts.php mit den neusten Versionen aus dem SVN:
https://part-db.googlecode.com/svn-history/r514/trunk/lib.phphttps://part-db.googlecode.com/svn-history/r514/trunk/showparts.php
Falls dann das Problem behoben ist, scheint bei der Installation deiner
Version etwas schief gelaufen zu sein (wobei da eigentlich gar nicht
viel schief laufen kann...). Dann würde ich sicherheitshalber gleich
nochmal das ganze System neu installieren.
Wenn das auch nicht geholfen hat, schreib einfach nochmal, dann müssen
wir den Fehler genauer lokalisieren :-)
@Udo
Hättest du vielleicht auch noch Zeit und Lust, mal mit dem universellen
Dateiupload zu beginnen? :-)
Es würde mir sehr helfen wenn dieser bald mal existieren würde, da meine
Klassen bereits auf das neue Dateiverwaltungs-System ausgerichtet sind,
bei dem man allen möglichen Objekten (Teile, Footprints, Lieferanten,
...) Dateien zuordnen kann.
Aber ist nur so eine Idee, kam mir einfach in den Sinn dass mir das sehr
helfen würde. Ich will dich natürlich nicht hetzen :-)
Oder hast du mit Ajax auch zu wenig Erfahrung um einen hübschen solchen
Dialog zu erstellen?
Vielleicht würden sich dazu ein paar Komponenten von dieser Seite
anbieten:
http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml
Schön wäre, wenn man den Upload-Dialog vielleicht ungefähr so verwenden
könnte:
1
$dialog = new UploadDialog(/* ein paar Parameter */);
2
$filename = $dialog->open(); // Öffnet den Upload-Dialog (ein Popup) und gibt den Dateinamen der markierten Datei zurück
Ein paar Informationen wären hier noch aufgelistet:
https://code.google.com/p/part-db/issues/detail?id=14
Der letzte genannte Punkt (rekursive Eindeutigkeit der Dateinamen) wird
aber vermutlich nicht nötig sein. Auch eine Abfrage, ob ein grosses Bild
verkleinert werden soll wird es nicht brauchen wenn später sowieso mit
Thumbnails gearbeitet wird.
mfg
Stimmt das Archiv dass ich installiert hatte war die 514. allerdings
zeigt der mainscreen Rev 512 an. es war das archiv von urban b. das er
hier gepostet hat.
also die footprint spalte ist z.b. in den Baugruppen noch vorhanden.
Stört aber aktuell nicht weiter. falls die funktion später im konfig
menü per checkbox an bzw abgewählt werden kann wäre das super...
habe auch nochmal die beiden files geupdatet. soweit funktioniert alles
aktuell...
kirk disen schrieb:> Stimmt das Archiv dass ich installiert hatte war die 514. allerdings> zeigt der mainscreen Rev 512 an. es war das archiv von urban b. das er> hier gepostet hat.
Ups das ist vermutlich mein Fehler ;-) Ich hätte wohl erst noch ein "SVN
checkout" machen sollen bevor ich das Paket geschnürt habe, damit dann
auch die richtige Version angezeigt wird. Und eigentlich hätte ich
gleich alls .svn Ordner löschen können, aber es ist mir gar nicht in den
Sinn gekommen dass die vorhanden sind, da man sie ja nicht sieht (im
Dateibrowser unter Linux sind alle Dateien/Ordner mit einem Punkt am
Anfang unsichtbar).
Naja ist eigentlich aber nicht weiter schlimm. Aber jetzt weiss ich
wenigstens welche Version du hast :-)
kirk disen schrieb:> also die footprint spalte ist z.b. in den Baugruppen noch vorhanden.> Stört aber aktuell nicht weiter. falls die funktion später im konfig> menü per checkbox an bzw abgewählt werden kann wäre das super...
Ach so, bei den Baugruppen meinst du. Stimmt, das habe ich irgendwie
vergessen. Hab gedacht ich hätte es dort auch eingebaut...
Ich habs noch schnell eingebaut, hier gibts die neuste Version der
entsprechenden Datei:
https://part-db.googlecode.com/svn-history/r515/trunk/deviceinfo.php
was mir noch aufgefallen ist... wenn man mit paketen updatet kommt
eigentlich nur das überschreiben der alten dateien in frage, da die
ganzen artikelbilder im unterordner img liegen. hätte fast den fehler
gemacht und alles gelöscht und auf die neue datenbank verlinkt in der
config. die problematik die ich da aber sehe ist dass dabei wohlmöglich
alte dateileichen die nicht mehr benötigt werden erhalten bleiben. ist
in der updateroutine schon etwas eingebaut dass den ganzen dateistamm
checkt während des updates und unnötige dateien löscht?
zu dem footprint ausblenden: wenn man über die suchfunktion teiel sucht
taucht das footprint auch wieder als spalte rechts in der auflistung mit
auf. direkt über die kategorien ist es aber schön ausgeblendet...
bin aktuell noch bei der r514...
kirk disen schrieb:> zu dem footprint ausblenden: wenn man über die suchfunktion teiel sucht> taucht das footprint auch wieder als spalte rechts in der auflistung mit> auf.
Ist jetzt auch behoben :-)
https://part-db.googlecode.com/svn-history/r516/trunk/nav.phphttps://part-db.googlecode.com/svn-history/r516/trunk/search.phpkirk disen schrieb:> was mir noch aufgefallen ist... wenn man mit paketen updatet kommt> eigentlich nur das überschreiben der alten dateien in frage, da die> ganzen artikelbilder im unterordner img liegen. hätte fast den fehler> gemacht und alles gelöscht und auf die neue datenbank verlinkt in der> config. die problematik die ich da aber sehe ist dass dabei wohlmöglich> alte dateileichen die nicht mehr benötigt werden erhalten bleiben. ist> in der updateroutine schon etwas eingebaut dass den ganzen dateistamm> checkt während des updates und unnötige dateien löscht?
Ja, man soll einfach immer die alten Dateien mit den neuen
überschreiben. Dass Dateileichen entfernt werden, ist momentan nicht
möglich. Ausser du aktualisierst dein Verzeichnis direkt per SVN, dann
sollten zumindest die Systemdateien, die nicht mehr gebraucht werden,
gelöscht werden (meine ich zumindest).
Oder wenn man das ganze System löschen will, dann löscht man halt alles
ausser dem img-Ordner. Sonst sollten sich ja nirgens vom Benutzer
erstellte Dateien befinden (ausser die config.php noch).
Später soll das Löschen von Dateileichen natürlich die Updatefunktion
des Systems übernehmen. Auch soll etwas mehr Ordnung eingeführt werden,
was die selbst hochgeladenen Dateien betrifft. Für hochgeladene Dateien
gibt es dann ein Verzeichnis "media/", in dem alle hochgeladenen Dateien
landen (und nur in dem!). Also alles, was sich ausserhalb von media/
befindet gehört zum System und wird durch die Updatefunktion sauber
gehalten. Und für alles was sich dann in media/ befindet, ist der
Benutzer selbst verantwortlich (es könnte aber vom System eine Funktion
geben, die nicht benutzte Dateien im media-Verzeichnis aufspürt und dem
Benutzer das Aufräumen vereinfacht).
Urban B. schrieb:> Ja, man soll einfach immer die alten Dateien mit den neuen> überschreiben. Dass Dateileichen entfernt werden, ist momentan nicht> möglich. Ausser du aktualisierst dein Verzeichnis direkt per SVN, dann> sollten zumindest die Systemdateien, die nicht mehr gebraucht werden,> gelöscht werden (meine ich zumindest).
Im Prinzip hab ich das bei mir in meinem Update-System so vorgesehen.
Entweder wird das schon im Update-Script (update.ups) durch ein delete
gemacht (bevorzugt) oder cleanup() überprüft anhand einer aktuellen
Dateiliste, welche Systemdateien vorhanden sein müssen. Die speziellen
Listen bzw. die repair.ups würden bei Bedarf automatisch ersetzt und
abgearbeitet.
> Oder wenn man das ganze System löschen will, dann löscht man halt alles> ausser dem img-Ordner. Sonst sollten sich ja nirgens vom Benutzer> erstellte Dateien befinden (ausser die config.php noch).
Da die config.php irgendwann nur noch die Zugangsdaten der Datenbank
enthält, wäre die grundsätzlich beim Update nicht überschreibbar
(Blacklist).
Urban B. schrieb:> @Udo>> Hättest du vielleicht auch noch Zeit und Lust, mal mit dem universellen> Dateiupload zu beginnen? :-)> Es würde mir sehr helfen wenn dieser bald mal existieren würde, da meine> Klassen bereits auf das neue Dateiverwaltungs-System ausgerichtet sind,> bei dem man allen möglichen Objekten (Teile, Footprints, Lieferanten,> ...) Dateien zuordnen kann.>> Aber ist nur so eine Idee, kam mir einfach in den Sinn dass mir das sehr> helfen würde. Ich will dich natürlich nicht hetzen :-)>> Oder hast du mit Ajax auch zu wenig Erfahrung um einen hübschen solchen> Dialog zu erstellen?
Ich habe meist das dojo-Framework genutzt. Nach meiner Kenntnis gibt es
da kein Multiupload, den man direkt nutzen kann. Aber ein asynchroner
Dateiupload hatte ich damit schon hinbekommen. Ich werde mich aber
erstmal nicht damit beschäftigen, sonst werden Templates und meine
Update-Klasse niemals fertig.
Udo Neist schrieb:> Ich habe meist das dojo-Framework genutzt. Nach meiner Kenntnis gibt es> da kein Multiupload, den man direkt nutzen kann. Aber ein asynchroner> Dateiupload hatte ich damit schon hinbekommen.
Hmm das dojo Framework sieht ja ziemlich cool aus. Ich würde es sehr
begrüssen wenn irgendwann mal (in ferner Zukunft^^) ganz Part-DB mit so
einem System (muss ja nicht dojo sein) realisiert wird. Dann hätte man
eigentlich ein vollwertiges Programm, als wäre es eine lokale
Installation. Also ich meine wegen den vielen neuen Möglichkeiten, die
so ein Framework bieten. Konkret meine ich damit solche Sachen wie
Drag&Drop, Kontextmenüs usw, die die Bedienung viel komfortabler
gestalten. Aber momentan haben wir wichtigere Sachen zu tun :-)
Bezüglich Lizenz-Kram bin ich nicht gerade ein Profi. Ich habe mal
Wikipedia etwas bemüht, und ich habe den Eindruck dass die von dojo
angebotene BSD-Lizenz zu unserem Projekt passen würde oder? Die scheint
sogar "noch freier" als GPL zu sein wenn ich das richtig verstanden
habe?
Ich finde es halt einfach wichtig, dass wir keine Komponenten verwenden,
die dann plötzlich lizenztechnische Einschränkungen für Part-DB
darstellen könnte.
Ach ja, was meinst du genau mit Multiupload? Dass man mehrere Dateien
gleichzeitig uploaden kann? :-)
> Ich werde mich aber> erstmal nicht damit beschäftigen, sonst werden Templates und meine> Update-Klasse niemals fertig.
Jop, das ist natürlich kein Problem :-)
GPL und BSD kann man zusammen nutzen. Ist allerdings etwas umstritten,
ob beide Lizenzen kompatibel sind. Ich meine ja. Vielleicht hier und da
nicht perfekt, aber es geht ja (siehe die meisten Linux-Distris, die
auch sehr viele Tools mit BSD-Lizenz nutzen).
bei der r514 fällt mir auf dass es in der Artikelauflistung nicht mehr
möglich ist die Unterkategorien auszublenden. Das ging definitiv vorher
mal. ist das Absicht oder gibt es ne andere Möglichkeit die
Unterkategorien auszublenden?
kirk disen schrieb:> bei der r514 fällt mir auf dass es in der Artikelauflistung nicht mehr> möglich ist die Unterkategorien auszublenden.
Bist du dir da ganz sicher? Ich konnte dies bei mir nicht
nachvollziehen. Und auch in der Online-Demo
(http://partdb.grautier.com/) funktioniert es (Ich weiss zwar nicht
welche SVN Revision dort läuft, aber es müsste eigentlich die jeweils
aktuellste sein).
Zur Sicherheit kannst du ja mal noch die neuste showparts.php holen:
https://part-db.googlecode.com/svn/trunk/showparts.php
Ansonsten müsste man vielleicht mal schauen, ob Apache irgendwelche
Fehlermeldungen liefert.
Hi, die Demo ist momentan nicht die aktuellste hab den Server neu
aufsetzen müssen die ist ca. 20 tage alt bin noch nicht dazu gekommen
das autoupdaten wieder einzurichten.
Hi,
ich find es Klasse, dass das Projekt so aktiv entwickelt wird, weiter
so.
Ich hab meinen Widerstandsrechner auch etwas erweitert. Man kann jetzt
den besten Widerstand aus einer E-Reihe suchen und die besten
Widerstände für Spannungsteiler.
Anbei ein diff-File und die drei Bilder müssen in den Ordner
tools/rechner/
Ob die Bestimmung der Widerstände die optimalste ist weis ich nicht,
wäre nett wenn das ein paar Leute testen könnten.
Geplant ist noch ein Rechner für dem LM317.
André Althaus schrieb:> ich find es Klasse, dass das Projekt so aktiv entwickelt wird, weiter> so.
Wir geben uns Mühe ;-)
> Ich hab meinen Widerstandsrechner auch etwas erweitert. Man kann jetzt> den besten Widerstand aus einer E-Reihe suchen und die besten> Widerstände für Spannungsteiler.>> Anbei ein diff-File und die drei Bilder müssen in den Ordner> tools/rechner/
Hmm entweder bin ich zu dumm um den Patch zu übernehmen (gut möglich,
weiss nicht wie es geht^^), oder irgendwas stimmt mit dem Patch nicht
;-) Die JavaScript-Sachen funktionieren nach dem patchen irgendwie nicht
mehr...Könntest du vielleicht einfach die ganzen Dateien hochladen, die
überschrieben werden müssen? :-)
André Althaus schrieb:> Hi,> ich hab die Dateien nochmal angehängt. Die Datei einfach in den tools> Ordner entpacken.
Danke, aber bei mir funktionieren die neuen zwei Funktionen nicht. Da
tut sich JavaScriptmässig einfach nichts. Ich habe die Dateien trotzdem
mal ins SVN geladen (r517), dann können die anderen auch mal schauen obs
bei ihnen funktioniert.
André Althaus schrieb:> Welchen Browser benutzt du? Ich habs bisher nur mit Firefox 14 getestet.
Ebenfalls FF14, auf Linux Ubuntu. Die Farbringtabelle funktioniert, nur
die neuen beiden Funktionen nicht.
Du kannst ja mal die aktuelle SVN Version beziehen und schauen ob die
bei dir läuft. Dann reden wir auch sicher von den gleichen Dateien. Ich
kann nicht ausschliessen dass ich irgendwas falsch gemacht habe ;-)
Oder wenn die Online-Demo bald wieder richtig funktioniert könnten wir
es dort testen :-) (@K.J. soll nicht heissen dass du stressen sollst xD)
Ach übrigens @all:
Die Semesterprüfungen sind fast vorbei (nur noch eine), heisst also ich
kann langsam wieder mit dem Programmieren anfangen :-) @Udo, wie weit
bist du mit den Templates?
Leider nicht viel weiter. Hatte andere Arbeiten vorzuziehen :( Ich hoffe
doch sehr, das ich diese Woche mal ein paar Stunden wieder daran
arbeiten werde. Soviel Rückstand ist ja nicht, dass ich es nicht
schaffen könnte.
K. J. schrieb:> Hi, so die DemoDB wird jetzt wieder einmal am tag upgedated um 11:00.>> mfg
Wunderbar!
Jetzt sehe ich auch dass der Widerstandsrechner funktioniert. Da muss
wohl irgendwas an meiner Installation faul sein... Neuerdings liegen bei
mir die Skripte auf einer Samba Freigabe, die dann nach /var/www
gemountet werden. Vielleicht ist da ja nun irgendwo der Hund begraben...
Urban B. schrieb:> K. J. schrieb:>> Hi, so die DemoDB wird jetzt wieder einmal am tag upgedated um 11:00.>>>> mfg>> Wunderbar!> Jetzt sehe ich auch dass der Widerstandsrechner funktioniert. Da muss> wohl irgendwas an meiner Installation faul sein... Neuerdings liegen bei> mir die Skripte auf einer Samba Freigabe, die dann nach /var/www> gemountet werden. Vielleicht ist da ja nun irgendwo der Hund begraben...
Ahm WTF du mountest ne SAMBA Freigabe in nen Webordner ? mal abgesehen
von den Rechteproblemen, gibt es da noch diverse andere.
K. J. schrieb:> Ahm WTF du mountest ne SAMBA Freigabe in nen Webordner ? mal abgesehen> von den Rechteproblemen, gibt es da noch diverse andere.
xD ja ich weiss es ist komisch aber eigentlich scheint alles zu
funktionieren. Dass es sicherheitstechnisch vielleicht nicht optimal ist
ist mir wurscht, läuft ja alles in meinem privaten LAN.
Der Hintergrund ist folgender:
Ich möchte den Webserver (momentan) am liebsten in einer VM laufen
lassen, denn ich lagere gerne Software in VMs aus um mein System
"sauber" zu halten. Die Webseiten an sich (also die Dateien) möchte ich
aber auf meiner lokalen Festplatte haben, nicht in einer VM (1. möchte
ich keine Dateien verlieren wenn eine VM kaputt geht (meine lokalen
Dateien werden täglich gesichert) und 2. ist das Programmieren
angenehmer wenn sich die Dateien auf meinem eigenen System befinden). Da
die Webseiten sowieso Teil einer Samba Freigabe sind, dachte ich, ich
könnte ja den freigegebenen Ordner "www" in der VM einfach per fstab
nach "var/www" mounten. Dazu noch in der fstab "uid=33,gid=33" setzen
damit "www-data" Zugriff auf die Dateien hat.
Wie gesagt, eigentlich funktioniert es :-) Ob das Javascript-Problem
wirklich durch meine komische Konstellation entstanden ist, weiss ich
nicht. Andere JavaScript Teile funktionieren wunderbar.
Udo Neist schrieb:> Nimm statt Samba NFS für die Freigabe.
Für all meine Freigaben NFS zu verwenden geht nicht, es gibt noch einen
Windows PC der auf die Freigaben zugreifen muss. Und Samba und NFS
parallel zu nutzen finde ich irgendwie blöd ;-)
Urban B. schrieb:> Für all meine Freigaben NFS zu verwenden geht nicht, es gibt noch einen> Windows PC der auf die Freigaben zugreifen muss. Und Samba und NFS> parallel zu nutzen finde ich irgendwie blöd ;-)
Nutze ich hier schon seit Jahren. Was soll daran blöd sein? Man muss ja
kein YP-Server parallel aufbauen g NFS v4 ist performanter, braucht
auch nicht unbedingt Kerberos.
Udo Neist schrieb:> Nutze ich hier schon seit Jahren. Was soll daran blöd sein?
Naja dann ist mein PC irgendwann mehr Server als Workstation^^ Ne ich
mag es einfach nicht wenn mein Arbeits-PC vollgestopft ist mit Software.
Daher auch die VMs (ich könnte ja auch Apache auf meinem PC laufen
lassen, will ich aber nicht). Ich bin auch einfach zu faul all das Zeug
wieder zu installieren wenn ich mal mein System neu aufsetze. Lieber die
weniger häufig verwendeten Programme in einer VM installieren, dann
brauche ich nach einer Neuinstallation des Systems nur noch Virtualbox
zu installieren.
Aber wenn wirklich Samba an dem JavaScript Problem schuld sein sollte,
werde ich da natürlich schon noch was unternehmen :-) Momentan hat das
aber keine Priorität, sonst läuft ja alles so wie es soll.
Übrigens arbeite ich gerade an der ganzen Update-Geschichte von Part-DB.
Vor allem auch zu den Versionsbezeichnungen habe ich mir Gedanken
gemacht. Mein Vorschlag wäre, dass ein User zwischen drei Varianten
wählen können soll: "stable", "unstable" und "svn".
Bei "stable" soll das System nur Updates anzeigen, die als stabil
gekennzeichnet sind. Bei "unstable" dachte ich, das sollen einfach die
Release Candidates von der nächsten stabilen Version sein, und bei "svn"
immer die jeweils aktuelle SVN Revision. Letzteres funktioniert
vermutlich halt auf vielen Webspaces nicht, ist aber ja auch nicht
weiter schlimm.
(es gibt aber sogar spezielle PHP-Funktionen um SVN-Sachen erledigen zu
können [scheinen aber noch experimentell zu sein]. Vielleicht ist auf
einigen Webservern ja sogar das entsprechende Plugin installiert, dann
könnte man ein checkout machen ohne ein exec(). )
Eine stabile Version soll aus drei Ziffen bestehen, z.B: "0.2.3".
Eine unstabile Version mit dem Vermerk des RC: "0.2.4 RC3".
Und eine SVN Revision "r567".
Um diese drei Versionsbezeichnungen auch untereinander vergleichen zu
können (zum entscheiden, welche neuer/älter ist), würde sich anbieten,
dass die stabilen und unstabilen Versionen auch immer den Vermerk zur
jeweiligen SVN Revision beinhalten. Also dass z.B. die Version "0.2.3"
damals die Revision "r456" hatte.
Die Revisionsnummer wäre programmiertechnisch dann eigentlich die
relevante Information, um Versionen untereinander vergleichen zu können.
Wenn wir nur mit den "0.2.3"-Bezeichnungen arbeiten würden, könnte es
sonst mal zu einem Durcheinander kommen. Man stelle sich vor, dass
jemand von "svn" auf "stable" wechseln möchte. Wie kann dann Part-DB
entscheiden, welche Updates es runterladen/installieren muss? Es weiss
ja nichtmal, ob die neuste stabile Version überhaupt neuer ist als die
aktuell installierte SVN Revision. Arbeiten wir mit den Revisionszahlen,
ist es für das System kein Problem zu erkennen, ob ein Update verfügbar
ist oder nicht.
Das würde dann natürlich bedeuten, dass bei jedem Update, das angeboten
wird, auch die jeweilige Revisionsnummer hinterlegt sein muss. Aber das
sollte ja nicht weiter stören.
Urban B. schrieb:>> Nutze ich hier schon seit Jahren. Was soll daran blöd sein?>> Naja dann ist mein PC irgendwann mehr Server als Workstation^^ Ne ich> mag es einfach nicht wenn mein Arbeits-PC vollgestopft ist mit Software.> Daher auch die VMs (ich könnte ja auch Apache auf meinem PC laufen> lassen, will ich aber nicht). Ich bin auch einfach zu faul all das Zeug> wieder zu installieren wenn ich mal mein System neu aufsetze. Lieber die> weniger häufig verwendeten Programme in einer VM installieren, dann> brauche ich nach einer Neuinstallation des Systems nur noch Virtualbox> zu installieren.
Ich hab ein eigenes Netzwerk hier laufen. Mein Server stellt mir alles
wichtige für die Webprogrammierung zur Verfügung. Wenn schon, dann teste
ich es in einer realen Umgebung. Eine VM hätte nur den Vorteil, dass man
fatale Fehler einfach schnell ungeschehen machen kann. Aber wofür hat
man ja ein tägliches Backup oder kopiert mal schnell die betreffenden
Dateien unter einen neuen Namen? Aber jeder arbeitet ja anders ;-)
Revision 518:
- showdevices.php auf Templates umgestellt
- Anstelle von $currency wird money_format() verwendet und Darstellung
in der Tabelle angepasst
Mir ist per Zufall die PHP-Funktion money_format() aufgefallen, als ich
die Zahlendarstellung der Preise vereinheitlichen wollte. Diese Funktion
kann die Währung anhand von der Umgebungsvariable LC_MONETARY und einem
Formatstring darstellen. Somit kann auf die Variable $currency
verzichtet werden.
ToDo: Formatstring anhand von LC_MONETARY aus einem Array entnehmen.
Bei meiner Umstellung auf Templates sind mir die doch sehr
unterschiedliche Formatierungen aufgefallen. Ich habe mir mal ein paar
Gedanken über ein gemeinsamen Styleguid gemacht. Er sollte so einfach
wie möglich sein, damit Einsteiger recht schnell damit zurecht kommen.
1
Styleguide --- 28.08.2012 Udo Neist (weinbauer73@gmail.com)
2
3
*** Sprache ***
4
5
- Alle Kommentare sind in Englisch zu verfassen.
6
- Deutsche Kommentare sind entsprechend zu kennzeichnen und möglichst rasch ins englische zu übersetzen.
7
- Kommentare sind nicht überflüssig, sondern notwendig!
8
9
*** Dokumentation ***
10
11
- Einleitende Kommentare für die Funktionsbeschreibung sollten nicht vergessen werden.
12
- Dokumentationssystem wird noch gesucht.
13
- Offizielles Wiki nutzen.
14
15
*** Entwicklung ***
16
17
- PHP 4 ist veraltet und sollte nicht mehr genutzt werden.
18
- Alle neuen Funktionen werden in den Branches zuerst getestet und dann in die offizielle Version übernommen.
19
- Kennzeichnung von stable, unstable und non public (oder ähnlich)-Versionen.
20
21
*** PHP-Script ***
22
23
- Einleitung mit Lizenz
24
- darunter Initiator der Datei mit Datum und Email
25
- darunter Auflistung der Änderungen im folgenden Format:
26
- Jahr Email
27
- neue Zeile
28
- Tabulator und "-"
29
- Kurze Beschreibung der Änderung
30
- möglichst eine Auflistung aller Funktionen
31
- Ausgabe von HTML nicht in das Script übernehmen, dazu Templates (vlibTemplate) nutzen.
32
- Eine zentrale Library bindet die
33
34
*** Einrückungen ***
35
36
- 1 Tabulatorschritt umfasst 5 Spaces.
37
- Öffnende und schliessende geschweifte Klammern in einer eigenen Zeile.
38
- Jeder Block innerhalb geschweifter Klammern um einen Tab einrücken.
39
- Ausnahmen für einzeilige Blöcke. Auf Klammern sollte der Lesbarkeit wegen nicht verzichtet werden.
40
- IF-THEN-ELSE als ternärer Operator ist erlaubt, sollte möglichst aber nur bei der Zuweisung von Werten verwendet werden.
41
- Arrays oder längere Strings so formatieren, das eine gute Lesbarkeit gewährleistet ist.
42
43
*** Benennungen ***
44
45
- Funktionen werden klein geschrieben und müssen selbst beschreibende Namen tragen.
46
- Trennung der einzelnen Wörter erfolgt mit dem Unterstrich ("_").
47
48
*** Klassen und Funktionen ***
49
50
- Sich wiederholende Funktionen bitte in Klassen auslagern.
51
- Namespaces sind möglich.
52
- Klassen mit dem Konstruktur __construct() für die Prüfung auf Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.
53
- Debug-Funktionen ermöglichen.
Wenn es keine größeren Widersprüche gibt, stelle ich das am Wochenende
ins PartDB-Wiki.
Udo Neist schrieb:> Bei meiner Umstellung auf Templates sind mir die doch sehr> unterschiedliche Formatierungen aufgefallen. Ich habe mir mal ein paar> Gedanken über ein gemeinsamen Styleguid gemacht.
Gute Idee!
> *** Entwicklung ***>> - PHP 4 ist veraltet und sollte nicht mehr genutzt werden.
Spätestens wenn wir unsere Branches in den Trunk übernehmen, ist Part-DB
auch gar nicht mehr lauffähig mit PHP 4, vor allem wegen dem PDO und den
Klassen (die sich seit PHP 4 stark verändert haben und eine
Kompatibilität sehr aufwändig machen würde). Daher ist dann "sollte
nicht mehr genutzt werden" zu ungenau - es kann gar nicht mehr genutzt
werden.
> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann> in die offizielle Version übernommen.
Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre
Part-DB Installationen über die Updatefunktion ganz einfach aktuell
halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz
haben (ausser natürlich für die Entwicklung). Daher darf im Trunk
durchaus auch mal eine Version drin sein, die noch offensichtliche
Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so
gedacht", oder?
> - Kennzeichnung von stable, unstable und non public (oder> ähnlich)-Versionen.
Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so
vorstellen:
- Die Hauptentwicklung geschieht im Trunk
- Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests
werden in Branches durchgeführt (so wi wir beiden es momentan halt
machen)
- Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst
stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und
geben dieses frei für diejenigen, die bei sich die "unstable" Updates
installieren.
- Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun
stabil, erstellen wir ein Update-Paket und geben dieses als "stable"
frei.
Zwischen der Herausgabe des ersten Release Candidate bis zur jeweiligen
stabilen Version sollten natürlich keine grösseren Änderungen mehr
durchgeführt werden (neue Funktionen usw.). Die behält man besser
erstmal entweder bei sich auf dem PC oder halt in einem Branch. Nach der
Herausgabe der stabilen Version kann man dann wieder im Trunk
herumwerkeln wie man will.
> - Eine zentrale Library bindet die
das verstehe ich nicht :-)
> - 1 Tabulatorschritt umfasst 5 Spaces.
5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel
verbreiteter würde ich meinen.
> - Klassen mit dem Konstruktur __construct() für die Prüfung auf> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.
Hmm das verstehe ich auch nicht :-)
> - Debug-Funktionen ermöglichen.
Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend
ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen
ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb
von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht
ersichtlich).
Ansonsten bin ich mit dem Styleguide einverstanden.
Urban B. schrieb:>> *** Entwicklung ***>>>> - PHP 4 ist veraltet und sollte nicht mehr genutzt werden.>> Spätestens wenn wir unsere Branches in den Trunk übernehmen, ist Part-DB> auch gar nicht mehr lauffähig mit PHP 4, vor allem wegen dem PDO und den> Klassen (die sich seit PHP 4 stark verändert haben und eine> Kompatibilität sehr aufwändig machen würde). Daher ist dann "sollte> nicht mehr genutzt werden" zu ungenau - es kann gar nicht mehr genutzt> werden.
Für uns ist es klar, aber vielleicht gibt es noch Neueinsteiger, die
auch PHP 4 wollen? Ist nur eine Klarstellung.
>> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann>> in die offizielle Version übernommen.>> Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre> Part-DB Installationen über die Updatefunktion ganz einfach aktuell> halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz> haben (ausser natürlich für die Entwicklung). Daher darf im Trunk> durchaus auch mal eine Version drin sein, die noch offensichtliche> Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so> gedacht", oder?
Ich habe die Styleguides bewusst so geschrieben, denn es spiegelt die
aktuelle Situation dar. Wenn später die Update-Funktion auch klappt und
wir eine neue offzielle Version haben, würde dieser Punkt wegfallen.
>> - Kennzeichnung von stable, unstable und non public (oder>> ähnlich)-Versionen.>> Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so> vorstellen:> - Die Hauptentwicklung geschieht im Trunk> - Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests> werden in Branches durchgeführt (so wi wir beiden es momentan halt> machen)> - Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst> stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und> geben dieses frei für diejenigen, die bei sich die "unstable" Updates> installieren.> - Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun> stabil, erstellen wir ein Update-Paket und geben dieses als "stable"> frei.
Sagt das obige was anderes aus? Nicht das ich wüsste. Uns dürfte es klar
sein, nur ob alle den Unterschied verstehen? "stable" ist der offizielle
Teil, "unstable" die vor der Freigabe stehende und "non public" sind
halt unsere beiden Branches. Oder wie würdest du es nennen? Release
Candidates würde ich zu den "unstable"-Versionen zählen.
>> - Eine zentrale Library bindet die>> das verstehe ich nicht :-)
Na, das nicht jedes Script jede Library und Klasse selbst einbinden
muss. Derzeit läuft das ja über die lib.php bzw. config.php und erfüllt
damit die Bedingung.
>> - 1 Tabulatorschritt umfasst 5 Spaces.>> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel> verbreiteter würde ich meinen.
Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich
hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)
>> - Klassen mit dem Konstruktur __construct() für die Prüfung auf>> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.>> Hmm das verstehe ich auch nicht :-)
Ganz einfach. Die einzelnen Klassen haben untereinander Abhängigkeiten.
Fehlt eine Funktion, sei eine fehlende Datei im System oder eine falsche
PHP-Version, so läuft das Script nicht. Genauso ist das mit den Rechten
im Dateisystem (hatten wir ja schon mit get_svn_revision()), kann man
dort auch prüfen. Ich meine, wir sollten das schon nutzen.
>> - Debug-Funktionen ermöglichen.>> Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend> ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen> ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb> von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht> ersichtlich).
Man könnte in den Templates ein Debug-Block hinzufügen, der dort gewisse
Daten darstellt oder in ein "Logfile" schreibt, welches in einem eigenen
Fenster regelmäßig per Ajax geladen werden kann.
> Ansonsten bin ich mit dem Styleguide einverstanden.
Gut :-)
Der Styleguide soll Neueinsteigern ein paar kleine Regeln für das
Projekt aufzeigen, wie wir das ganze Handhaben wollen. Für uns ist das
meiste selbstverständlich. Ich will euch ja auch nicht bevormunden, nur
weil ich seit Anfang/Mitte der 1980er programmiere und für meine eigenen
Projekte entsprechende Regeln versuche einzuhalten, auch wenn sie
nirgendwo stehen. Es macht aber die Arbeit erträglicher, wenn man nach
einiger Abwesenheit wieder am Code arbeiten "muss". Sind ja alles nur
Vorschläge :-)
>>> - Alle neuen Funktionen werden in den Branches zuerst getestet und dann>>> in die offizielle Version übernommen.>>>> Hmm ich weiss nicht ob das wirklich notwendig ist. Wenn die User ihre>> Part-DB Installationen über die Updatefunktion ganz einfach aktuell>> halten können, wird (hoffentlich) keiner mehr die SVN-Version im Einsatz>> haben (ausser natürlich für die Entwicklung). Daher darf im Trunk>> durchaus auch mal eine Version drin sein, die noch offensichtliche>> Fehler enthält. Ich denke, das ist doch bei SVN eigentlich auch "so>> gedacht", oder?>> Ich habe die Styleguides bewusst so geschrieben, denn es spiegelt die> aktuelle Situation dar. Wenn später die Update-Funktion auch klappt und> wir eine neue offzielle Version haben, würde dieser Punkt wegfallen.
Ach so, ja klar, beim aktuellen Stand passt das natürlich. Irgendwie
denke ich einfach immer schon an den Moment, wo unsere Branches zur
stabilen Version werden^^
>>> - Kennzeichnung von stable, unstable und non public (oder>>> ähnlich)-Versionen.>>>> Ich weiss jetzt nicht genau wie du das meinst. Ich würde mir das so>> vorstellen:>> - Die Hauptentwicklung geschieht im Trunk>> - Nur grössere Änderungen, die lange dauern, oder irgendwelche Tests>> werden in Branches durchgeführt (so wi wir beiden es momentan halt>> machen)>> - Von Zeit zu Zeit schauen wir, dass die Version im Trunk möglichst>> stabil läuft. Dann erstellen wir vom Trunk ein Release Candidate und>> geben dieses frei für diejenigen, die bei sich die "unstable" Updates>> installieren.>> - Wenn wir der Meinung sind, die aktuelle Version im Trunk ist nun>> stabil, erstellen wir ein Update-Paket und geben dieses als "stable">> frei.>> Sagt das obige was anderes aus? Nicht das ich wüsste. Uns dürfte es klar> sein, nur ob alle den Unterschied verstehen? "stable" ist der offizielle> Teil, "unstable" die vor der Freigabe stehende und "non public" sind> halt unsere beiden Branches. Oder wie würdest du es nennen? Release> Candidates würde ich zu den "unstable"-Versionen zählen.
OK dann hast du es so gemeint wie ich. Deshalb habe ich ja geschrieben
"Ich weiss jetzt nicht genau wie du das meinst". Dein Wort
"kennzeichnen" hat mich verwirrt, ich wusste nicht ob du damit irgendwie
eine explizite Kennzeichnung der Revisionen meinst oder so. Die
eigentliche "Kennzeichnung" wird aber ja erst beim Bereitstellen von
Updates durchgeführt, nicht vorher und nicht nachher. Also haben
schlussendlich nur die Updatepakete eine solche Kennzeichnung, in den
branches und im trunk gibts sowas nicht. Aber ich glaube jetzt wir
meinen beide dasselbe, wollte nur sichergehen :-)
>>> - Eine zentrale Library bindet die>>>> das verstehe ich nicht :-)>> Na, das nicht jedes Script jede Library und Klasse selbst einbinden> muss. Derzeit läuft das ja über die lib.php bzw. config.php und erfüllt> damit die Bedingung.
Warum soll nicht jedes Skript jede benötigte Library und Klasse selber
einbinden? Das ist doch die einzig "saubere" Lösung. Nur das Includen,
was auch wirklich benötigt wird, nicht mehr und nicht weniger. Aber
natürlich alles hierarchisch, man included nur die Klasse die man auch
benötigt, die Abhängigkeiten dieser Klasse werden dann natürlich durch
diese Klasse selber eingebunden.
>>> - 1 Tabulatorschritt umfasst 5 Spaces.>>>> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel>> verbreiteter würde ich meinen.>> Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich> hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)
Interessant, habe noch nie 5 Spaces gesehen, darum war ich so "verwirrt"
:-)
>>> - Klassen mit dem Konstruktur __construct() für die Prüfung auf>>> Abhängigkeiten der Klasse und eventuell fehlenden Funktionen versehen.>>>> Hmm das verstehe ich auch nicht :-)>> Ganz einfach. Die einzelnen Klassen haben untereinander Abhängigkeiten.> Fehlt eine Funktion, sei eine fehlende Datei im System oder eine falsche> PHP-Version, so läuft das Script nicht. Genauso ist das mit den Rechten> im Dateisystem (hatten wir ja schon mit get_svn_revision()), kann man> dort auch prüfen. Ich meine, wir sollten das schon nutzen.
Ah jetzt habe ich verstanden was du meinst. Ob es Sinn macht, diese
Sachen in den Konstruktor aufzunehmen, darüber lässt sich diskutieren.
Steht wirklich irgend eine Funktion nicht zur Verfügung, wäre die ganze
Klasse dann ja nicht mehr funktionsfähig. Wird die Überprüfung erst
durchgeführt wenn eine solche Funktion gebraucht wird (oder gar nicht
überprüft...) dann fehlt nur diese eine Funktionalität der Klasse, der
Rest davon kann weiterhin funktionieren.
>>> - Debug-Funktionen ermöglichen.>>>> Gute Idee, nur wie macht man das bei PHP am besten? Hat sich da irgend>> ein System eingebürgert? Einfach mit "print" irgendwelche Meldungen>> ausgeben funktioniert ja nicht immer (wenn z.B. eine Meldung innerhalb>> von einem html-<select> ausgegeben wird, wäre sie teilweise gar nicht>> ersichtlich).>> Man könnte in den Templates ein Debug-Block hinzufügen, der dort gewisse> Daten darstellt oder in ein "Logfile" schreibt, welches in einem eigenen> Fenster regelmäßig per Ajax geladen werden kann.
Ah ja das wäre genial! Und wie würdest du dann die Debug-Meldungen an
diese Seite übermitteln? Irgendwie mit einer globalen Variable? Mit
$_SESSION?
> Ich will euch ja auch nicht bevormunden, nur> weil ich seit Anfang/Mitte der 1980er programmiere und für meine eigenen> Projekte entsprechende Regeln versuche einzuhalten, auch wenn sie> nirgendwo stehen. Es macht aber die Arbeit erträglicher, wenn man nach> einiger Abwesenheit wieder am Code arbeiten "muss". Sind ja alles nur> Vorschläge :-)
Ja klar, solche Styleguides sind immer eine gute Sache, gerade bei
OpenSource Projekten. Sofern es nicht gerade ein völlig schräger Style
ist, bin ich dafür :-)
Urban B. schrieb:> Ach so, ja klar, beim aktuellen Stand passt das natürlich. Irgendwie> denke ich einfach immer schon an den Moment, wo unsere Branches zur> stabilen Version werden^^
Das habe ich bemerkt :-) Es ist ein Ziel, aber noch nicht mal im Ansatz
sind wir beide so weit.
> OK dann hast du es so gemeint wie ich. Deshalb habe ich ja geschrieben> "Ich weiss jetzt nicht genau wie du das meinst". Dein Wort> "kennzeichnen" hat mich verwirrt, ich wusste nicht ob du damit irgendwie> eine explizite Kennzeichnung der Revisionen meinst oder so. Die> eigentliche "Kennzeichnung" wird aber ja erst beim Bereitstellen von> Updates durchgeführt, nicht vorher und nicht nachher. Also haben> schlussendlich nur die Updatepakete eine solche Kennzeichnung, in den> branches und im trunk gibts sowas nicht. Aber ich glaube jetzt wir> meinen beide dasselbe, wollte nur sichergehen :-)
Im SVN müssen wir das nicht, nur nach aussen sollte es irgendwie klar
sein :-)
> Warum soll nicht jedes Skript jede benötigte Library und Klasse selber> einbinden? Das ist doch die einzig "saubere" Lösung. Nur das Includen,> was auch wirklich benötigt wird, nicht mehr und nicht weniger. Aber> natürlich alles hierarchisch, man included nur die Klasse die man auch> benötigt, die Abhängigkeiten dieser Klasse werden dann natürlich durch> diese Klasse selber eingebunden.
Dann wirst du über kurz oder lang das Problem bekommen, jede
Abhängigkeit in den einzelnen Scripten selbst zu verwalten. Durch den
Autoloader, den ich bereits in der lib.php drin habe, werden die Klassen
selbstständig beim ersten Aufruf geladen. So ist das Problem weg.
Ansonsten gibt es ja fast keine weiteren Dateien mehr, die eingebunden
werden müssten.
>>>> - 1 Tabulatorschritt umfasst 5 Spaces.>>>>>> 5 Spaces ist aber ziemlich unüblich, oder? 4 wären doch viel>>> verbreiteter würde ich meinen.>>>> Bei den meisten Programmen die ich verwende sind 5 voreingestellt. Ich>> hab auch mit 4 keine Probleme. Hauptsache sauber getrennt :-)>> Interessant, habe noch nie 5 Spaces gesehen, darum war ich so "verwirrt"> :-)
In meinem Editor ist nur ein Tab eingestellt. Ob ein Tab 3, 4 oder 5
Leerzeichen umfasst, ist da nur eine Darstellungssache. Ich denke, wir
sollten da 3 bis 5 Leerzeichen reinschreiben. Weniger oder mehr macht
die Sache dann zu unübersichtlich (hab auch mal was von 8 Leerzeichen
pro Einrückung gelesen).
> Ah jetzt habe ich verstanden was du meinst. Ob es Sinn macht, diese> Sachen in den Konstruktor aufzunehmen, darüber lässt sich diskutieren.> Steht wirklich irgend eine Funktion nicht zur Verfügung, wäre die ganze> Klasse dann ja nicht mehr funktionsfähig. Wird die Überprüfung erst> durchgeführt wenn eine solche Funktion gebraucht wird (oder gar nicht> überprüft...) dann fehlt nur diese eine Funktionalität der Klasse, der> Rest davon kann weiterhin funktionieren.
Es gibt aber auch Abhängigkeiten, die man an x Stellen benötigt. Eine
zentrale Überprüfung lohnt sich dann schon. Man kann sich aber streiten,
ob man das will. Ich werde es zumindest in meinen Klassen einbauen, denn
ich benötige vlibTemplate und eine Fehlerbehandlungsklasse. Ich erzeuge
nicht schon am Anfang ein Objekt dieser Klassen, sondern kurz bevor ich
es brauche. Fehlt die Klasse/Funktion schon am Anfang, brauche ich alles
weitere gar nicht auszuführen. Somit gäbe es auch keine Probleme mit
fehlerhaften Daten. Meine Meinung ist halt, dass das System nicht an
fehlenden Funktionen hängen bleiben darf, sondern nur bei echten Fehlern
im System. Nichts ist peinlicher, wenn man eine Abhängigkeit vergisst.
Oder kennst du jede PHP-Installation auf Erden? Ich nicht ;-)
> Ah ja das wäre genial! Und wie würdest du dann die Debug-Meldungen an> diese Seite übermitteln? Irgendwie mit einer globalen Variable?
Landet alles in der Datenbank. Das "Logfile" wird alle x Sekunden von
einem Javascript per XMLHttpRequest geladen und angezeigt. Im Prinzip
habe ich das schon in einem ganz einfach Chatsystem so gemacht :D
> Ja klar, solche Styleguides sind immer eine gute Sache, gerade bei> OpenSource Projekten. Sofern es nicht gerade ein völlig schräger Style> ist, bin ich dafür :-)
Keine Sorge, sowas mag ich auch nicht :-) Zudem sollen ja alle was davon
haben, nicht ein durchgeknallter Freak allein lach
Udo Neist schrieb:> Dann wirst du über kurz oder lang das Problem bekommen, jede> Abhängigkeit in den einzelnen Scripten selbst zu verwalten. Durch den> Autoloader, den ich bereits in der lib.php drin habe, werden die Klassen> selbstständig beim ersten Aufruf geladen. So ist das Problem weg.> Ansonsten gibt es ja fast keine weiteren Dateien mehr, die eingebunden> werden müssten.
Ich sehe momentan aber den Vorteil der Autoload-Funktion nicht. Sieht
man in deinem Code auch irgendwo ein Aufruf dieser Funktion? Konnte beim
Durchstöbern gerade keiner finden. Aber schlussendlich schreibst du dann
einfach ein "__autoload('error')" statt einem
"include_once('error.php')", wo ist da der Vorteil?
Also ich finde, es gehört "zum guten Ton", dass man am Anfang jeder
Datei genau diejenigen includes einfügt, die gebraucht werden. Nicht
mehr und nicht weniger, und auch nicht mitten in einer Datei drin. Halt
so wie in C/C++, das ist ein ganz simples aber sauberes System.
Udo Neist schrieb:> In meinem Editor ist nur ein Tab eingestellt. Ob ein Tab 3, 4 oder 5> Leerzeichen umfasst, ist da nur eine Darstellungssache. Ich denke, wir> sollten da 3 bis 5 Leerzeichen reinschreiben. Weniger oder mehr macht> die Sache dann zu unübersichtlich (hab auch mal was von 8 Leerzeichen> pro Einrückung gelesen).
Also wir verwenden ja Leerzeichen und nicht Tabs, dann ist es ja nicht
mehr nur eine Darstellungssache. Ja, 8 Leereichen werden glaube ich im
Linux Kernel verwendet :-) Ich würde vorschlagen wir nehmen 4 Zeichen,
das ist nicht nur optisch ansprechend sondern auch ein weit verbreiteter
"Standard" (zumindest habe ich den Eindruck, dass es weit verbreitet
ist).
Udo Neist schrieb:> Es gibt aber auch Abhängigkeiten, die man an x Stellen benötigt. Eine> zentrale Überprüfung lohnt sich dann schon. Man kann sich aber streiten,> ob man das will. Ich werde es zumindest in meinen Klassen einbauen, denn> ich benötige vlibTemplate und eine Fehlerbehandlungsklasse. Ich erzeuge> nicht schon am Anfang ein Objekt dieser Klassen, sondern kurz bevor ich> es brauche. Fehlt die Klasse/Funktion schon am Anfang, brauche ich alles> weitere gar nicht auszuführen. Somit gäbe es auch keine Probleme mit> fehlerhaften Daten. Meine Meinung ist halt, dass das System nicht an> fehlenden Funktionen hängen bleiben darf, sondern nur bei echten Fehlern> im System. Nichts ist peinlicher, wenn man eine Abhängigkeit vergisst.> Oder kennst du jede PHP-Installation auf Erden? Ich nicht ;-)
Theoretisch könnten wir das dann auch mit ein Admin-Tool erledigen. Dann
muss es nicht jedesmal beim Anlegen eines Objektes geprüft werden. Dort
bekommt man dann direkt einen Überblick, welche Funktionen nicht zur
Verfügung stehen, und was die Konsequenzen davon sind. Ist z.B. kein
Modul für Zip-Archive vorhanden, funktioniert das System trotzdem, nur
die Updatefunktion läuft dann halt nicht, und das könnte dann das
Admin-Tool dem Benutzer mitteilen.
Ich dachte auch schon an ein Admin-Tool, bei dem man die Dateirechte der
Systemdateien überprüfen kann (falsche Rechte stellen ja ein
Sicherheitsrisiko dar). z.B. bei CMS Systemen gibts ja häufig nach dem
Installieren eine Warnung wenn irgendwelche Zugriffsrechte nicht
stimmen.
Dieses Admin-Tool könnte man vielleicht auch gleich nach jedem Update
anzeigen lassen, um gleich überprüfen zu können ob alles notwendige
vorhanden ist und die Dateirechte stimen.
Udo Neist schrieb:> Landet alles in der Datenbank. Das "Logfile" wird alle x Sekunden von> einem Javascript per XMLHttpRequest geladen und angezeigt. Im Prinzip> habe ich das schon in einem ganz einfach Chatsystem so gemacht :D
Ah, ja, also eine Tabelle "debug_logs" o.ä. anlegen, in der dann alle
debug Meldungen landen? Das wäre genial!
Ach ja, als ich an meinen Klassen weiterarbeiten wollte, ist mir in den
Sinn gekommen dass ja noch das Datenbankupdate für das neue
Preis/Lieferantensystem fehlt, weisst du noch? :-)
Urban B. schrieb:> Ah, ja, also eine Tabelle "debug_logs" o.ä. anlegen, in der dann alle> debug Meldungen landen? Das wäre genial!
Das habe ich nun bei mir bereits eingebaut, da ich dieses Feature extrem
gut gebrauchen kann beim programmieren der Klassen. Ist zwar erstmal nur
mit HTML gebaut, aber das kann man auch später noch durch JavaScript
ersetzen. Funktionieren tuts mit HTML auch einwandfrei.
Ich wollte dir das nur schnell schreiben, nicht dass du auch noch sowas
baust.
Jetzt brauche ich nur noch einen dritten Bildschirm um dort die
Debug-Meldungen anzuzeigen :-)
Urban B. schrieb:> Ich sehe momentan aber den Vorteil der Autoload-Funktion nicht. Sieht> man in deinem Code auch irgendwo ein Aufruf dieser Funktion? Konnte beim> Durchstöbern gerade keiner finden. Aber schlussendlich schreibst du dann> einfach ein "__autoload('error')" statt einem> "include_once('error.php')", wo ist da der Vorteil?
Aus der lib.php:
1
function __autoload($classname) {
2
if ( $classname == '_exception' ) $classname = 'error';
3
include_once(strtolower($classname).".php");
4
}
Es wird kein Aufruf benötigt, es ist eine "magische" Funktion.
__autoload() wird durch new() automatisch aufgerufen und lädt die
entsprechende Klasse. Diese Funktion muss ich irgendwann auf
spl_autoload_register() umschreiben, denn __autoload() soll irgendwann
verschwinden.
http://php.net/manual/de/language.oop5.autoload.php> Also ich finde, es gehört "zum guten Ton", dass man am Anfang jeder> Datei genau diejenigen includes einfügt, die gebraucht werden. Nicht> mehr und nicht weniger, und auch nicht mitten in einer Datei drin. Halt> so wie in C/C++, das ist ein ganz simples aber sauberes System.
Was ist das anderes, als wenn ganz oben eine einzelne Library
eingebunden wird, in dem alle Includes stattfinden? Wenn du in jede
Datei die ganzen Includes schreibst, dann nimm include_once() bzw.
require_once(), sonst bekommst du u.U. Probleme mit doppelt
eingebundenen Dateien!
Ich hab in deinem Branch noch nicht gesehen, wieviele Includes/Requires
du machen musst. __autoload() reduziert zumindest die vielen Includes
der Klassen.
> Udo Neist schrieb:> Also wir verwenden ja Leerzeichen und nicht Tabs, dann ist es ja nicht> mehr nur eine Darstellungssache. Ja, 8 Leereichen werden glaube ich im> Linux Kernel verwendet :-) Ich würde vorschlagen wir nehmen 4 Zeichen,> das ist nicht nur optisch ansprechend sondern auch ein weit verbreiteter> "Standard" (zumindest habe ich den Eindruck, dass es weit verbreitet> ist).
Ob ich nun Tab mit 5 oder 4 Leerzeichen in der Darstellung oder vom
Editor direkt in Leerzeichen umgewandelt werden, das stört doch
niemanden. Ich bin aber nicht päpstlicher als der Papst und habs auf 4
Leerzeichen umgestellt :)
> Theoretisch könnten wir das dann auch mit ein Admin-Tool erledigen. Dann> muss es nicht jedesmal beim Anlegen eines Objektes geprüft werden. Dort> bekommt man dann direkt einen Überblick, welche Funktionen nicht zur> Verfügung stehen, und was die Konsequenzen davon sind. Ist z.B. kein> Modul für Zip-Archive vorhanden, funktioniert das System trotzdem, nur> die Updatefunktion läuft dann halt nicht, und das könnte dann das> Admin-Tool dem Benutzer mitteilen.
Du hast es nicht ganz verstanden. Jedes Update des zu Grunde liegenden
Systems kann zu einer Fehlfunktion führen. Kein Script der Welt prüft
vorher nach und blockiert fehlende Funktionen. Sowas wird in einem
try-catch-Block gemacht oder mit function_exists(), wenn diese Funktion
noch nicht offiziell existiert. Man weiß ja schliesslich nicht, welche
Version auf dem Server genau installiert ist.
PHP ist deutlich anders als C/C++, auch wenn es ähnliche Konzepte
mitbringt. Was bei C/C++ üblich ist, ist nicht unbedingt auch die
richtige Vorgehensweise bei PHP. In C/C++ ist der Sprach- und
Funktionsumfang genormt. Einige Funktionen sind nicht in PHP selbst,
sondern per PEAR eingebunden oder sind noch als experimentell
gekennzeichnet und daher fraglich. So verhält es sich derzeit mit
money_format(), welches ich benutze. Fehlt es, so bilde ich es nach. Es
ist hilfreich, auch mal bei php.net die Kommentare zu lesen ;-)
> Ich dachte auch schon an ein Admin-Tool, bei dem man die Dateirechte der> Systemdateien überprüfen kann (falsche Rechte stellen ja ein> Sicherheitsrisiko dar). z.B. bei CMS Systemen gibts ja häufig nach dem> Installieren eine Warnung wenn irgendwelche Zugriffsrechte nicht> stimmen.
Das hatte ich als repair.ups-Script in meinem Updatesystem bereits
vorgesehen :-)
Urban B. schrieb:> Das habe ich nun bei mir bereits eingebaut, da ich dieses Feature extrem> gut gebrauchen kann beim programmieren der Klassen. Ist zwar erstmal nur> mit HTML gebaut, aber das kann man auch später noch durch JavaScript> ersetzen. Funktionieren tuts mit HTML auch einwandfrei.
Das du das "Logfile" bereits umgesetzt hast, das ist löblich :-) Erspart
mir zumindest eine weitere Baustelle. Wenn du es hochgeladen hast, kann
ich das ja auch bei mir schon einbauen. Das xhr-Teil schreibe ich dann.
Hallo an alle Mitentwickler!
1. Es wäre mal an der Zeit einen neuen Thread aufzumachen. Zwecks
besserer Ladezeiten und vielleicht auch einem aussagekräftigeren
Threadtitel?
2. Das mit den 4 Leerzeichen scheint ja nun Konsens zu sein und findet
meine vollste Zustimmung. Gibt es schon einen guten Platz/Link für die
Coding Guidelines?
3. Debuglog bzw. SQL-Transaction-Log finde ich eine tolle Sache, hatte
ich auch schonmal im Hinterkopf.
4. (@kami) die leeren Tabellen bei den Preisen waren wirklich für
Preisstaffeln und mehrere Lieferanten gedacht. Kann also gerne noch
richtig umgesetzt werden.
5. Momentan haben wir - so wie ich das sehe - zwei Entwicklungen:
Templates und OOP. Jedes neue Feature macht daher doppelt Arbeit
(entweder für den Einpfleger, oder für den Entwickler). Wir sollten uns
vielleicht erstmal auf eine Sache konzentrieren.
6. SVN-Nutzung:
Die zwei Entwicklungsrichtungen spiegeln sich ja in den beiden
User-Branches wieder.
Ich würde mal folgenden Vorschlag machen:
Im TRUNK liegt die Stable-Version, auf der nur kleine Bug-fixes gemacht
werden. Neue Sachen werden in einem testing-Branch ausprobiert.
Ungefähr alle drei Monate wird unstable zu stable gemacht und ein
hübsches Download-Paket geschnürt.
7. Bei größeren Versionssprüngen, wenn z.B. Version 0.3 mit templates &
oop fertig ist, wird die Datenbankversion auf 100 gesetzt und alle
Datenbankupdates aus dem Code entfernt bzw. in ein manuelles Skript
verschoben.
So. Das wars erstmal.
Grüße
b.r
b.r schrieb:> Es wäre mal an der Zeit einen neuen Thread aufzumachen.Und Udo Neist schrieb:> Antwort siehe neuen Thread Beitrag "Lagerverwaltung Part-DB V0.2.2"
Wenn das Konsens ist, schlage ich vor, diesen Thread von einem Admin
schließen zu lassen, sonst wird's noch unübersichtlicher. Nach dem
Thread Beitrag "Teile-Verwaltung für elektronische Bauteile" zur
"Part-db Lagerverwaltung" ist das nämlich mindestens schon der
dritte Thread.
Soll im Artikel Part-DB RW - Lagerverwaltung unter "Wünsche /
Verbesserungsvorschläge / Bugreports" der Link auf den neuen Thread Nr.
269289 angepaßt werden?
Hallo,
ich bin nach der Suche nach einer Installations Anleitung für PART-DB
2.2.
Ich selber habe danach gesucht leider aber für mich, als Anfänger
ernüchternde Anleitungen gefunden und nicht weitergekommen.
Gib es ausführliche Anleitung ? wenn nicht besteht vielleicht eine
Möglichkeit eine ausführliche Anleitung für PART-DB 2.2 zu erstellen
(Schritt bei Schritt) bin wahrscheinlich nicht der erste der danach
sucht!
Grüße
Mamim