Photonotes erstellen, speichern und wieder lesen

HansGruber

Grünschnabel
Hallo alle zusammen, ich habe schon im Forum und i-net gesucht aber leider ncihts gefunden.

Der Grundgedanke ist, rechtecke (Markierungen) auf einem Bild auf einer Webseite zu machen und dazu ein kommentar zu erstellen und danach zu speichern, damit man ihn beim neu aufrufen der Seite lesen kann.

Ich habe mir ein gutes Notes Script rausgesucht,
http://archive.dustyd.net/projects/PhotoNotes/
welches super funktioniert, ich verstehe und schon angepasst habe aber ich bekomme es nicht hin, die Notes zu speichern und dann zu lesen. Über all wir von AJAX gesprochen aber ich bin ein absoluter und raffe das irgendwie noch nicht.
Ich hab das daher etwas brachialer gelöst und speichere die variablen der Notes über eine php in eine belibige datei (habe mir erstmal eine .txt genommen) aber ich kann die notes beim laden der Seite nicht sehen, also sie werden nicht geladen und ich habe keine ahnung wie ich das machen soll. Ich habe mir HTML, PHP, Javascript und co in den letzten tagen beigebracht aber bis AJAX dauert es noch :( Auserdem benötige ich die ganze geschichte nur offline auf einem USB-Stick also ohne Datenbank, daher hab ich das erstmal ausen vor gelassen mit MySQL.
Wenn jemand eine Lösung hat oder mir einen nützlichen Tipp geben kann, währe ich sehr sehr dankbar, da es sehr dringend ist.

Hier das von mir angepasste Script:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">


<SCRIPT src="http://localhost/Test/scripte/PhotoNotes.v1.js" 
type=text/javascript></SCRIPT>

<LINK href="http://localhost/Test/scripte/PhotoNotes.v1.css" 
type=text/css rel=stylesheet>
<head>

<DIV class="Photo fn-container" id=PhotoContainer>

<INPUT onclick=AddNote(); type=image src="Bild.jpg" id="banner"> 

</DIV>  


<script language="javascript">
// Begin
function coor() 
{
   window.status = "X=" + window.event.x + " Y=" +window.event.y;
}
//  End
</script>


</div>
</body>

<SCRIPT>
// Variable für das Scorlen im Fenster
var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? 
window.document.documentElement : window.document.body || null; 

 // create the Photo Note Container
var notes = new PhotoNoteContainer(document.getElementById('PhotoContainer'));

document.body.style.behavior="url(#default#download)";
   document.body.startDownload('test.txt', liesvor);
   function liesvor(text) {
      alert(text);
   }


                
                notes.AddNote(note1);
                notes.AddNote(note2);
				notes.AddNote(note3);
                function AddNote()
                {
                    var newNote = new PhotoNote('',-1,new PhotoNoteRect(window.event.x+body.scrollLeft-25,window.event.y+body.scrollTop-25,50,50)); // B - Position,H - Position,B - Markierung,H - Markierung
                    newNote.onsave = function (note) { return saveNoteDb(note); };
                    newNote.ondelete = function (note) { return true; };
                    notes.AddNote(newNote);
                    newNote.Select();
                }
				
				
                function saveNoteDb(note)
				{
		note.Save();
		

var text = note.text;
var width = note.rect.width;
var height = note.rect.height;
var left = note.rect.left;
var top = note.rect.top;
var id = note.id;
var status = note.status;
window.location.href="write.php?+text="+text+"',1,new PhotoNoteRect("+left+","+top+","+width+","+height+"));"; target=_blank



	
	}
		</script>
Wenn ihr die PhotoNotes.v1.js benötigt, ich habe sie von http://archive.dustyd.net/projects/PhotoNotes/
aber ich kann sie Posten bei bedarf (ist aber etwas länger ;) )
Hier die write.php
PHP:
<?php

$eQLB[0][0]= $_GET["text"];
$eQLB[0][1]= $_GET["left"];
$eQLB[0][2]= $_GET["top"];
$eQLB[0][3]= $_GET["width"];
$eQLB[0][4]= $_GET["heigth"];


