webForumDet fria alternativet

Lägg in bildens namn?

16 svar · 628 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Hejsan,

Jag håller på med en WYSIWYG funktion (som jag laddat ner) till ett artikelscript. Mitt förra bild-script (som Peter S så snällt hjälpte mig med) funkade prima. Men nu går det inte längre att använda funktionen för att infoga bilden i WYSIWYG-textfältet. Just nu finns det två funktioner som ska infoga bilder i textfältet. En av dem behöver bara funka så klart :)

Själv popup-fönstret med bilderna i:

		echo "<td width=100px height=100px>";
				echo "<input type=\"text\" name=\"imageurl\" value=\"$name\">";
				echo "<input type=\"submit\" value=\"  Submit  \" onClick=\"insertImage();\" style=\"font-size: 12px;\" ><br/>";
				echo "$name - <a href=gallery.php?page=erase&id=$id&fil=$name onClick=\"return confirm('Vill du verkligen ta bort bilden?');\">Ta bort</a><br/>";
				echo "<a href=\"javascript:void f('<img src=img/$name>')\"><img src=\"../img/uploads/$name\" width=\"100px\" height=\"100px\" title=\"Uppladdad: $date - $description\" border=0></a>";
				echo "</td>";

Och så JavaScripten i headern:

<script language="JavaScript" type="text/javascript">
var qsParm = new Array();

/* ---------------------------------------------------------------------- *\
  Function    : retrieveWYSIWYG()
  Description : Retrieves the textarea ID for which the image will be inserted into.
\* ---------------------------------------------------------------------- */
function retrieveWYSIWYG() {
  var query = window.location.search.substring(1);
  var parms = query.split('&');
  for (var i=0; i<parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
       var key = parms[i].substring(0,pos);
       var val = parms[i].substring(pos+1);
       qsParm[key] = val;
    }
  }
}

/* ---------------------------------------------------------------------- *\
  Function    : insertImage()
  Description : Inserts image into the WYSIWYG.
\* ---------------------------------------------------------------------- */
function insertImage() {
  var image = '<img src="' + document.getElementById('imageurl').value + '">';
  window.opener.insertHTML(image, qsParm['wysiwyg']);
  window.close();
}

</script>

<script language="JavaScript">
function f(str)
{
	window.opener.document.forms['article'].elements['article_text'].value += str;
	window.close();
}
</script>
Peter SMedlem sedan dec. 20025 483 inlägg
#2

Lägg till id="imageurl" för ditt textfält.

Om det inte fungerar efter det: Vad händer då du trycker på knappen "Submit"? Fås något felmeddelande?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

Tjena, jag testade att lägga till id="imageurl" i textfältet. Men det händer ingenting (som vanligt). Man klickar, och inget händer.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Hur ser koden ut i popupfönstret så som webbläsaren ser den?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#5

Den ser ut så här:

<td width=100px height=100px>
	<input type="text" name="imageurl" id="imageurl" value="Aqua_Revamped.png">
	<input type="submit" value="  Submit  " onClick="insertImage();" style="font-size: 12px;" ><br/>
	Aqua_Revamped.png - <a href=gallery.php?page=erase&id=22&fil=Aqua_Revamped.png onClick="return confirm('Vill du verkligen ta bort bilden?');">Ta bort</a><br/>
	<a href="javascript:void f('<img src=img/Aqua_Revamped.png>')"><img src="../img/uploads/Aqua_Revamped.png" width="100px" height="100px" title="Uppladdad: 2007-01-11 - Snygg dator." border=0></a>
</td>
<td width=100px height=100px>
	<input type="text" name="imageurl" id="imageurl" value="iMac_Black.png">
	<input type="submit" value="  Submit  " onClick="insertImage();" style="font-size: 12px;" ><br/>
	iMac_Black.png - <a href=gallery.php?page=erase&id=21&fil=iMac_Black.png onClick="return confirm('Vill du verkligen ta bort bilden?');">Ta bort</a><br/>
	<a href="javascript:void f('<img src=img/iMac_Black.png>')"><img src="../img/uploads/iMac_Black.png" width="100px" height="100px" title="Uppladdad: 2007-01-10 - Imac" border=0></a>
</td>
Peter SMedlem sedan dec. 20025 483 inlägg
#6

Du har två fält med samma id, vilket inte är lagligt ;)

Byt namn och id på en av dem och testa igen. Fungerar det fortfarande inte? Byt type="submit" till type="button".

streetrobbanMedlem sedan jan. 20011 140 inlägg
#7

Hmm, jag tog bort den ena bilden (så bara en är kvar = ett id fält), testade också med att byta ut submit mot button. Men det fungerade inte i några fall. Förstår inte riktigt varför det inte vill fungera, har kopierat mycket kod från den medföljande funktionen för att infoga bilder.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#8

