MXPHPFOTOALBUM_Hilfe.. - created by Daniel Deckensattl in
Transcription
MXPHPFOTOALBUM_Hilfe.. - created by Daniel Deckensattl in
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 1 / 39 Hilfedokument zum XML-PHP-Photoalbum Diese Dokumentation zeigt, wie man mit Flash ein Photoalbum programmiert. Dieser nur 49 KB grosse MovieClip ist recht einfach aufgebaut, was wir weiter unten genauer sehen werden. Der Clip arbeitet zusammen mit XML (Konfigurationsdatei für den Anzeigeclip) und PHP (Photodatenlieferant) und einem Photoanzeige-Clip der fernbedient wird, plus zusätzlichen 38 Rahmenclips die dynamisch hinzugeladen werden können. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl Aufbau des Photoalbum-Navigationsclips Für die Anzeige der Photos wird ein sehr kleiner fernbedienbarer MovieClip benötigt (ddxmlphotoalbum_600w400h.swf) der weiter unten beschrieben wird. In diesem Clip hat es nur einen leeren MovieClip der für ein optionales Hintergrundbild vorgesehen ist. 11.07.2015 / Seite 2 / 39 <?xml version="1.0"?> <fotodaten> <fotokonfig> <StartAppURL>http://localhost/ddflashpage/files/Flash/ddphpphoto</StartAppURL> <StartPhotoURL></StartPhotoURL> <StartSession>Kunst,Lustig,Gemischtes,Chatzen</StartSession> <StartSoundURL>Sound/ddj_beatsound_003.mp3</StartSoundURL> <ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe> <ShowAlbumRandFarbe>0xFFFFFF</ShowAlbumRandFarbe> <ShowListBackgroundFarbe>0xFFFF99</ShowListBackgroundFarbe> <ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe> <ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe> <ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe> <ShowTextColor>0x000000</ShowTextColor> <ShowTitelColor>0x990000</ShowTitelColor> <ShowFaceFarbe>0xFF5501</ShowFaceFarbe> <ShowKnopfFarbeNormal>0x0000FF</ShowKnopfFarbeNormal> <ShowKnopfFarbeDarüber>0x515210</ShowKnopfFarbeDarüber> <ShowKnopfFarbeDruck>0x006600</ShowKnopfFarbeDruck> <ShowReglerKnopfFarbe>0x33CCCC</ShowReglerKnopfFarbe> <ShowReglerSkalaFarbe>0x990000</ShowReglerSkalaFarbe> <ShowSekundenTextFarbe>0x000000</ShowSekundenTextFarbe> <ShowDauerTextFarbe>0x990000</ShowDauerTextFarbe> <ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill> <ShowPhotoHintergrundClip>photos/AlbumHGPhoto.jpg</ShowPhotoHintergrundClip> <ShowSekundenText>Sek.:</ShowSekundenText> <ShowPeriodenText>Dauer:</ShowPeriodenText> <ShowPeriodenInfo>Anzeigedauer in Sekunden</ShowPeriodenInfo> <ShowStopText>Beendet Photoshow</ShowStopText> <ShowAutoVorneText>Diashow vorwärts</ShowAutoVorneText> <ShowAutoHintenText>Diashow rückwärts</ShowAutoHintenText> <ShowVorneText>Nächstes Einzelphoto</ShowVorneText> <ShowHintenText>Vorheriges Einzelphoto</ShowHintenText> <ShowHelpTextSoundOff>Sound aus</ShowHelpTextSoundOff> <ShowPhotoClip>ddphpphotoalbum_600w400h.swf</ShowPhotoClip> </fotokonfig> </fotodaten> Die Hauptfunktionen der Photoshowanzeige liegen im Hauptnavigationsclip (ddxmlphotonavunten600w400h.swf) welcher komplett per XML konfiguriert wird (siehe oben). Sämtliche Tasten, Beschriftungen und Listenfenster können farblich den eigenen Wünschen angepasst werden. Um es dem Endanwender so einfach wie möglich zu machen wurde eine PHP-Variante entwickelt, welche die, am Besten mit FTP hochgeladene Bilder (zB. mit FileZilla – ein Freeware-FTP-Dateikopierer) schnell und unkompliziert anzeigen kann. Nach dem Hochladen wird mit einem PHP-Script (HTMLWebseite) die Konfiguration der Photogruppenbezeichner vorgenommen. Die Photos müssen nicht nummeriert vorliegen, was aber mit einem Tool am Besten umzusetzen ist. Um Photos aus einer Digitalcamera im Web anzuzeigen, bedeutet die zB. mit 2800x1024 Bildpunkten vorliegenden Photos so zu verkleinern, wie sie am Ende im Web gezeigt werden sollen. Mit der Freeware Xnview lassen sich mehrere Dateien in einem Rutsch in eine neue Pixelgrösse (Formate usw. zB. JPG-NoProgress-Filter!) umwandeln (siehe unten) und Joe-FilesRenamer benennt dann durchnummeriert alle so, dass wir alle Photos im Flash-Photoalbum-Movieclip betrachten können. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 3 / 39 Am Besten erstellen Sie eine Kopie der Bilder die verkleinert und umbenannt werden sollen und speichern diese in einem eigens dafür erstellten Unterordner ab. Da starten Sie XnView und fügen die Bilder in dieses Tool (per Drag and Drop) indem Sie über den Explorer die Photos ins Programm ziehen. XnView eignet sich hervorragend, wenn es um die Massenkonvertierung (Werkzeuge/Stapelverarbeitung oder Ctrl/U) von Pixelbildern geht. Wie unten abgebildet werden die umzuwandelnden Photos im Register Allgmein hinzugefügt. Dann stellen wir noch die JPG-Eigenschaft Progress auf Kein Progress (JPG-Format-Optionen) ein (flashbedingt). Im Register Umwandlungen benötigen wir nur den Filter "Grösse ändern" der per Doppelklick aktiviert wird. In unserem Beispiel wurde die Photobreite auf 450 Pixel eingestellt (mit http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 4 / 39 Verhältnis beibehalten, wird die Höhe dann autom. errechnet!), also eine Webkonforme Grösse! Wenn Sie also mit dem AusgabeClip ddxmlphotoalbum_600w400h.swf arbeiten, dann würde ich die Höhe der Bilder auf 400 festlegen, damit Hoch und Querbilder im Anzeigeclip dargestellt werden können. Die Komprimierung der JPG-Bilder legen Sie am Besten zwischen 40 und 60% an, sodass diese übers Internet schnell geladen werden können (Optimale Grössen sind 20 – 40 Kbyte). Liegen die fertigen Internetbilder nun vor, dann geht es ans Konfigurieren der Konfigurations-Textdateien über den PHP-Photoalbum-Manager. Haben Sie kleinere Photos mit einer Auflösung von zB. 400x325 Pixel und stellen diese in einem 800x600-Pixelrahmen zur Verfügung, können mit dem Zoomfaktor die Bilder vergrössert oder auch verkleinert werden. Um sie im Anzeigebereich einzumitten, können Sie den oberen und linken Rand angeben, wohin Sie die Bilder dann haben möchten. Das wars schon, jetzt kann die TXT-Datei gespeichert werden und der Navigationsclip und der Anzeigeclip können gestartet werden. Die Bilder werden dann angezeigt. Möchten Sie ein bestimmtes Startbild festlegen, dann können Sie das im allgemeinen Abschnitt der XML-Datei tun (zB. <StartPhotoURL>photos/ww/iwindelw_04.jpg</StartPhotoURL>), oder eine Sounddatei mitstarten über <StartSoundURL>Sound/ddj_discoline_32_441.mp3</StartSoundURL>. Man kann auch festlegen welche Photosession als erstes angezeigt werden soll (<StartSession>Kunst,Lustig,Gemischtes,Chatzen</StartSession>) hierzu werden der Reihe nach die Gruppenbezeichner durch ein Komma getrennt im StartSession-Tag angegeben. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 5 / 39 ActionScript 1.0 Flash MX Kommen wir nun zum technischen Teil dieser Dokumentation. Der Navigationsclip wurde so programmiert, das wir auch mehrere Navigations-Clips auf einer Webseite haben können, welche jedoch immer einen anderen Namen besitzen müssen. Wird also die Datei ddxmlphotonavunten600w400h.swf in ddxmlphotonavunten200w120h.swf umbenannt, muss die dazugehörige XML-Datei denselben Namen aufweisen (also ddxmlphotonavunten200w120h.xml) dass sie dann auch vom Navigationsclip gefunden wird und eingelesen werden kann. Das der Clip überhaupt auf einer Webseite läuft ist es notwendig, den eigenen URL-Pfad zuoberst in der XML-Datei (<StartAppURL>http://..meinpfad.ch</StartAppURL> einzutragen, wie auch in den beiden PHP-Dateien (plus Schreibrechte in den benötigten Verzeichnissen!). In der XML-Datei gibt es eine Tag <ShowPhotoClip>ddxmlphotoalbum_200w120h.swf</ShowPhotoClip> in welchem dann der Ausgabeclip angegeben wird, der auch kopiert, umbenannt und in beliebiger Grösse auf die Webseite eingebunden werden kann. Mehrere Instanzen sind so möglich. Das Unterverzeichnis Skills beherbergt 38 verschiedenen Rahmentypen, die auch in der XML-Datei angegeben werden können – im allgemeinen Abschnitt im Tag<ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill>. Der Anzeigeclip zeigt dann die Photoshow gleich mit dem angegeben Rahmen. In ActionScript 1.0 von Flash-MX werden zu beginn die Standardvariablen definiert, welche Sie auch in der XML-Datei angeben können. Fehlen solche allgemeine Abschnittsangaben werden Standardwerte eingesetzt und der Clip erscheint in Weisser Hintergrundfarbe mit blauen Navigationsknöpfen. Die Farbe der Knöpfe werden in den Tags: <ShowKnopfFarbeNormal>0000FF</ShowKnopfFarbeNormal>, <ShowKnopfFarbeDarüber>515210</ShowKnopfFarbeDarüber> und <ShowKnopfFarbeDruck>006600 </ShowKnopfFarbeDruck> angegeben. Die Beschriftungsfarbe der Sekundenanzeige und der Sekundenskala erfolgen in den Tags: <ShowSekundenTextFarbe>000000</ShowSekundenTextFarbe> und <ShowReglerSkalaFarbe>990000</ShowReglerSkalaFarbe>. Soweit es ging habe ich selbstsprechende Tagnamen eingeführt sodass intuitiv gearbeitet werden kann. Auch der Geschwindigkeitsregler (<ShowReglerKnopfFarbe>33CCCC</ShowReglerKnopfFarbe>) kann andersfarbig angezeigt werden. Auch bei den Listen könne wir die Schriftfarbe ändern (<ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe> <ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe> <ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe> <ShowTextColor>0x000000</ShowTextColor> <ShowListBackgroundFarbe>0xFFFF99</ShowListBackgroundFarbe>) Die Titelfarbe wird im Tag <ShowTitelColor>0x990000</ShowTitelColor> angepasst. Sogar der Hintergrund des Navigationsclips kann verändert werden (<ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe>). Sollte der Navigationstext in einer anderen Sprache erscheinen, lassen sich in 8 Tags die Texte dazu ändern (zB. <ShowSekundenText>Sek.:</ShowSekundenText> und <ShowPeriodenText>Dauer:</ShowPeriodenText> usw.! Beispiel eines dynamischen Rahmenclips Die meisten Rahmentypen bestehen aus 5 Elementen, die sehr klein sind und horizontal wie vertikal dubliziert werden. Die nächste Abbildung zeigt einen solchen Rahmen wobei nur die linke oberer Ecke, die linke untere Ecke und die vertikale wie horizontale Verbindungslinie vorliegen, welche dann dynamisch zusammengesetzt werden. Die Höhe und Breite des Rahmens wird zu Laufzeit ermittelt, also dann wenn der Rahmen in einen beliebigen Anzeigeclip geladen wird, und so zusammengebaut. Noch einfachere Rahmen haben nur drei Elemente (eine Ecke und die kurze horizontale wie vertikale Linie) welche dann zu Laufzeit dubliziert, positioniert und in die Länge gezogen werden. Neben den Rahmenelementen gibt es noch die Abdeckungsclips die an die Ecken und Ränder positioniert werden, sodass ein farbiger Hintergrund nahtlos hinübergeht und neben der Erstellung des Rahmens auch hinzugefügt werden. Am Ende dieser Dokumentation ist der ActionScriptcode auch vollständig abgebildet plus die FLA-Quelldateien liegen auch in der Projekt-Zipdatei, falls anderer Rahmentypen benötigt werden. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 6 / 39 PHP-Photoalbum-Managerdatei ddphpphotoalbummanager.php Diese PHP-Datei ist passwortgeschützt, wobei das Passwort (ein SHA1-Verschlüsselungspasswort) in der PHP-Datei zuoberst steht und angepasst werden sollte. Wird die PHPWebseite eingerichtet ist das Standardpasswort „abc“. Läuft diese Webseite, kann man mit der eingebauten Passwortgenerierung ein SHA1-Schlüssel zu einem Passwort generiert werden, welches dann hardcodiert in die PHP-Datei eingetragen wird. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 7 / 39 Bei der Erstbenutzung kann der Loginname Dani mit dem Passwort „abc“ angegeben werden und kann dann anmelden. Um ein neues Passwort zu generieren wird unterhalb des Willkommengrusses auf das kleine Bildchen geklickt und sofort wird ein Eingabefeld sichtbar in welches das neue Passwort eingegeben wird. Die Starttaste rechts neben diesem Eingabefeld wandelt dann das Passwort in einen SHA1-Zeichenkette um die dann in der PHP-Datei im Code eingetragen wird. Dort kann auch der Loginname angepasst werden. Wurden die Bildverzeichnisse schon eingerichtet und mit Webbildern gefüllt dann kann diese Photoverwaltungswebseite gestartet werden. Nun werden die Gruppenbezeichner, der Titel, optional ein Hintergrundbild, der Zoomfaktor, die Positionierung und der Rahmentyp angegeben. Mit Druck auf die Speichern-Schaltfläche werden dann diese Angaben in die dafür vorgesehenen Text-Konfigurationsdateien in den jeweiligen Bildordner gespeichert. Nach dieser Aktion, kann man den Flashalbum-Clip mit dem Anzeigeclip laden (auf seiner Webseite) und die Bildshow abspielen lassen. Es muss darauf geachtet werden dass die Pfadangaben in den beiden PHP-Dateien stimmen und den eigenen Bedürfnissen angepasst wurden, sonst läuft nämlich gar nichts. Läuft das Projekt dann tadellos macht das Einrichten neuer Bildverzeichnisse richtig spass. Bei der Namensgebung der Bildordner sind keine Umlaute (wie äöü) oder andere Sonderzeichen erlaubt, das funktioniert nur bei der Kategoriebenennung und dem Titel. Wer in diesem Projekt Anpassungen vornehmen möchte, sollte sich mit ActionScript 1.0 auskennen, mit PHP 5, HTML und JavaScript, da hier verschiedene Zahnräder ineinander spielen. http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl Hier nun der komplette ActionScript 1.0-Code (aus Flash MX): // Autor: Daniel Deckensattl Version: 1.20 Erstellt: 09.10.15 Update: 10.07.15 /* ---------------------------------------------------------------------------------------------Dynamische Photoshow mit XML-Angaben zu den Photoquelldateien In der XML-Konfigurationsdatei CLIPNAME.xml, welche nachfolgend aufgefuehrten Aufbau aufweist, sind alle Informationen, welche wir fuer die Konfiguration der Photoshow benoetigen enthalten! Die Photodaten selbst werden per PHP geliefert. <?xml version="1.0"?> <fotodaten> <fotokonfig> <StartAppURL>http://localhost/ddflashpage/files/Flash/ddphpphoto</StartAppURL> <StartPhotoURL>photos/ww/iwindelw_04.jpg</StartPhotoURL> <StartSoundURL>Sound/ddj_beatsound_003.mp3</StartSoundURL> <ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe> <ShowAlbumRandFarbe>FFFFFF</ShowAlbumRandFarbe> <ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe> <ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe> <ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe> <ShowTextColor>000000</ShowTextColor> <ShowTitelColor>0x990000</ShowTitelColor> <ShowFaceFarbe>0xFF5501</ShowFaceFarbe> <ShowKnopfFarbeNormal>0000FF</ShowKnopfFarbeNormal> <ShowKnopfFarbeDarüber>515210</ShowKnopfFarbeDarüber> <ShowKnopfFarbeDruck>006600</ShowKnopfFarbeDruck> <ShowReglerKnopfFarbe>33CCCC</ShowReglerKnopfFarbe> <ShowReglerSkalaFarbe>990000</ShowReglerSkalaFarbe> <ShowSekundenTextFarbe>000000</ShowSekundenTextFarbe> <ShowDauerTextFarbe>990000</ShowDauerTextFarbe> <ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill> <ShowPhotoHintergrundClip>photos/AlbumHGPhoto.jpg</ShowPhotoHintergrundClip> <ShowSekundenText>Sek.:</ShowSekundenText> <ShowPeriodenText>Dauer:</ShowPeriodenText> <ShowPeriodenInfo>Anzeigedauer in Sekunden</ShowPeriodenInfo> <ShowStopText>Beendet Photoshow</ShowStopText> <ShowAutoVorneText>Diashow vorwärts</ShowAutoVorneText> <ShowAutoHintenText>Diashow rückwärts</ShowAutoHintenText> <ShowVorneText>Nächstes Einzelphoto</ShowVorneText> <ShowHintenText>Vorheriges Einzelphoto</ShowHintenText> <ShowHelpTextSoundOff>Sound deaktivieren</ShowHelpTextSoundOff> <ShowPhotoClip>ddphpphotoalbum_600w400h.swf</ShowPhotoClip> </fotokonfig> </fotodaten> --------------------------------------------------------------------------------------------*/ // -- Aktiviert deutsche Umlautzeichen bei Import der TXT/HTML-Dateien -----------------------System.useCodepage = true; // -- Beschriftungsvariablen werden von Extern per XML gesetzt, es folgt die Initialisierung -var strShowSekText = ""; var strShowPerText = ""; var strShowStopText = ""; var strShowAutoVorneText = ""; var strShowAutoHintenText = ""; var strShowAutoInfoText = ""; var strShowVorneText = ""; var strShowHintenText = ""; var strShowPhotoClip = ""; var strShowSkillName = ""; var strShowPhotoHGClip = ""; var strStartPhotoURL = ""; var strStartSoundURL = ""; var strShowHelpTextSoundOff = "Sound deaktivieren"; var lngShowBodenfarbe = 0x000000; var lngShowSelectionUnfocusedFarbe = 0x000000; var lngShowTextSelectedFarbe = 0x000000; http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 8 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl var lngShowSelectionFarbe = 0x9F3620; //-- Startsound definieren var snd01 = new Sound(this); var lngShowSelectionFarbe = 0xEEBE00; var lngShowTextColor = 0x9F3620; var lngShowFaceFarbe = 0xFF0000; //-- Knöpfe einfärben var strShowKnopfFarbeNormal = "0000FF"; var strShowKnopfFarbeDarüber = "515210"; var strShowKnopfFarbeDruck = "006600"; var strShowReglerKnopfFarbe = "33CCCC"; var strShowReglerSkalaFarbe = "990000"; var strShowSekundenTextFarbe = "000000"; var strShowDauerTextFarbe = "990000"; var strShowTitelColor = "990000"; // -- merkt sich die zuletzt ausgewaehlte Seite var intAktMenu = 1; var intMenuOK = 1; var photoTaskID = 0; var strAktuellesBild = ""; var intKorrOben = 0; var intKorrLinks = 0; var intTotalGeladen = 0; var intAktBildEndNr = 66; var intAktBildZoom = 100; var intAktBildPosX = -205; var intAktBildPosY = -215; var intPhotoGrp = 0; var varPhotoGrp = new Array(); var varPhotoClp = new Array(); var aPhotoArrayDaten = new Array(); var aPhotoArrayInfos = new Array(); var strSessionText = ""; var strPHPDataCheck = ""; var intClipNrOut = 0; iText.text = "Autor: Daniel Deckensattl copyright (2015)"; iSekunde.text = "Sek."; iDauer.text = "Dauer"; strSessionText =""; strSpeedText = "Anzeigedauer bei Diashow"; pctrlbutt01.buttontext.text = ""; pctrlbutt02.buttontext.text = ""; pctrlbutt03.buttontext.text = ""; pctrlbutt04.buttontext.text = ""; pctrlbutt05.buttontext.text = ""; // -- In diesem Array erden die Photopfaeder alle gespeichert ---------------Diaphotos = new Array(); // -- Hier wird die Diashow-Anzeigedauer auf 4 Sekunden initialisiert -------Diashowspeed = 7000; // -- Wird der autom. Anzeigemodus aktiviert, dann Task-ID-Nummer speichern -DiashowTimID = 0; // -- Ein Richtungswechsel beim Anzeigen einer Show (1=vorwaerts/<>1=rueckw.)intShowRichtung = 1; // -- Der laufende Photoindex des gerade aktiven Bildes ---------------------intDiaCounter = -1; // -- Fuer die Anzeige einer Fotoshow-Gruppe werden diese glob. Var. benoetigt strAktBildEndung = "jpg"; strAktBildPfad = "abendrot/"; strAktBildName = "Abendrot"; Abdeckung02.swapDepths(2000); StatusBar.swapDepths(2001); ToolLeiste.CheckBox01.CheckBoxKreuz._visible = false; //-- Über die XML-Datei der Photonavigation kann alles eingefärbt werden function ElementeEinfaerben() { for(r=1;r<6;r++) { setMCColor(eval("pctrlbutt0"+r+".ButtonNormal"), strShowKnopfFarbeNormal, true); setMCColor(eval("pctrlbutt0"+r+".ButtonOver"), strShowKnopfFarbeDarüber, true); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 9 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 10 / 39 setMCColor(eval("pctrlbutt0"+r+".ButtonPress"), strShowKnopfFarbeDruck, true); } setMCColor(iSekunde, strShowSekundenTextFarbe, true); setMCColor(iDauer, strShowDauerTextFarbe, true); setMCColor(Clipboden, lngShowBodenfarbe, true); setMCColor(Speedfader.faderdetail, strShowReglerSkalaFarbe, true); setMCColor(iText, strShowTitelColor, true); setMCColor(speedfader.Faderknopf.FaderKnopfBoden, strShowReglerKnopfFarbe, true); ToolLeiste.CheckBox01.CheckBoxText.htmlText = "<TEXTFORMAT LEADING='2'><P ALIGN='RIGHT'><FONT FACE='Arial' SIZE='11' COLOR='#000000'><b>"+strShowHelpTextSoundOff+"</b></FONT></P></TEXTFORMAT>"; } function AlbumEinfaerben() { // -- Hauptgruppen-Scrollliste einfärben -----------------------------------//trace("lngShowSelectionUnfocusedFarbe "+lngShowSelectionUnfocusedFarbe+" lngShowTextColor"+lngShowTextColor+""); Photogrundliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe); Photogrundliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe); Photogrundliste.setStyleProperty("selection", lngShowSelectionFarbe); Photogrundliste.setStyleProperty("textColor", lngShowTextColor); Photogrundliste.setStyleProperty("face", lngShowFaceFarbe); // -- Untergruppen-Scrollliste einfärben -----------------------------------Photosubliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe); Photosubliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe); Photosubliste.setStyleProperty("selection", lngShowSelectionFarbe); Photosubliste.setStyleProperty("textColor", lngShowTextColor); Photosubliste.setStyleProperty("face", lngShowFaceFarbe); // -- Gruppenauswahl-Scrollliste einfärben ---------------------------------Photohitliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe); Photohitliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe); Photohitliste.setStyleProperty("selection", lngShowSelectionFarbe); Photohitliste.setStyleProperty("textColor", lngShowTextColor); Photohitliste.setStyleProperty("face", lngShowFaceFarbe); // -- Bild oder MC-Objekt-Auswahl-Scrollliste einfärben ---------------------PhotoSerien.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe); PhotoSerien.setStyleProperty("textSelected", lngShowTextSelectedFarbe); PhotoSerien.setStyleProperty("selection", lngShowSelectionFarbe); PhotoSerien.setStyleProperty("textColor", lngShowTextColor); PhotoSerien.setStyleProperty("face", lngShowFaceFarbe); // -- Bild oder MC-Objekt-Auswahl-Scrollliste einfärben ---------------------Rahmenliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe); Rahmenliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe); Rahmenliste.setStyleProperty("selection", lngShowSelectionFarbe); Rahmenliste.setStyleProperty("textColor", lngShowTextColor); Rahmenliste.setStyleProperty("face", lngShowFaceFarbe); } // -- Ermittelt Name dieses Flash-Filmes und die gleichnamige XML-Datei die dann eingelesen wird! ---//-- Funktion gibt den aktuellen Dateipfad true/ oder Dateiname (false) zurueck function ClipName(bolNurPfad) { //-- Entweder wird nur der Pfad oder nur der Clipname ohne Endung (.swf) zurueckgegeben var strParentClip = (arguments.length == 1) ? "this._url": arguments[1]+"._url"; var strThisUrl = eval(strParentClip); var intNameStart = strThisUrl.lastIndexOf("/"); var strDateiname = strThisUrl.slice(intNameStart+1); if(bolNurPfad == true) { //-- Hier wird nur der URL-Pfad der HTML-Datei geliefert strDateiname = strThisUrl.slice(0, intNameStart); } else { //-- Filename wird ohne Endung zurueckgegeben strDateiname = strDateiname.slice(0, strDateiname.length -4); } return strDateiname; } // -- Enthaelt den Namen der XML-Datei fuer das gerade angezeigte Menu ------------------------------var strxmlAktuell = new String(); // -- enthaelt den Namen der XML-Datei fuer das gerade angezeigte Menu ----var strxmlAktuell = ClipName(True) + "/" + ClipName(false) + ".xml"; // --- Beschriftung, ZielURL und Zielframe aus XML-Datei lesen function suche(xmlobj, knoten, subknoten, name) { var xmlsob = new XML(); http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl var xmltob = new XML(); var xmlwob = new XML(); var xmljob = new XML(); // --- Oberster XML-Knoten durchsuchen for (var i = 0; i<xmlobj.childNodes.length; i++) { // --- Erstes Kindknotenobjekt zuweisen xmlsob = xmlobj.childNodes[i]; // --- Konfigurationsabschnitt beim durchsuchen auslesen und in globalen Variablen sichern if (xmlsob.childNodes[i].nodeName == "fotokonfig") { // --- Vorgabeindex aus XML-Abschnitt "fotokonfig" in startindex-Bereich auslesen und Variable zuweisen intAktBut = xmlsob.childNodes[i].childNodes[0].firstChild.nodeValue; } // --- Ist Kindknoten = Argument dann diesen Knoten absuchen nach Unterknoten: subknoten if (xmlsob.nodeName == knoten) { for (var p = 0; p<xmlsob.childNodes.length; p++) { // --- Ist Unterkindknoten = Argument subknoten, dann Unter-Unter-Kinknoten suchen: name xmltob = xmlsob.childNodes[p]; //trace(xmltob.childNodes.length + " Name: " + xmltob.nodeName); if (xmltob.nodeName == subknoten) { for (var w = 0; w<xmltob.childNodes.length; w++) { xmlwob = xmltob.childNodes[w]; // --- Ist Unter-Unterkindknoten = Argument name, dann Unter-Unter-Kinknoten suchen: name //trace(xmlwob.childNodes.length+" Name: "+xmlwob.nodeName); if (xmlwob.nodeName == name) { varMenutitel.push(xmlwob.firstChild.nodeValue); } // -- Beschriftung einlesen ---------------------------------if (xmlwob.nodeName == "StartAppURL") { strStartAppURL = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowStopText") { strShowStopText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowAutoVorneText") { strShowAutoVorneText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowPeriodenInfo") { strShowAutoInfoText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowAutoHintenText") { strShowAutoHintenText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowVorneText") { strShowVorneText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowHintenText") { strShowHintenText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowSekundenText") { strShowSekText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowPeriodenText") { strShowPerText = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowBodenFarbe") { lngShowBodenfarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowSelectionUnfocusedFarbe") { lngShowSelectionUnfocusedFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowTextSelectedFarbe") { lngShowTextSelectedFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowSelectionFarbe") { lngShowSelectionFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowTextColor") { lngShowTextColor = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowFaceFarbe") { lngShowFaceFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowPhotoClip") { strShowPhotoClip = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowPhotoHintergrundClip") { strShowPhotoHGClip = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowRahmenSkill") { strShowSkillName = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "StartSoundURL") { strStartSoundURL = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowKnopfFarbeNormal") { strShowKnopfFarbeNormal = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "StartPhotoURL") { strStartPhotoURL = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowKnopfFarbeDarüber") { strShowKnopfFarbeDarüber = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowKnopfFarbeDruck") { strShowKnopfFarbeDruck = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowReglerKnopfFarbe") { strShowReglerKnopfFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowReglerSkalaFarbe") { strShowReglerSkalaFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowSekundenTextFarbe") { strShowSekundenTextFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowDauerTextFarbe") { strShowDauerTextFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowTitelColor") { strShowTitelColor = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowAlbumRandFarbe") { strShowAlbumRandFarbe = xmlwob.firstChild.nodeValue; } if (xmlwob.nodeName == "ShowHelpTextSoundOff") { strShowHelpTextSoundOff = xmlwob.firstChild.nodeValue; } } } } } } } // --- Bei erstmaliger Initialisierung wird diese XML-Datei als Basis genommen var xml_obj = new XML(); intAnzAll = 0; // Film wird dann angehalten um erstmalig die Konfigurationsdaten zu laden // XML-Datei für Buttonmenus und Ziellinks (und Frames) laden (hier Definition) function menuLaden(strxmlAktuell) { xml_obj.ignoreWhite = true; xml_obj.onLoad = geladen; xml_obj.load(strxmlAktuell); } // Wenn XML vollstaendig geladen ist, dann wird hier fortgefahren function geladen(status) { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 11 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl if (status) { // -- Einmalige Initialisierung der Photosessionen-Objekte varPhotoGrp = new Array(); varPhotoClp = new Array(); // -- Einmalig alle relevanten Daten aus XML-Datei laden suche(xml_obj, "fotodaten", "fotokonfig", "PhotoSession"); iSekunde.text = strShowSekText; iDauer.text = strShowPerText; strPHPDataCheck = strStartAppURL + "/ddphpphotoalbum.php"; PhotolisteAbholen(); AlbumEinfaerben(); if(strShowSkillName != "") { strAlbumSkillPfad = ClipName(True) + "/" + strShowSkillName; RahmenTypSetzen(strAlbumSkillPfad); } if(strShowAlbumRandFarbe != "") { AlbumSkillsRandfarbe(strShowAlbumRandFarbe); } if(strStartSoundURL.length != undefined) { trace(strStartSoundURL.length); SoundLaden(strStartSoundURL); SoundAbspielen(); } ElementeEinfaerben(); RahmenListeSetzen(); } } //-- Liste 1 mit Hauptkatergorien belegen function Scroll1InhalteSetzen() { intAnzAll = varPhotoGrp.length; trace(intAnzAll); for (i=0; i<intAnzAll; i++) { // -- Alle Hauptgruppen auslesen varPhotoClp = varPhotoGrp[i]; if (Photogrundliste.getLength()>0) { // -- Haupteinträge nun auf Vorhandensein prüfen bolExist = false; for (r=0; r<Photogrundliste.getLength(); r++) { trace(Photogrundliste.getItemAt(r).label+" "+varPhotoClp[0]); if (Photogrundliste.getItemAt(r).label == varPhotoClp[0]) { bolExist = true; } } if (bolExist == false) { Photogrundliste.addItem(varPhotoClp[0]); } } else { Photogrundliste.addItem(varPhotoClp[0]); } } // -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren if (Photogrundliste.getLength()>0) { Photogrundliste.setSelectedIndex(0); } } //-- Unterkategorien einer Hauptebene setzen function Scroll2InhalteSetzen() { // -- Untergruppe auswählen Photosubliste.removeAll(); for (r=0; r<varPhotoGrp.length; r++) { strZ = Photogrundliste.getValue(); varPhotoClp = varPhotoGrp[r]; if (varPhotoClp[0] == strZ) { if (Photosubliste.getLength()>0) { // -- Haupteinträge nun auf Vorhandensein prüfen bolExist = false; for (w=0; w<Photosubliste.getLength(); w++) { trace(Photosubliste.getItemAt(w).label+" "+varPhotoClp[1]); if (Photosubliste.getItemAt(w).label == varPhotoClp[1]) { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 12 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl bolExist = true; } } if (bolExist == false) { Photosubliste.addItem(varPhotoClp[1]); } } else { Photosubliste.addItem(varPhotoClp[1]); } } } // -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren if (Photosubliste.getLength()>0) { Photosubliste.setSelectedIndex(0); } } function Scroll3InhalteSetzen() { // -- Untergruppe auswählen Photohitliste.removeAll(); for (r=0; r<varPhotoGrp.length; r++) { strX = Photogrundliste.getValue(); strZ = Photosubliste.getValue(); varPhotoClp = varPhotoGrp[r]; if (varPhotoClp[0] == strX && varPhotoClp[1] == strZ) { if (Photohitliste.getLength()>0) { // -- Haupteinträge nun auf Vorhandensein prüfen bolExist = false; for (w=0; w<Photohitliste.getLength(); w++) { trace(Photohitliste.getItemAt(w).label+" "+varPhotoClp[2]); if (Photohitliste.getItemAt(w).label == varPhotoClp[2]) { bolExist = true; } } if (bolExist == false) { Photohitliste.addItem(varPhotoClp[2]); } } else { Photohitliste.addItem(varPhotoClp[2]); } } } // -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren if (Photohitliste.getLength()>0) { Photohitliste.setSelectedIndex(0); } } function Scroll4InhalteSetzen() { // -- Untergruppe auswählen PhotoSerien.removeAll(); for (r=0; r<varPhotoGrp.length; r++) { strX = Photogrundliste.getValue(); strZ = Photosubliste.getValue(); strQ = Photohitliste.getValue(); varPhotoClp = varPhotoGrp[r]; if (varPhotoClp[0] == strX && varPhotoClp[1] == strZ && varPhotoClp[2] == strQ) { if (PhotoSerien.getLength()>0) { // -- Haupteinträge nun auf Vorhandensein prüfen bolExist = false; for (w=0; w<PhotoSerien.getLength(); w++) { //trace(PhotoSerien.getItemAt(w).label+" "+varPhotoClp[3]); if (PhotoSerien.getItemAt(w).label == varPhotoClp[3]) { bolExist = true; } } if (bolExist == false) { PhotoSerien.addItem(varPhotoClp[3]); } } else { PhotoSerien.addItem(varPhotoClp[3]); } } } // -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren if (PhotoSerien.getLength()>0) { PhotoSerien.setSelectedIndex(0); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 13 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl } } function ScrollRahmentyp() { //-- Skill wechseln strX = Rahmenliste.getValue(); strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); if(strX == "kein Rahmen") { strSkillPfad = ""; } else { strSkillPfad = ClipName(True) + "/Skills/PhotoSkill" + strX.slice(7) + ".swf"; } //trace("Sende Skill: " + strSkillPfad); this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "SkillAnzeigen", strSkillPfad); } function RahmenTypSetzen(Rahmenname) { strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); //trace("Sende Skill: " + Rahmenname); this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "SkillAnzeigen", Rahmenname); } function StartBildZeigen(sStartPhotoURL) { strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); //trace("Sende Startbild: " + sStartPhotoURL); this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "StartbildAnzeigen", sStartPhotoURL); } function RahmenListeSetzen() { // -- Untergruppe auswählen Rahmenliste.removeAll(); Rahmenliste.addItem("kein Rahmen"); for (r=1; r<39; r++) { if(r<10) { sRT = "0" + r; } if(r>9) { sRT = r; } Rahmenliste.addItem("Rahmen 0" + sRT); } // -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren if (Rahmenliste.getLength()>0) { if(strShowSkillName != "") { //-- In der XML-Datei konfigurierten Rahmen auswählen (zB ...PhotoSkill004.swf) //trace(strShowSkillName.substr(strShowSkillName.length-7,3)); iRahmenIndex = int(strShowSkillName.substr(strShowSkillName.length-7,3)); Rahmenliste.setSelectedIndex(iRahmenIndex); Rahmenliste.setScrollPosition(iRahmenIndex); } else { //-- Kein Rahmen selektieren Rahmenliste.setSelectedIndex(0); } } } function Scroll4InhalteZeigen() { // -- Unterste der vier möglichen Subgruppen auswählen ---------------------------------strX = Photogrundliste.getValue(); strY = Photosubliste.getValue(); strZ = Photohitliste.getValue(); strQ = PhotoSerien.getValue(); for (r=0; r<varPhotoGrp.length; r++) { varPhotoClp = varPhotoGrp[r]; if (varPhotoClp[0] == strX && varPhotoClp[1] == strY && varPhotoClp[2] == strZ && varPhotoClp[3] == strQ) { strSessionText = varPhotoClp[4]; iText.text = strSessionText; strHGClip = varPhotoClp[5]; //if(strHGClip != "") { strPhotoHGPfad = strStartAppURL + "/photos/Hintergrund/" + strHGClip; trace(strPhotoHGPfad); strPhotoHGPfad = (strHGClip == "") ? "": strPhotoHGPfad; HintergrundBild(strPhotoHGPfad); //} intAktBildZoom = Number(varPhotoClp[6]); //trace("Zoom: "+intAktBildZoom); intKorrOben = Number(varPhotoClp[7]); intKorrLinks = Number(varPhotoClp[8]); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 14 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl BildArrayErstellen(varPhotoClp[9],r); PhotoSkalieren(intAktBildZoom+":"+intKorrOben+":"+intKorrLinks); } } } function IstZahl(strZahl) { var Zahlen = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); bolExist = false; for (i=0; i<10; i++) { if(strZahl==Zahlen[i]) { bolExist = true; } } return bolExist; } function BildArrayErstellen(strLetztesPhoto) { trace(strLetztesPhoto); for(z=0;z<aPhotoArrayDaten.length;z++) { sTemp = aPhotoArrayDaten[z]; idxPfad = sTemp.indexOf(";"); sPfad = sTemp.substr(0,idxPfad); //trace(sPfad.indexOf("photos/"+strLetztesPhoto+"/")); if(sPfad.indexOf("photos/"+strLetztesPhoto+"/") == 0) { iFindeArrayIndex = z; z = aPhotoArrayDaten.length; } } aTemp = aPhotoArrayDaten[iFindeArrayIndex].split(";"); Diaphotos = new Array(); for(u=0;u<aTemp.length;u++) { if((aTemp[u] != "") & (aTemp[u].indexOf("_AphotoGrpInfo.txt") == -1)) { Diaphotos.push(strStartAppURL + "/" + aTemp[u]); trace(strStartAppURL + "/" + aTemp[u]); } } intAktBildEndNr = Diaphotos.length; intDiaCounter = 0; BildWechsel(Diaphotos[intDiaCounter]); //ladebild(Diaphotos[intDiaCounter]); } // -- Ex-Funktion für die Bildanzeige innerhalb dieses Clips (ungebraucht!!) function ladebild(datei) { if (intClipNrOut == 0) { this.createEmptyMovieClip("PhotoClip01", 5); objMovie = eval("PhotoClip01") objMovie.loadMovie(datei); } else { this.createEmptyMovieClip("PhotoClip00", 5); objMovie = eval("PhotoClip00") objMovie.loadMovie(datei); } _parent.ARahmen.swapDepths(objMovie.getDepth()+3); _parent.Rahmenmaske.swapDepths(objMovie.getDepth()+2); with (objMovie) { _x = intAktBildPosX + intKorrLinks; _y = intAktBildPosY + intKorrOben; _xscale = (!intAktBildZoom) ? 100 : intAktBildZoom; _yscale = (!intAktBildZoom) ? 100 : intAktBildZoom; } //-- Ab hier wird periodisch geprueft, ob naechstes Bild voll geladen ist objMovie.onEnterFrame = function () { intTotalGeladen = 1; if(this.getBytesTotal() == this.getBytesLoaded()) { intTotalGeladen = 0; if (intClipNrOut == 1) { with (eval("PhotoClip00")) { _x = intAktBildPosX + intKorrLinks; _y = intAktBildPosY + intKorrOben; } eval("PhotoClip00")._visible = true; eval("PhotoClip01").removeMovieClip(); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 15 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl intClipNrOut = 0; } else { with (eval("PhotoClip01")) { _x = intAktBildPosX + intKorrLinks; _y = intAktBildPosY + intKorrOben; } eval("PhotoClip01")._visible = true; eval("PhotoClip00").removeMovieClip(); intClipNrOut = 1; } //-- Nachdem Foto geladen und angezeigt wird, laufender Anzeigeinterval neu sezten if(DiashowTimID != 0){ clearInterval(DiashowTimID); DiashowTimID = setInterval(BilderZeigen, DiashowSpeed); } delete onEnterFrame; updateAfterEvent(); } } }; function BilderZeigen() { // -- Die Show in aufsteigender Reihenfolge anzeigen -------------------------------// -- Bilder erst nachladen wenn letztgeladenes auch vollständig geladen wurde -----if (intShowRichtung == 1) { if (intDiaCounter == intAktBildEndNr-1) { intDiaCounter = 0; } else { intDiaCounter = intDiaCounter+1; } BildWechsel(Diaphotos[intDiaCounter]); //ladebild(Diaphotos[intDiaCounter]); } else { // -- Die Show in rueckwaertiger Reihenfolge anzeigen ------------------------if (intDiaCounter == 0) { intDiaCounter = intAktBildEndNr-1; } else { intDiaCounter = intDiaCounter-1; } //ladebild(Diaphotos[intDiaCounter]); BildWechsel(Diaphotos[intDiaCounter]); } trace("Wechsle zu: " + Diaphotos[intDiaCounter]); //} } // --- XML-Ladeprozess starten (oben definierte Lade-Funktion nun ausfuehren) menuLaden(strxmlAktuell); //-- Photowechsel bei entferntem Clip auslösen function BildWechsel(strPhotoDateiname) { strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); trace("sende an: " + strZielname + " - " + strPhotoDateiname); this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "PhotoAnzeigen", strPhotoDateiname); } //-- Photoskalierung und Position bei entferntem Clip auslösen function PhotoSkalieren(intPhotoSkalieren) { strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); //trace("sende an: " + strZielname + " - " + intPhotoSkalieren); this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "PhotoSkalieren", intPhotoSkalieren); } function TestRahmen() { //-- Skill wechseln strZielname = "Photoalbum"; strSkillPfad = ClipName(True) + "/Skills/PhotoSkill001.swf"; this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "SkillAnzeigen", strSkillPfad); //-- Photo wechseln strZielname = "Photoalbum"; strPhotoDateiname = ClipName(True) + "/photos/ww/iwindelw_12.jpg"; this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "PhotoAnzeigen", strPhotoDateiname); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 16 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl } function HintergrundBild(sBildName) { //trace("Sende PhotoHG: " + sBildName); strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); //strPhotoHGPfad = ClipName(True) + "/" + strShowPhotoHGClip; this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "PhotoHintergrund", sBildName); } function AlbumSkillsRandfarbe(sShowAlbumRandFarbe) { strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4); //strPhotoHGPfad = ClipName(True) + "/" + strShowPhotoHGClip; this.objLC3 = new LocalConnection(); this.objLC3.send(strZielname, "PhotoalbumRandfarbe", sShowAlbumRandFarbe); } function SoundLaden(sSoundName) { sSoundPfad = ClipName(True) + "/" + sSoundName; snd01.loadSound(sSoundPfad, false); } function SoundAbspielen() { if(ToolLeiste.CheckBox01.CheckBoxKreuz._visible == false) { snd01.start(0,1); } //snd01.setVolume((-1*_root.mSound._y)+140); } function SoundStopp() { snd01.stop(); //snd01.setVolume((-1*_root.mSound._y)+140); } function SoundDeaktivieren() { Object.flashCookie.setCookie("ddxmlphotosoundoff", "1"); } //-- Checkbox aktiviert dann bleibt Sound deaktiviert function CheckBoxClick(MC) { //trace("CheckBoxClick: "+MC._name); bolKreuzAnzeigen = (MC._name == "CheckBoxBoden") ? true : false; ToolLeiste.CheckBox01.CheckBoxKreuz._visible = bolKreuzAnzeigen; iSoundDeaktivieren = (ToolLeiste.CheckBox01.CheckBoxKreuz._visible == true) ? 1 : 0; //trace("Schreibe in Cookie: "+iSoundDeaktivieren); Object.flashCookie.setCookie("ddxmlphotosoundoff", iSoundDeaktivieren); if(iSoundDeaktivieren == 1) { SoundStopp(); } } //-- Einfärbungsfunktion für MovieClips und Textfelder function setMCColor(ColorObject, strNewColor, bolActual) { var strCol = String(strNewColor); if ((strCol.indexOf("X") != -1) || (strCol.indexOf("x") != -1)) { strCol = strNewColor; } else { strCol = "0x"+strNewColor; } // -- Handelt es sich beim Einfärbobjekt um ein Textfeld > anders behandeln und einfärben if (typeof (ColorObject) == "movieclip") { meineFarbe = new Color(ColorObject); meineFarbe.setRGB(strCol); } else { var myTF = new TextFormat(); myTF.color = strCol; ColorObject.setNewTextFormat(myTF); } if ((arguments.length == 3) && (typeof (arguments[2]) == "boolean")) { if (arguments[2] == true) { updateAfterEvent(); } } } http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 17 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl //-- Ein und ausfahr-Animation des Toolfensters ToolLeiste.onEnterFrame = function() { if (this.starten == true) { var adiffX = (this.aZielX-this._x)/4; var adiffY = (this.aZielY-this._y)/4; this._x += adiffX; this._y += adiffY; if ((Math.abs(adiffX)<0.1) & (Math.abs(adiffY)<0.1)) { this.starten = false; } } }; function ToolLeisteAktivieren() { ToolLeiste.aZielX = 300; if (ToolLeiste.starten == false) { ToolLeiste.aZielY = (ToolLeiste.aZielY == 60) ? 180 : 60; } //-- Toolfenster ein/ausblenden ToolLeiste.starten = true; } ToolLeiste._y = 180; ToolLeiste.aZielY = 60; ToolLeistenKnopf.onPress = function() { if (Key.isDown(Key.SHIFT) == true) { SoundStopp(); } ToolLeisteAktivieren(); }; // --- FlashCookie für die PunktZahl-Speicherung--Object.flashCookie = new Object(); Object.flashCookie.setCookie = function(name, value) { // Lokales SharedObject erzeugen so = SharedObject.getLocal("flashCookie"); so.data[name] = value; so.flush(); }; Object.flashCookie.getCookie = function(name) { // Lokales SharedObject erzeugen so = SharedObject.getLocal("flashCookie"); return so.data[name]; }; ToolLeiste.CheckBox01.CheckBoxText.htmlText = "<TEXTFORMAT LEADING='2'><P ALIGN='RIGHT'><FONT FACE='Arial' SIZE='11' COLOR='#000000'><b>Sound deaktivieren</b></FONT></P></TEXTFORMAT>"; if(Object.flashCookie.getCookie("ddxmlphotosoundoff") == "1") { ToolLeiste.CheckBox01.CheckBoxKreuz._visible = true; } else { ToolLeiste.CheckBox01.CheckBoxKreuz._visible = false; } /* ------------------------------------------------------------------------------------------------------// -- Liefert entweder den eigenen aktuellen SWF-Dateipfad (false/nothing) oder nur den SWF-Pfad (true)! ¦ // -- Befindet sich Clip in einem anderen Clip kann die Parentebene als Ganzzahl angegeben werden in der ¦ // -- sich der ParentClip befindet (2. Arg.) es wird dann der Parnet-Clip-URL-Name zurückgegeben. ¦ // -- so kann zB. ein Menuclip (immer dieselbe Datei > cachespeed) verschieden konfig. werden ¦ // ------------------------------------------------------------------------------------------------------*/ function SWFName(bolMitPfad, parentEbene) { var bolPath = (typeof (bolMitPfad) != "undefined") ? bolMitPfad : false; var bolParentExist = (typeof (_parent._x) != "undefined") ? true : false; var pEbene = (typeof (parentEbene) != "undefined") ? parentEbene : 0; var intNameStart = 0; var strDateiname = new String(); var strThisUrl = new String(); var strPrntUrl = new String(); // -- Parent-URL wenn nötig ermitteln var strThisUrl = this._url; var strPrntUrl = this._url; var strPEbene = ""; if (pEbene != 0) { for (i=1; i<parentEbene; i++) { strPEbene &= "_parent"; } strPrntUrl = eval(strPEbene)._url; } http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 18 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl // -- Wenn kein Parentclip vorhanden ist normale URL nehmen var strNewURL = ((bolParentExist == true) && (pEbene>0)) ? strPrntUrl : strThisUrl; intNameStart = strNewURL.lastIndexOf("/"); strDateiname = strNewURL.slice(intNameStart+1, strNewURL.length-4); if (bolPath == true) { strDateiname = strNewURL.slice(0, intNameStart); } return strDateiname; } String.prototype.searchReplace=function(find,replace) { return (this.indexOf(find) != -1) ? this.split( find ).join( replace): this; } //-- Einfache Trim-Funktion String.prototype.trim = function(ch) { if (ch == null) ch = ' '; for (i = 0; i < this.length && this.charAt(i) == ch; i++); for (j = this.length - 1; j >= i && this.charAt(j) == ch; j--); return this.substring(i, ++j); } function PhotolisteAbholen() { var dumDate = new Date(); strDataFolder = strPHPDataCheck+"?Modus=0&Dummy="+dumDate.getTime(); loadVariables(strDataFolder, "ToolLeiste"); //--Daten landen in der Funktion SQLDatenLaden(..) trace("Daten abholen: "+strDataFolder); } function DatenLaden(sAllePhotos, sAlleInhalte, sEnde){ //trace(sAllePhotos); aPhotoArrayDaten = new Array(); iPhotoArrayIndex = -2; sTempPath = SWFName(true); aTempPath = sTempPath.split("/"); sTmpDir = aTempPath[aTempPath.length-1]; trace("aTempPath: "+aTempPath[aTempPath.length-1]); aAllePhotos = sAllePhotos.split(";"); sVergleichDir = ""; sGruppenPhoto = ""; for(u=0;u<aAllePhotos.length;u++) { sPath = aAllePhotos[u]; sTemp = sPath.searchReplace(chr(92), chr(47)); iStartPosDir = sTemp.indexOf("/"+sTmpDir+"/"); pTemp = sTemp.substr(iStartPosDir+2+sTmpDir.length, sTemp.length); aTempPath2 = pTemp.split("/"); sTempFile2 = aTempPath2[aTempPath2.length-1]; sTempPath2 = pTemp.substr(0,pTemp.indexOf(sTempFile2)); if(sVergleichDir != sTempPath2) { iPhotoArrayIndex++; if(iPhotoArrayIndex > -1) { aPhotoArrayDaten.push(sGruppenPhoto); sGruppenPhoto = ""; } sGruppenPhoto = sGruppenPhoto + pTemp + ";" sVergleichDir = sTempPath2; } else { sGruppenPhoto = sGruppenPhoto + pTemp + ";" } } //trace(aPhotoArrayDaten.length); //-- Nun alle CFG-Textinhalte einlesen //trace(sAlleInhalte); //FileNr1_Pfad=Pfad:ch;FileNr1_Zle1=Thema:Kunst;FileNr1_Zle2=Haupt:Lustig;FileNr1_Zle3=Gebiet:Gemischtes;FileNr1_Zle4=Gruppe:Windelwinni;FileNr1_Zle5=Titel:Windelwinni Ausdrücke;FileNr1_Zle6=PhotoHGClip:AlbumHGPhoto.jpg;FileNr1_Zle7=Zoom:110;FileNr1_Zle8=Oben:15;FileNr1_Zle9=Links:50; aAlleInhalte = sAlleInhalte.split("£"); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 19 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl varPhotoGrp = new Array(); for(t=0;t<aAlleInhalte.length;t++) { varPhotoClp = new Array(); sEinCFGInhalt = aAlleInhalte[t]; trace(sEinCFGInhalt); aEinCFGInhalt = sEinCFGInhalt.split(";"); sTemp sTemp sTemp sTemp sTemp sTemp sTemp sTemp sTemp sTemp = = = = = = = = = = aEinCFGInhalt[1]; aEinCFGInhalt[2]; aEinCFGInhalt[3]; aEinCFGInhalt[4]; aEinCFGInhalt[5]; aEinCFGInhalt[6]; aEinCFGInhalt[7]; aEinCFGInhalt[8]; aEinCFGInhalt[9]; aEinCFGInhalt[0]; aTemp aTemp aTemp aTemp aTemp aTemp aTemp aTemp aTemp aTemp = = = = = = = = = = sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); sTemp.split(":"); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoClp.push(aTemp[1]); varPhotoGrp.push(varPhotoClp); //trace("aPhotoArray.length: "+aPhotoArrayDaten.length); } trace("varPhotoGrp.length: "+varPhotoGrp.length); //for(u=0;u<aPhotoArrayInfos.length;u++) { // trace(aPhotoArrayInfos[u]); //} Scroll1InhalteSetzen(); if(strStartPhotoURL != "") { sStartPhotoURL = strStartAppURL + "/" + strStartPhotoURL; trace("Startphoto: "+sStartPhotoURL); StartBildZeigen(sStartPhotoURL); } } // --- Film nun stoppen. Erst wenn Album-CFG-XML geladen geht es weiter stop(); Hier noch der kurze ActionScript-Coder des Anzeige-MovieClips (ddxmlphotoalbum_600w400h.swf) /* --------------------------------------------------------------------------------------------------Autor: Daniel Deckensattl Version: 1.20 Erstellt: 04.02.12 Update: 07.07.15 Dieser Flash-MovieClip stellt Photos dar, welche ihm per LocalConnection-Schnittstelle zugesandt werden. Der Verbindungsname ist der Clipname ohne die Endung .swf. Die beiden LC-Funktionen lauten: objLC2.PhotoAnzeigen = function(strPhotoFile) { .. } objLC2.SkillAnzeigen = function(strSkillDateiname) { .. } Wechselt Photo aus und zeigt dieses an Hier wird Skillrahmen ersetzt Der Hauptanzeige-Clip ist Photonavigation.swf der per XML-Datei die Photoshow steuert und die nötigen Photo-Dateipfäder und Namen dann zustellt wenn es von nöten ist. --------------------------------------------------------------------------------------------------*/ // -- Aktiviert deutsche Umlautzeichen bei Import der TXT/HTML-Dateien ------------------------------System.useCodepage = true; // -- Jegliche Unter-MovieClips richten sich an die hier festgehaltenen Bühnengrössen-Angaben -------var lngStageWidth = Stage.width+4; var lngStageHeight = Stage.height+4; var var var var var var objSkill strbuttonSkillAbdeckung lngWaitCounter strPhotoDateiname lngWaitPhotoCounter intPhotoSkalieren = = = = = = new Object(); "143D05"; 0; ""; 0; 100; //-- Funktion gibt den aktuellen Dateipfad true/ oder Dateiname (false) zurueck function ClipName(bolNurPfad) { //-- Entweder wird nur der Pfad oder nur der Clipname ohne Endung (.swf) zurueckgegeben http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 20 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] var var var var Autor: Daniel Deckensattl strParentClip = (arguments.length == 1) ? "this._url": arguments[1]+"._url"; strThisUrl = eval(strParentClip); intNameStart = strThisUrl.lastIndexOf("/"); strDateiname = strThisUrl.slice(intNameStart+1); if(bolNurPfad == true) { //-- Hier wird nur der URL-Pfad der HTML-Datei geliefert strDateiname = strThisUrl.slice(0, intNameStart); } else { //-- Filename wird ohne Endung zurueckgegeben strDateiname = strDateiname.slice(0, strDateiname.length -4); } return strDateiname; } // -- Erst wenn Rahmen-Clip vollständig geladen ist, dann wird mit dem Bühnenaufbau fortgefahren function WarteBisPhotoGeladen() { if(intPhoto1Aktiv == 1) { if (objPhoto1.getBytesLoaded()>1 && objPhoto1.getBytesLoaded()>=objPhoto1.getBytesTotal()) { clearInterval(lngWaitPhotoCounter); lngWaitPhotoCounter = 0; updateAfterEvent(); } } else { if (objPhoto2.getBytesLoaded()>1 && objPhoto2.getBytesLoaded()>=objPhoto2.getBytesTotal()) { clearInterval(lngWaitPhotoCounter); lngWaitPhotoCounter = 0; updateAfterEvent(); } } } // -- Von Aussen ist mit dieser Funktion ein Nachladen eines anderen Bildes möglich --------------function PhotoLaden(strPhotoDateiname) { // -- Laden des Photobildes einleiten if(intPhoto1Aktiv == 0) { intPhoto1Aktiv = 1; objPhoto1.loadMovie(strPhotoDateiname); } else { intPhoto1Aktiv = 0; objPhoto2.loadMovie(strPhotoDateiname); } // -- In Timer-Schlaufe warten bis Photo1 oder Photo2 voll geladen sind lngWaitPhotoCounter = setInterval(WarteBisPhotoGeladen, 70); } // -- Von Aussen ist mit dieser Funktion ein Nachladen eines anderen Skills möglich --------------function SkillLaden(strSkillDateiname) { // -- In einen leeren neu erstellten MC auf Ebene 90 den Skill-Clip hinzuladen (+alten entfernen) removeMovieClip(objSkill); objSkill = undefined; if(strSkillDateiname != "") { objSkill = this.createEmptyMovieClip("objSkillButton", 90); objSkill._x = 0; objSkill._y = 0; // -- Laden des dynamischen Rahmenclip einleiten objSkill.loadMovie(strSkillDateiname); } } // --- Empfänger LocalConnection permanent definieren -----------------------------------------objLC2 = new LocalConnection(); objLC2.PhotoHintergrund = function(strPhotoHGFile) { trace("Photohintergrund im AusgabeClip: " + strPhotoHGFile); HG.loadMovie(strPhotoHGFile,75); HG._x = 0; HG._y = 0; }; objLC2.PhotoalbumRandfarbe = function(strShowAlbumRandFarbe) { trace("Photorandfarbe im AusgabeClip: " + strShowAlbumRandFarbe); strbuttonSkillAbdeckung = strShowAlbumRandFarbe; }; objLC2.PhotoAnzeigen = function(strPhotoFile) { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 21 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl trace("Photo im AusgabeClip: " + strPhotoFile); strPhotoDateiname = strPhotoFile; PhotoLaden(strPhotoDateiname); }; objLC2.StartbildAnzeigen = function(strPhotoFile) { trace("Photo im AusgabeClip: " + strPhotoFile); strPhotoDateiname = strPhotoFile; PhotoLaden(strPhotoFile); }; // -- Drei Einstellungen werden im Func.-Arg. uebergeben objLC2.PhotoSkalieren = function(SkalierWert) { trace("Photocontainer im AusgabeClip skalieren: " + SkalierWert); sWert = SkalierWert.split(":"); intPhotoSkalieren = sWert[0]; objPhoto1._xscale = sWert[0]; objPhoto1._yscale = sWert[0]; objPhoto2._xscale = sWert[0]; objPhoto2._yscale = sWert[0]; // -- Oben/Links-Position zuweisen intPhotoTop = sWert[1]; intPhotoLeft = sWert[2]; objPhoto1._x = intPhotoLeft; objPhoto1._y = intPhotoTop; objPhoto2._x = intPhotoLeft; objPhoto2._y = intPhotoTop; updateAfterEvent(); }; objLC2.SkillAnzeigen = function(strSkillDateiname) { trace("Skill im AusgabeClip: " + strSkillDateiname); SkillLaden(strSkillDateiname); }; var strVerbindungsName = ClipName(False); // -- Sonderzeichen im Dateinamen mag Flash nicht (hier _ und - abhandeln --------------------------if(strVerbindungsName.indexOf('%') != -1) { arrConSpec = strVerbindungsName.split(""); trace("Spezialzeichen an Pos.: " + strVerbindungsName.indexOf('%') + " in " + strVerbindungsName); sVN = ""; for(i=0;i<arrConSpec.length;i++) { sEnd = ""; if(arrConSpec[i] == "%") { sVE = "_"; if(arrConSpec[i+1] == "2") { sVE = "-"; } sVN = sVN + sVE; i = i + 2; } else { sVN = sVN + arrConSpec[i]; } } strVerbindungsName = sVN; trace("Spezialzeichen: " + strVerbindungsName); } objLC2.connect(strVerbindungsName); trace("Verbindungsname: " + strVerbindungsName); // -- Photocontainer - MovieClip einmalig erstellen //objPhotoX = this.createEmptyMovieClip("objPhotoClip", 75); objPhoto1 = this.createEmptyMovieClip("objPhotoClip", 80); objPhoto2 = this.createEmptyMovieClip("objPhotoClip", 85); objPhoto1._x = 0; objPhoto1._y = 0; objPhoto2._x = 0; objPhoto2._y = 0; function TestBild() { SkillLaden(ClipName(True) + "/Skills/PhotoSkill018.swf"); PhotoLaden(strPhotoDateiname); } intPhoto1Aktiv = 1; stop(); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 22 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl Und der Code eines der Skill-Movieclips (Rahmen) /* ------------------------------------------------------------------------------------------------------Autor: Daniel Deckensattl Erstellt: 03.03.04 Update: 03.03.04 Version: 1.00 Dieser vorliegende Rahmen wird aus Einzelstücken zusammengesetzt, sodass die Grösse der Main-ButtonBühne betrifft, bzw. die Variabel [_parent._parent._parent.lngStageHeight] ausgelesen wird! Die Elemente positionieren sich beim Initialisieren selbst und passen sich der Grösse automatisch an! */ //-- Dubliziert den rechten Randrahmen und verbreitert ObenUnten-Linien (_parent._parent.lngStageWidth == undefined) ? lngWidth = Stage.width+8: lngWidth = _parent._parent.lngStageWidth+8; (_parent._parent.lngStageHeight == undefined) ? lngHeight = Stage.height+8: lngHeight = _parent._parent.lngStageHeight+8; var objSkillBoden = new MovieClip(); //-- Abstand in Pixel von Unten, bei schmalen Rahmen klein (2) und dicken Rahmen grösser (6) ------------var lngUKorr = 9; //-- Pro Skill können wir die Endränder des zu generierenden Farbverlaufrechteckes beeinflussen ---------_parent.lngFarbrandLinks = 1; _parent.lngFarbrandRechts = 1; _parent.lngFarbrandOben = 1; _parent.lngFarbrandUnten = 1; // -- Abdeckung auf die Bühne bringen -------------------------------------------------------------------this.attachMovie("Abdeckung", "AbdeckungOben", 2); this.attachMovie("Abdeckung", "AbdeckungRechts", 3); this.attachMovie("Abdeckung", "AbdeckungLinks", 4); this.attachMovie("Abdeckung", "AbdeckungUnten", 5); // -- Falls im XML-Tag ein Farbwert angegeben wurde, diesen verwenden. Im Fall einer SWF-Datei-Angabe wird // -- dieser Clip als Hintergrund den Abdeckungs-Clips zugewiesen, bzw. diese ersetzt (sonst Interne MC's) Abdeckungsfarbe = _parent.strbuttonSkillAbdeckung; trace("Abdeckungsfarbe: " + AbdeckungsFarbe); if (AbdeckungsFarbe != undefined) { if (AbdeckungsFarbe != "") { // -- Bei keinem Punkt-Vorkommen wird die Farbe herausgelesen und den Clips zugewiesen ----------if (AbdeckungsFarbe.lastIndexOf(".") == -1) { trace("baue Abdeckung an den Rändern mit externen Farben auf, Farbblock als MC in Biblio!: "+_parent.strbuttonSkillAbdeckung); hexWert = parseInt(AbdeckungsFarbe, 16); objCol1 = new Color(AbdeckungOben); objCol1.setRGB(hexWert); objCol1 = new Color(AbdeckungUnten); objCol1.setRGB(hexWert); objCol1 = new Color(AbdeckungRechts); objCol1.setRGB(hexWert); objCol1 = new Color(AbdeckungLinks); objCol1.setRGB(hexWert); } else { // -- Bei einem Punkt-Vorkommen wird die Flash-Datei in die Clips geladen ----------------------AbdeckungOben.loadMovie(AbdeckungsFarbe, 2); AbdeckungRechts.loadMovie(AbdeckungsFarbe, 3); AbdeckungLinks.loadMovie(AbdeckungsFarbe, 4); AbdeckungUnten.loadMovie(AbdeckungsFarbe, 5); trace(AbdeckungsFarbe+" wurde geladen"); AbdeckungsFarbe = "swf"; } } } else { AbdeckungsFarbe = ""; } // -- Sind Abdeckungs-Clip angepasst oder eingeladen werden Grösse und Position angepasst ---------------AbdeckungOben._width = lngWidth; AbdeckungOben._height = 10; (AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungOben._width/2)): lngKorr = -1; AbdeckungOben._x = (lngWidth/2) + lngKorr; (AbdeckungsFarbe == "swf") ? lngPos = -8: lngPos = -2; AbdeckungOben._y = lngPos; AbdeckungUnten._width = lngWidth; AbdeckungUnten._height = 10; (AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungUnten._width/2)): lngKorr = -3; http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 23 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl AbdeckungUnten._x = (lngWidth/2) + lngKorr; (AbdeckungsFarbe == "swf") ? lngPos = -11.5: lngPos = -6.5; AbdeckungUnten._y = lngHeight + lngPos; AbdeckungRechts._width = 10; AbdeckungRechts._height = lngHeight; (AbdeckungsFarbe == "swf") ? lngPos = -8.4: lngPos = -3; AbdeckungRechts._x = lngWidth+lngPos; (AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungRechts._height/2)): lngKorr = -1; AbdeckungRechts._y = (lngHeight/2) + lngKorr; AbdeckungLinks._width = 14; AbdeckungLinks._height = lngHeight; (AbdeckungsFarbe == "swf") ? lngPos = -10.7: lngPos = -3; AbdeckungLinks._x = lngPos; (AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungLinks._height/2)): lngKorr = 0; AbdeckungLinks._y = (lngHeight/2) -2 + lngKorr; //-- Zuerst alle Rahmenelemente Positionieren, egal wo das sie auf der Bühne liegen ---------------------this["EckeOL"]._x = 1; this["EckeUL"]._x = 1; this["LinieLinks"]._x = 1.2; //-- Jetzt fehlende Elemente dublizieren, zuerst die linke obere Ecke nach rechts spiegeln --------------duplicateMovieClip("EckeOL", "EckeOR", 20); this["EckeOR"]._xscale =-100; this["EckeOR"]._x = lngWidth - this["EckeOL"]._width+8; this["EckeOR"]._y = this["EckeOL"]._y; //-- dann die Ecke unten linke nach rechts spiegeln -----------------------------------------------------this["EckeUL"]._y = lngHeight - this["EckeUL"]._height-lngUKorr; duplicateMovieClip("EckeUL", "EckeUR", 21); this["EckeUR"]._xscale =-100; this["EckeUR"]._x = lngWidth - this["EckeOL"]._width+8; this["EckeUR"]._y = this["EckeUR"]._y; //-- Linienlänge der oberen und unteren Rahmenlinien und die _x-Lage bestimmen --------------------------LinieOben._width = lngWidth - this["EckeOL"]._width-this["EckeOR"]._width-2; LinieUnten._width = lngWidth - this["EckeUL"]._width-this["EckeUR"]._width-1; LinieOben._x = (lngWidth/2); LinieUnten._x = (lngWidth/2); LinieOben._y = this["EckeOL"]._y; //-- dann die fehlenden rechten vertikalen Linien spiegeln ----------------------------------------------duplicateMovieClip("LinieLinks", "LinieRechts", 15); this["LinieRechts"]._x = this["EckeOL"]._width + this["LinieOben"]._width+9.8; this["LinieLinks"]._height = (lngHeight-(2*this["EckeOL"]._height))+(1.5*(lngHeight/26)); this["LinieRechts"]._height = this["LinieLinks"]._height; this["LinieRechts"]._y = (lngHeight/2)-4; this["LinieLinks"]._y = (lngHeight/2)-4; this["LinieRechts"]._xscale =-100; //-- Linie Unten noch an unteren Clipbereich bringen ----------------------------------------------------LinieUnten._y = lngHeight-LinieUnten._height-lngUKorr; this["EckeOL"].swapDepths(22); this["EckeUL"].swapDepths(23); this["LinieLinks"].swapDepths(16); this["LinieOben"].swapDepths(17); this["LinieUnten"].swapDepths(189); //-- Zuguterletzt den Hintergrund nun einfärben und den Screnn aktualisieren (Refresh) ------------------_parent.FarbBodenImportieren(); stop(); Die PHP-Datei für die Photo-Clip-Daten (ddphpphotoalbum.php): <?php /* Autor: Daniel Deckensattl Erstellt: 09.07.2015 Update: 11.07.2015 V.- 1.20 PHP-Script für das Anzeigen der PHP-Photoalbum-Bilder. Der $AppPfad muss der eigenen Umgebung angepasst werden! http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 24 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl */ $strphpphotoModus = listvarsPG('Modus',"GET"); $AppPfad = 'C:\xampp\htdocs\ddflashpage\files\Flash\ddphpphoto'; //-- Listet alle Photodateien in Verzeichnissen auf function LeseVerzeichnisse($dir) { $array = array(); $d = dir($dir); while (false !== ($entry = $d->read())) { if($entry!='.' && $entry!='..') { $array[] = $entry; } } $d->close(); return $array; } /** * Get an array that represents directory tree * @param string $directory Directory path * @param bool $recursive Include sub directories * @param bool $listDirs Include directories on listing * @param bool $listFiles Include files on listing * @param regex $exclude Exclude paths that matches this regex */ function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') { $arrayItems = array(); $skipByExclude = false; $handle = opendir($directory); if ($handle) { while (false !== ($file = readdir($handle))) { preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip); if($exclude){ preg_match($exclude, $file, $skipByExclude); } if (!$skip && !$skipByExclude) { if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) { if($recursive) { $arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude)); } if($listDirs){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } else { if($listFiles){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } } } closedir($handle); } return $arrayItems; } function LiesVerzeichnisse($sVerzeichnis) { $DirArray = directoryToArray($sVerzeichnis, true); return $DirArray; } function listvarsPOST($str) { $res = ""; $arr=$_POST; if (isset($_POST)) { reset($_POST); foreach($_POST as $element=>$wert) { if(strtolower($str)==strtolower($element)) { $res = $wert; } http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 25 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl } } return $res; } function listvarsGET($str) { $res = ""; $arr=$_GET; if (isset($_GET)) { reset($_GET); foreach($_GET as $element=>$wert) { if(strtolower($str)==strtolower($element)) { $res = $wert; } } } return $res; } function listvarsPG($strVal,$POSTGET) { if($POSTGET != "GET") { $strRes = listvarsPOST($strVal); } else { $strRes = listvarsGET($strVal); } return $strRes; } //-- Einlese-Funktion einer txt-Datei function LeseVonDatei($File) { $FileInhalt = array(); $FileInhalt = file($File); return $FileInhalt; } //-- Schreibt in die gewünschte Datei einen Inhalt function SchreibeInDatei($File, $Content) { if (is_writable($File)) { // // // if Wir öffnen $filename im "Schreib" - Modus. Der Dateizeiger befindet sich am Ende der Datei, und dort wird $sInTextSchreiben später mit fwrite() geschrieben. (!$handle = fopen($File, "w+")) { print "Kann die Datei $filename nicht öffnen"; exit; } // Schreibe $Content in die geöffnete Datei. if (!fwrite($handle, $Content)) { print "Kann in die Datei $filename nicht schreiben"; exit; } fclose($handle); } else { echo "Die Datei $File ist nicht schreibbar"; } } //-- Im Modus 0 werden alle Photodateien im Unterordner photos aufgelistet if($strphpphotoModus == 0) { $sPhotoPfad = $AppPfad . "\\photos"; $PhotoArray = LiesVerzeichnisse($sPhotoPfad); echo "&AllePhotos="; for($i=0;$i<count($PhotoArray);$i++) { $sTemp = $PhotoArray[$i]; if(strpos($sTemp,"photos\\Hintergrund\\") == false) { echo $sTemp . ";"; } } echo "&Inhalte="; //-- Jetzt die Inhalte der Konfigurationsdateien übergeben http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 26 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl $NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad); for($i=0;$i<count($NurVerzeichnisse);$i++) { $photoCFGPath = $AppPfad . "\\photos\\" . $NurVerzeichnisse[$i] . "\\_AphotoGrpInfo.txt"; $handle = @fopen($photoCFGPath, "r"); if ($handle) { if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") { $k = 0; echo "FileNr". ($i+1) . "_Pfad=Pfad:" . $NurVerzeichnisse[$i] . ";"; while (!feof($handle)) { $k++; $sTemp = fgets($handle, 1024); echo "FileNr". ($i+1) . "_Zle". $k . "=" . trim($sTemp) . ";"; } echo "£"; fclose($handle); } } else { if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") { //-- Datei fehlt, daher erstellen echo "CFGPfad=" . $photoCFGPath . " fehlt!<br />"; $Lines = "Thema:" . "\r\n"; $Lines = $Lines . "Haupt:" . "\r\n"; $Lines = $Lines . "Gebiet:" . "\r\n"; $Lines = $Lines . "Gruppe:" . "\r\n"; $Lines = $Lines . "Titel:" . "\r\n"; $Lines = $Lines . "PhotoHGClip:" . "\r\n"; $Lines = $Lines . "Zoom:100" . "\r\n"; $Lines = $Lines . "Oben:0" . "\r\n"; $Lines = $Lines . "Links:0" . "\r\n"; $Lines = $Lines . "Rahmen:"; //-- schreibe neue Datei mit leerem Dateninhalt. Nur Bezeichner! $fp = fopen($photoCFGPath, "a+"); fputs($fp,$Lines); fclose($fp); } } } echo "&Ende="; } ?> Die PHP-Datei für die Photo-Clip-Datenverwaltung (ddphpphotoalbummanager.php): <?php session_start(); /* Autor: Daniel Deckensattl Erstellt: 09.07.2015 Update: 10.07.2015 V.- 1.20 PHP-Script für das Verwalten der Konfigurationsdateien der Photogruppen. Beim Einrichten des PHP-Photoalbums muss ein Passwort generiert werden und hier in diesem Script unter $LoginPasswort = .... eingetragen werden (Standartpasswort für erstmalige Nutzung ist "abc"). Das PHP in die Konfigdateien schreiben kann ist es wichtig den $AppPfad anzupassen!!! */ $LoginName $LoginPasswort $AppPfad = "Dani"; = "a9993e364706816aba3e25717850c26c9cd0d89d"; = 'C:\xampp\htdocs\ddflashpage\files\Flash\ddphpphoto'; $strAction $strDirLstIdx = listvarsPG('MyAction',"POST"); = listvarsPG('MyDirLstIdx',"POST"); //-- Konfigurationsspeicherung $strSVerzeichnis = listvarsPOST('PhotoOrdner'); $strSHauptkategorie = listvarsPOST('KonfZ1'); $strSUnterkategorie = listvarsPOST('KonfZ2'); $strSGruppenname = listvarsPOST('KonfZ3'); $strSThemenname = listvarsPOST('KonfZ4'); $strSTitel = listvarsPOST('KonfZ5'); $strSHintergrundbild = listvarsPOST('KonfZ6'); http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 27 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] $strSZoom $strSOben $strLinks $strRahmen = = = = $strMLoginName = listvarsPG('Login',"POST"); $strPasswort = listvarsPG('LoginPasswort',"POST"); $strQSTRING $strIPNumber $strPHPSelf = $_SERVER['QUERY_STRING']; = $_SERVER['REMOTE_ADDR']; = $_SERVER['PHP_SELF']; Autor: Daniel Deckensattl listvarsPOST('KonfZ7'); listvarsPOST('KonfZ8'); listvarsPOST('KonfZ9'); listvarsPOST('KonfZ10'); //-- Listet alle Photodateien-Verzeichnisse auf function LeseVerzeichnisse($dir) { $array = array(); $d = dir($dir); while (false !== ($entry = $d->read())) { if($entry!='.' && $entry!='..') { $array[] = $entry; } } $d->close(); return $array; } /** * Get an array that represents directory tree * @param string $directory Directory path * @param bool $recursive Include sub directories * @param bool $listDirs Include directories on listing * @param bool $listFiles Include files on listing * @param regex $exclude Exclude paths that matches this regex */ function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') { $arrayItems = array(); $skipByExclude = false; $handle = opendir($directory); if ($handle) { while (false !== ($file = readdir($handle))) { preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip); if($exclude){ preg_match($exclude, $file, $skipByExclude); } if (!$skip && !$skipByExclude) { if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) { if($recursive) { $arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude)); } if($listDirs){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } else { if($listFiles){ $file = $directory . DIRECTORY_SEPARATOR . $file; $arrayItems[] = $file; } } } } closedir($handle); } return $arrayItems; } function LiesVerzeichnisse($sVerzeichnis) { $DirArray = directoryToArray($sVerzeichnis, true); return $DirArray; } function listvarsPOST($str) { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 28 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl $res = ""; $arr=$_POST; if (isset($_POST)) { reset($_POST); foreach($_POST as $element=>$wert) { if(strtolower($str)==strtolower($element)) { $res = $wert; } } } return $res; } function listvarsGET($str) { $res = ""; $arr=$_GET; if (isset($_GET)) { reset($_GET); foreach($_GET as $element=>$wert) { if(strtolower($str)==strtolower($element)) { $res = $wert; } } } return $res; } function listvarsPG($strVal,$POSTGET) { if($POSTGET != "GET") { $strRes = listvarsPOST($strVal); } else { $strRes = listvarsGET($strVal); } return $strRes; } //-- Einlese-Funktion einer txt-Datei function LeseVonDatei($File) { $FileInhalt = array(); $FileInhalt = file($File); return $FileInhalt; } //-- Schreibt in die gewünschte Datei einen Inhalt function SchreibeInDatei($File, $Content) { if (is_writable($File)) { // // // if Wir öffnen $filename im "Schreib" - Modus. Der Dateizeiger befindet sich am Ende der Datei, und dort wird $sInTextSchreiben später mit fwrite() geschrieben. (!$handle = fopen($File, "w+")) { print "Kann die Datei $filename nicht öffnen"; exit; } // Schreibe $Content in die geöffnete Datei. if (!fwrite($handle, $Content)) { print "Kann in die Datei $filename nicht schreiben"; exit; } fclose($handle); } else { echo "Die Datei $File ist nicht schreibbar"; } } if($strAction == "Logout") { $_SESSION['Login'] = 0; } //-- Sichere Photogruppen-Konfigdatei if($strAction == "Save") { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 29 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl $photoCFGPath = $AppPfad . "\\photos\\" . $strSVerzeichnis . "\\_AphotoGrpInfo.txt"; unlink($photoCFGPath); $Lines = "Thema:" . $strSHauptkategorie . "\r\n"; $Lines = $Lines . "Haupt:" . $strSUnterkategorie . "\r\n"; $Lines = $Lines . "Gebiet:" .$strSGruppenname . "\r\n"; $Lines = $Lines . "Gruppe:" . $strSThemenname . "\r\n"; $Lines = $Lines . "Titel:" . $strSTitel . "\r\n"; $Lines = $Lines . "PhotoHGClip:" . $strSHintergrundbild . "\r\n"; $Lines = $Lines . "Zoom:" . $strSZoom . "\r\n"; $Lines = $Lines . "Oben:" . $strSOben . "\r\n"; $Lines = $Lines . "Links:" . $strLinks . "\r\n"; $Lines = $Lines . "Rahmen:" . $strRahmen; //-- schreibe neue Datei mit leerem Dateninhalt. Nur Bezeichner! $fp = fopen($photoCFGPath, "a+"); fputs($fp,$Lines); fclose($fp); } ?> <html> <head> <title>PHP-Photoalbum</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="content-language" content="German"> <meta http-equiv="audience" content="General"> <meta name="author" content="Daniel Deckensattl"> <meta name="copyright" content="Daniel Deckensattl"> <meta name="subject" content="PHPFotoalbum"> <meta name="description" content="PHPFotoalbum-Manager"> <meta name="keywords" content="Flash Website 2015"> <meta name="robots" content="INDEX,FOLLOW"> <meta content="15 days" name=revisit-after> <script language="JavaScript" type="text/JavaScript"> <!-function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> </head> <script language="JavaScript" src="phpphotoalbum.js" type="text/JavaScript"></script> <?php echo '<script language="JavaScript">'; echo ' var SelfPath = "' . $strPHPSelf . '";'; echo ' function getCheckString(pass) {' . chr(10); echo " var sP = hex_sha1(pass);" . chr(10); echo " return sP;" . chr(10); echo ' }' . chr(10); echo '</script>' . chr(10); ?> <script language="JavaScript"> function sendData() { //-- Alle Pflichtfelder pruefen var checked = true; var sDefaultFields = new Array("Login", "LoginPasswort"); var sResult = ''; for(i=0;i<sDefaultFields.length;i++) { if(document.getElementById(sDefaultFields[i]).value == "") { sResult = sResult + "\n" + sDefaultFields[i]; } } //-- Bei fehlenden Pflichteingabe-Feldwerten werden Bezeichner aufgefordert anzugeben if(sResult != "") { sResult = "Folgende Felder müssen angegeben werden:\n" + sResult; alert(sResult); checked = false; } else { http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 30 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl //-- Vor einem Submit die aktuelle Scrollposition sichern document.getElementById("LoginPasswort").value = getCheckString(document.getElementById("LoginPasswort").value); document.Anmeldung.method="post"; document.Anmeldung.action=SelfPath; document.Anmeldung.submit(); } return checked; } </script> <body bgcolor="#FFFFFF" text="#000000" link="#0033FF" vlink="#0099FF" alink="#009933" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0"> <?php if((($strPasswort == $LoginPasswort) & ($strMLoginName == $LoginName)) | ($_SESSION['Login'] == 1)) { $_SESSION['Login'] = 1; //$_SESSION['Loginname'] = $strMLoginName; echo '<script language="JavaScript" type="text/JavaScript">'; echo ' var PhotoDat = new Array();'; $intW = 0; $sPhotoPfad = $AppPfad . "\\photos"; $PhotoArray = LiesVerzeichnisse($sPhotoPfad); for($i=0;$i<count($PhotoArray);$i++) { $sTemp = $PhotoArray[$i]; $aTemp = explode("\\",$sTemp); if(trim($aTemp[count($aTemp)-1]) != "_AphotoGrpInfo.txt") { echo " PhotoDat[$intW] = '" . trim($aTemp[count($aTemp)-2]) . "/" . trim($aTemp[count($aTemp)-1]) . "';" . chr(10); $intW++; } } //-- Nun die Inhalte der Konfigdateien ausgeben $NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad); echo ' var PhotoCFG = new Array(' . (count($NurVerzeichnisse)-1 ) . ');' . chr(10); for($i=0;$i<count($NurVerzeichnisse);$i++) { $photoCFGPath = $AppPfad . "\\photos\\" . $NurVerzeichnisse[$i] . "\\_AphotoGrpInfo.txt"; $handle = @fopen($photoCFGPath, "r"); $k = 0; echo ' PhotoCFG[' . $i . '] = new Array(10);' . chr(10); echo " PhotoCFG[" . $i . "][" . $k . "] = '" . $NurVerzeichnisse[$i] . "/_AphotoGrpInfo.txt';" . chr(10); if ($handle) { $k++; while (!feof($handle)) { $sTemp = fgets($handle, 1024); echo " PhotoCFG[" . $i . "][" . $k . "] = '" . trim($sTemp) . "';" . chr(10); $k++; } fclose($handle); } else { //-- Datei fehlt, //echo "CFGPfad=" $Lines = "Thema:" $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . $Lines = $Lines . daher erstellen . $photoCFGPath . " fehlt!<br />" . chr(10); . "\r\n"; "Haupt:" . "\r\n"; "Gebiet:" . "\r\n"; "Gruppe:" . "\r\n"; "Titel:" . "\r\n"; "PhotoHGClip:" . "\r\n"; "Zoom:100" . "\r\n"; "Oben:0" . "\r\n"; "Links:0" . "\r\n"; "Rahmen:"; //-- schreibe neue Datei mit Bezeichner Dateninhalt. if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") { $fp = fopen($photoCFGPath, "a+"); fputs($fp,$Lines); fclose($fp); } http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 31 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl //echo " PhotoCFG[" . $i . "][0] = '_AphotoGrpInfo.txt';" . chr(10); echo " PhotoCFG[" . $i . "][1] = 'Thema:';" . chr(10); echo " PhotoCFG[" . $i . "][2] = 'Haupt:';" . chr(10); echo " PhotoCFG[" . $i . "][3] = 'Gebiet:';" . chr(10); echo " PhotoCFG[" . $i . "][4] = 'Gruppe:';" . chr(10); echo " PhotoCFG[" . $i . "][5] = 'Titel:';" . chr(10); echo " PhotoCFG[" . $i . "][6] = 'PhotoHGClip:';" . chr(10); echo " PhotoCFG[" . $i . "][7] = 'Zoom:100';" . chr(10); echo " PhotoCFG[" . $i . "][8] = 'Oben:0';" . chr(10); echo " PhotoCFG[" . $i . "][9] = 'Links:0';" . chr(10); echo " PhotoCFG[" . $i . "][10] = 'Rahmen:';" . chr(10); } } echo '</script>' . chr(10); ?> <div id="Layer1" style="position:absolute; left:2px; top:482px; width:600px; height:400px; z-index:1"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="left" id="EinzelPhoto"> </td> </tr> </table> </div> <script language="JavaScript" type="text/JavaScript"> function setPicture() { bTemp = document.getElementById('PhotoBilder').value; sTemp = '<img border="0" alt="" width="480" height="350" src="' + bTemp + '" />'; document.all.EinzelPhoto.innerHTML = sTemp; } function setFolder() { document.FormPhotoDat.PhotoBilder.options.length = 0; bTemp = document.getElementById('PhotoOrdner').value; for(p=0;p<PhotoDat.length;p++) { sTemp = PhotoDat[p]; aTmpSplit = sTemp.split('/'); if(bTemp == aTmpSplit[0]) { aPhotoTmpPfad = SelfPath.split("/"); sPhotoPfad = SelfPath.substr(0,SelfPath.length-aPhotoTmpPfad[aPhotoTmpPfad.length-1].length); NeuerEintrag = new Option(aTmpSplit[1], sPhotoPfad+"photos/"+sTemp, false, true); sAktuellesDir = bTemp; document.FormPhotoDat.PhotoBilder.options[document.FormPhotoDat.PhotoBilder.length] = NeuerEintrag; } } for(h=0;h<PhotoCFG.length;h++) { sTemp = PhotoCFG[h][0]; aTmpSplit = sTemp.split('/'); //alert(sTemp); if(bTemp == aTmpSplit[0]) { document.FormPhotoDat.KonfZ1.value = getSplittNr(PhotoCFG[h][1],":",1); document.FormPhotoDat.KonfZ2.value = getSplittNr(PhotoCFG[h][2],":",1); document.FormPhotoDat.KonfZ3.value = getSplittNr(PhotoCFG[h][3],":",1); document.FormPhotoDat.KonfZ4.value = getSplittNr(PhotoCFG[h][4],":",1); document.FormPhotoDat.KonfZ5.value = getSplittNr(PhotoCFG[h][5],":",1); document.FormPhotoDat.KonfZ6.value = getSplittNr(PhotoCFG[h][6],":",1); document.FormPhotoDat.KonfZ7.value = getSplittNr(PhotoCFG[h][7],":",1); document.FormPhotoDat.KonfZ8.value = getSplittNr(PhotoCFG[h][8],":",1); document.FormPhotoDat.KonfZ9.value = getSplittNr(PhotoCFG[h][9],":",1); document.FormPhotoDat.KonfZ10.value = getSplittNr(PhotoCFG[h][10],":",1); } } if(document.getElementById('PhotoBilder').selectedIndex != -1) { setPicture(); } } function getSplittNr(sString, sTrenner, Nr) { aTemp = sString.split(sTrenner); return aTemp[Nr]; } function setLogout() { document.getElementById('MyAction').value = "Logout"; http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 32 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 33 / 39 document.FormPhotoDat.method="post"; document.FormPhotoDat.action="ddphpphotoalbummanager.php"; document.FormPhotoDat.submit(); } function PasswortGenerieren() { var sP = hex_sha1(document.getElementById('PasswortGen').value); document.getElementById('PasswortGen').value = sP; } function PasswortGenerator() { if(document.getElementById('PasswortGenerator').innerHTML == " ") { sHTML = 'Passwort: <input type="text" name="PasswortGen" id="PasswortGen" style="width:280px; height:21px;background-color:#FFEEAA; font-size:12px;"><img src="Sha1CodeStart.gif" width="24" height="22" onClick="PasswortGenerieren()" title="Passwort erstellen">'; document.getElementById('PasswortGenerator').innerHTML = sHTML; } else { document.getElementById('PasswortGenerator').innerHTML = ""; } } </script> <form action="<?php echo $strPHPSelf . "?" . $strQSTRING; ?>" method ="post" enctype="application/x-www-form-urlencoded" name="FormPhotoDat" id="FormPhotoDat"> <?php echo '<script language="JavaScript" type="text/JavaScript">' . chr(10); echo "function setSave() {" . chr(10); echo " document.getElementById('MyAction').value = 'Save';" . chr(10); echo " document.getElementById('MyDirLstIdx').value = document.getElementById('PhotoOrdner').selectedIndex;" . chr(10); echo " document.FormPhotoDat.method='post';" . chr(10); echo " document.FormPhotoDat.action='" . $strPHPSelf . "';" . chr(10); echo " document.FormPhotoDat.submit();" . chr(10); echo "}" . chr(10); echo "</script>" . chr(10); $_SESSION['Login'] = "1"; ?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="left"><img border="0" alt="" width="12" height="10" src="spacer.gif" /></td> </tr> <tr> <td valign="top" align="left"><table width="800" height="50" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="center"><h1>Photos verwalten</h1></td> </tr> <tr> <td valign="top" align="center"><img border="0" alt="" width="12" height="10" src="spacer.gif" /><input type="hidden" name="MyAction" id="MyAction" value="<?php echo $strAction; ?>"><input type="hidden" name="MyDirLstIdx" id="MyDirLstIdx" value="<?php echo $strDirLstIdx; ?>"></td> </tr> <tr> <td valign="top" align="center"><h2><font color="#CC3300">Willkommen <?php echo $LoginName; ?></font></h2></td> </tr> <tr> <td valign="top" align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="35%" align="center" valign="top"><h2><font color="#CC3300"><input name="Logout" type="button" value="Abmelden" onClick="setLogout()"></td><td width="4%"><img src="Sha1Code.gif" width="24" height="22" onClick="PasswortGenerator()" title="Passwort generieren"></td> <td width="61%" id="PasswortGenerator"> </td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td valign="top" align="center" width="100"><table width="400" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="center"></td> </tr> </table></td> </tr> <tr> <td valign="top" align="center"> </td> </tr> <tr> <td valign="top" align="left"> <table width="800" border="0" cellspacing="0" cellpadding="0"> <tr> http://deckensattl.goip.de/ddflashpage/ Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] <td <td <td <td <td <td </tr> Autor: Daniel Deckensattl 11.07.2015 / Seite 34 / 39 valign="top" width="21" align="center"> </td> valign="top" width="265" align="center"><b>Photoverzeichnisse</b></td> width="300" align="center" valign="top"><b>Photogruppenkonfiguration</b></td> width="30" align="center" valign="top"><img border="0" alt="" width="30" height="12" src="spacer.gif" /></td> width="303" align="center" valign="top"><b>Bilder</b></td> valign="top" width="23" align="center"> </td> <tr> <td valign="top" width="21" align="center"> </td> <td valign="top" align="center"> </td> <td valign="top" align="center"> </td> <td valign="top" align="center"> </td> <td valign="top" align="center"> </td> <td valign="top" width="23" align="center"> </td> </tr> <tr> <td width="21" height="229" align="center" valign="top"> </td><td valign="top" align="center"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="center"><select name="PhotoOrdner" size="5" id="PhotoOrdner" style="width:280px; height:240px;background-color:#FFEEAA; font-size:12px;" onChange="setFolder();"> <?php $sPhotoPfad = $AppPfad . "\\photos"; $NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad); for($i=0;$i<count($NurVerzeichnisse);$i++) { $sDirPath = $NurVerzeichnisse[$i]; $sDirValue = $NurVerzeichnisse[$i]; $strOut = "<option value='$sDirPath'$strMnuSele>$sDirValue</option>"; echo $strOut; } ?> </select></td> </tr> <tr> <td><img border="0" alt="" width="30" height="220" src="spacer.gif" /></td> </tr> </table> </td><td valign="top" align="center"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" align="center"><table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="54%" height="24" align="right" valign="top">Hauptkategorie:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ1" id="KonfZ1" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Unterkategorie:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ2" id="KonfZ2" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Gruppenname:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ3" id="KonfZ3" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Themenname:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ4" id="KonfZ4" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Titel:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ5" id="KonfZ5" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Hintergrundbild:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ6" id="KonfZ6" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Zoom:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ7" id="KonfZ7" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Oben:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ8" id="KonfZ8" style="width:170px; </tr> <tr> <td width="54%" height="24" align="right" valign="top">Links:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ9" id="KonfZ9" style="width:170px; http://deckensattl.goip.de/ddflashpage/ height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> height:18px; background-color:#FFEEAA; font-size:12px; font-family: Arial, sans-serif;"></td> Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl 11.07.2015 / Seite 35 / 39 </tr> <tr> <td width="54%" height="24" align="right" valign="top">Rahmen-Nr.:</td> <td width="46%" align="right" valign="top"><input type="text" name="KonfZ10" id="KonfZ10" style="width:170px; height:18px; background-color:#FFEEAA; font-size:12px; font-family: </tr> </table></td> </tr> <tr> <td height="33" align="center"><input name="CFGSpeichern" type="button" value="Speichern" onClick="setSave()"></td> </tr> </table> </td> <td valign="top" align="center"> </td> <td valign="top" align="center"> <select name="PhotoBilder" size="5" id="PhotoBilder" style="width:280px; height:640px;background-color:#FFEEAA; font-size:12px;" onChange="setPicture();"> </select></td><td valign="top" width="23" align="center"> </td> </tr> </table> </td> </tr> <tr> <td valign="top" align="center"> </td> </tr> <tr> <td valign="top" align="center"> </td> </tr> </table> </form> <?php if($strDirLstIdx != "") { echo '<script language="JavaScript" type="text/JavaScript">' . chr(10); echo " document.getElementById('PhotoOrdner').selectedIndex = " . $strDirLstIdx . ";" . chr(10); echo " setFolder();"; echo '</script>' . chr(10); } } else { ?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="100%" align="center" valign="top"><img border="0" alt="" width="12" height="112" src="spacer.gif" /></td> </tr> <tr> <td width="100%" align="center" valign="top"><strong><font size="5">Online-Photoalbum-Manager</font></strong></td> </tr> <tr> <td width="100%" align="center" valign="top"><img border="0" alt="" width="12" height="50" src="spacer.gif" /></td> </tr> <tr> <td> <form name="Anmeldung" onsubmit="return sendData()"> <table cellspacing="0" cellpadding="0" width="100%" summary="" border="0"> <tbody> <tr> <td valign="top" width="100%" align="center"> <table width="200" height="100" border="0" cellpadding="0" cellspacing="0" style="HEIGHT: 100px; WIDTH: 200px" summary=""> <tbody> <tr> <td width="91" height="45"> <p align="center"><span style="COLOR: rgb(0,0,255)">Loginname:</span></p> </td> <td width="189"><input id="Login" class="box1" name="Login" value="" /></td> </tr> <tr> <td height="43"> <p align="center"><span style="COLOR: rgb(0,0,255)">Passwort:</span></p> </td> <td><input id="LoginPasswort" class="box1" name="LoginPasswort" onKeyUp="checkAction(this);" type="password"/></td> </tr> <tr> <td height="19"><img border="0" alt="" width="12" height="12" src="spacer.gif" /></td> <td> </tr> <tr> http://deckensattl.goip.de/ddflashpage/ Arial, sans-serif;"></td> Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl <td height="12"><img border="0" alt="" width="12" height="1" src="spacer.gif" /></td> <td align="center"><input id="versenden" type="submit" name="versenden" value="Anmelden" /></td> </tr> </tbody> </table> </td> <td valign="top" align="left"> </td> </tr> </tbody> </table> </form> </td> </tr> <tr> </table> <?php } ?> </body> </html> Die wichtige JavaScriptdatei phpphotoalbum.js-Datei (für das Passwort) /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined * in FIPS PUB 180-1 * Version 2.1a Copyright Paul Johnston 2000 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for details. */ /* * Configurable variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. */ var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ /* * These are the functions you'll usually want to call * They take string arguments and return either hex or base-64 encoded strings */ function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} /* * Perform a simple self-test to see if the VM is working */ function sha1_vm_test() { return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; } /* * Calculate the SHA-1 of an array of big-endian words, and a bit length */ function core_sha1(x, len) { /* append padding */ x[len >> 5] |= 0x80 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var var var var var var w a b c d e = = = = = = Array(80); 1732584193; -271733879; -1732584194; 271733878; -1009589776; http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 36 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for(var j = 0; j < 80; j++) { if(j < 16) w[j] = x[i + j]; else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); e = d; d = c; c = rol(b, 30); b = a; a = t; } a b c d e = = = = = safe_add(a, safe_add(b, safe_add(c, safe_add(d, safe_add(e, olda); oldb); oldc); oldd); olde); } return Array(a, b, c, d, e); } /* * Perform the appropriate triplet combination function for the current * iteration */ function sha1_ft(t, b, c, d) { if(t < 20) return (b & c) | ((~b) & d); if(t < 40) return b ^ c ^ d; if(t < 60) return (b & c) | (b & d) | (c & d); return b ^ c ^ d; } /* * Determine the appropriate additive constant for the current iteration */ function sha1_kt(t) { return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514; } /* * Calculate the HMAC-SHA1 of a key and some data */ function core_hmac_sha1(key, data) { var bkey = str2binb(key); if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); var ipad = Array(16), opad = Array(16); for(var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5C5C5C5C; } var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); return core_sha1(opad.concat(hash), 512 + 160); } /* * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 37 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } /* * Bitwise rotate a 32-bit number to the left. */ function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } /* * Convert an 8-bit or 16-bit string to an array of big-endian words * In 8-bit function, characters >255 have their hi-byte silently ignored. */ function str2binb(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); return bin; } /* * Convert an array of big-endian words to a string */ function binb2str(bin) { var str = ""; var mask = (1 << chrsz) - 1; for(var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); return str; } /* * Convert an array of big-endian words to a hex string. */ function binb2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); } return str; } /* * Convert an array of big-endian words to a base-64 string */ function binb2b64(binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for(var i = 0; i < binarray.length * 4; i += 3) { var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); for(var j = 0; j < 4; j++) { if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); } } return str; } http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 38 / 39 Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf] Autor: Daniel Deckensattl http://deckensattl.goip.de/ddflashpage/ 11.07.2015 / Seite 39 / 39