$fp  = @ fopen("eQLB.txt", "a");
  function csv_write($csv_array, $fp) {
    for($i= 0; $i<   count($csv_array); $i++) {
      $zeile=   implode($csv_array[$i]) . "\r\n";
      fputs($fp, $zeile);
    }
   }

  csv_write($eQLB, $fp);
fclose( $fp );
?>
<html><body onload="window.setTimeout('history.back()', 0);"></body></html>

Vielen dank schon mal im vorraus

Wolle
 
Zuletzt bearbeitet:
Das ganze soll für den IE6 Laufen andere Browser werden erstmal nicht verwendet, Crosbrowser Fähigkeiten währen natürlich super.
Das Betriebssystem ist WinXP
Für PHP benutz ich eine Portable version des xampp mit Apache-Server
 
Weswegen ich frage:
Wenn du die Sache ohne Datenbank benötigst, könnte man auch auf den Webserver verzichten...es scheint ja, als ob du diesen nur benutzt, um die Daten irgendwie abzuspeichern.

Dies geht aber auch ohne Webserver, über den WindowsScriptingHost kannst du per JScript auch Dateien lesen/schreiben.

Da der IE dies natürlich aus Sicherheitsgründen nicht macht, könntest du stattdessen eine HTML-Application nutzen, dort kannst du das Lesen/Schreiben ohne Sicherheitsabfrage vornehmen(keine Angst, dass du mit HTA etwas neues lernen musst...es reicht deiner HTML-Seite die Endung *.hta zu geben, dann wird sie mit dem richtigen Programm geöffnet...der Rest kann so bleiben, wie er ist).

Ich hab mal ein Beispiel paratgemacht, du kannst damit Daten lesen & Speichern,
sollte unter XP,Vista und WIN7 laufen(andere hab ich nicht getestet).

Einfach die index.hta im ZIP öffnen.
Du wirst dann gefragt, ob ein Ordner und eine Datei erstellt werden soll...dann kann es losgehen.


Informationen zum FileSystemObject(das ermöglicht dir den Skript-Zugriff aufs WIN-Dateisystem) findest du hier: http://msdn.microsoft.com/en-us/library/6kxy1a51(VS.85).aspx

Falls du fragen zum Skript hast, frag :) (ich war zu faul es zu kommentieren :-( )
 

Anhänge

  • fso_io.zip
    7,5 KB · Aufrufe: 13
Danke, habe das alles jetzt aber etwas anders gelöst :D

write.php
PHP:
<?php


$connection=mysql_connect('localhost','root', '') or die("Verbindungsversuch fehlgeschlagen");

$abfrage_punkt_vorhanden = ("INSERT INTO `test`.`notes` VALUES (NULL,".$_GET['text'].")");
	mysql_query ($abfrage_punkt_vorhanden);


?>
<html><body onload="window.setTimeout('history.back()', 0);"></body></html>

Und hier die get.php nur die beiden, die get.php erstellt aus den DB einträgen eine seite. Die DB, test mit der tabelle notes und den Zeilen ID (autoincrement) TEXT, WIDTH, HEIGHT, LEFT, TOP
der codeteil kommt anstelle von

notes.AddNote(note1);
notes.AddNote(note2);
notes.AddNote(note3);



PHP:
<?php
				$connection=mysql_connect('localhost','root', '') or die("Verbindungsversuch fehlgeschlagen");

        		$abfrage_daten = mysql_query ("SELECT * FROM `test`.`notes`");


				while ($datensatz_daten=mysql_fetch_assoc($abfrage_daten)) {

				echo "var note".$datensatz_daten['id']." = new PhotoNote(".$datensatz_daten['text']."',".$datensatz_daten['id'].", new PhotoNoteRect( ".$datensatz_daten['width'].",".$datensatz_daten['height'].",".$datensatz_daten['left'].",".$datensatz_daten['top']."));\n";
				echo "note".$datensatz_daten['id'].".onsave = function (note) {return 1; };\n";
				echo "note".$datensatz_daten['id'].".ondelete = function (note) {return true; };\n";
				echo "notes.AddNote(note".$datensatz_daten['id'].");\n\n";



				}

?>

vielen dank.
 
Zuletzt bearbeitet:
Zurück