Såhär ser orginalfunktionen ut:

function insertImage() {
  var image = '<img src="' + document.getElementById('imageurl').value + '" alt="' + document.getElementById('alt').value + '" alignment="' + document.getElementById('alignment').value + '" border="' + document.getElementById('borderThickness').value + '" hspace="' + document.getElementById('horizontal').value + '" vspace="' + document.getElementById('vertical').value + '">';
  window.opener.insertHTML(image, qsParm['wysiwyg']);
  window.close();
}

Jag har tagit bort lite så den ser ut så här:

function insertImage() {
  var image = '<img src="' + document.getElementById('imageurl').value + '">';
  window.opener.insertHTML(image, qsParm['wysiwyg']);
  window.close();
}
Peter SMedlem sedan dec. 20025 483 inlägg
#9

När anropar du retrieveWYSIWYG()?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#10
<script language="JavaScript" type="text/javascript">
var qsParm = new Array();

/* ---------------------------------------------------------------------- *\
  Function    : retrieveWYSIWYG()
  Description : Retrieves the textarea ID for which the image will be inserted into.
\* ---------------------------------------------------------------------- */
function retrieveWYSIWYG() {
  var query = window.location.search.substring(1);
  var parms = query.split('&');
  for (var i=0; i<parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
       var key = parms[i].substring(0,pos);
       var val = parms[i].substring(pos+1);
       qsParm[key] = val;
    }
  }
}

/* ---------------------------------------------------------------------- *\
  Function    : insertImage()
  Description : Inserts image into the WYSIWYG.
\* ---------------------------------------------------------------------- */
function insertImage() {
  var image = '<img src="' + document.getElementById('imageurl').value + '">';
  window.opener.insertHTML(image, qsParm['wysiwyg']);
  window.close();
}
</script>
streetrobbanMedlem sedan jan. 20011 140 inlägg
#11

Jag tittade i javascript-filen "wysiwyg.js" som inlkuderas för att generera wysiwyg funktionen på textfältet (där även knappen för att öppna pop-up fönstret skapas). Och länkarna för att öppna diverse fönster ser ut så här:

		// InsertImage
	  else if (id == "InsertImage") {
      	    window.open('gallery.php?page=images' + n,'popup','location=0,status=0,scrollbars=1,resizable=0,width=700,height=500');
	  }
	  
		// InsertTable
	  else if (id == "InsertTable") {
	    window.open(popupsDir + 'create_table.html?wysiwyg=' + n,'popup','location=0,status=0,scrollbars=0,resizable=0,width=400,height=360');
	  }

Jag kanske måste skicka med värdet wysiwyg= som i den andra länken?

streetrobbanMedlem sedan jan. 20011 140 inlägg
#12

Aha, jag använde mig av den här koden istället, och då fick jag in en trasig bild i alla fall:

		// InsertImage
	  else if (id == "InsertImage") {
      	    window.open('gallery.php?page=images&wysiwyg=' + n,'popup','location=0,status=0,scrollbars=1,resizable=0,width=700,height=500');
	  }
Peter SMedlem sedan dec. 20025 483 inlägg
#13

Men var anropas retrieveWYSIWYG()? Det där är ju bara definitionen av den; någonstans måste den anropas för att fylla qsParm[].

Frågan är vad insertHTML() vill ha som argument nummer två.

Red./ Jaha, det fungerar, då så ;)

streetrobbanMedlem sedan jan. 20011 140 inlägg
#14

Nu funkar det, när man kan välja mellan en bild :) Nu ska jag bara få det att funka när man har fler bilder inlagda. Och det är ju det där med id="imageurl".

R = Jag lade till imageurl = []; i JavaScript taggen, då funkade det en gång. Men sedan går det inte att infoga bilder mer :)

R2 = Den lägger bara in namnet på den första bilden hela tiden.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#15

Varför går det inte bara att använda id=imageurl[] ?

Peter SMedlem sedan dec. 20025 483 inlägg
#16

Du kan ju döpa dem till imageurl1, imageurl2, o.s.v. Sedan

function insertImage(imgid) {
  var image = '<img src="' + document.getElementById(imgid).value + '">';
  window.opener.insertHTML(image, qsParm['wysiwyg']);
  window.close();
}

insertImage('imageurl1');
insertImage('imageurl2');
streetrobbanMedlem sedan jan. 20011 140 inlägg
#17

Mja det går ju inte, varje bild/textfält etc loopas fram från en databas. Så man måste ju göra en array på något sätt.

R = Jag lade till en siffra efter namnet imageurl som uppdateras+1 efter varje loop. Så nu funkar det :)

Tack för hjälpen! Jag vet inte vilket svar jag ska acceptera... men jag tar nått!

138 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)