webForumDet fria alternativet

Artikelfunktion med möjlighet att infoga bild

36 svar · 2 243 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 597 inlägg
#1

Hej!

Jag har lite funderingar vad gäller implementeringen av en "infoga-bild-funktion" i mitt artikelgränssnitt.

Användare kan på ett enkelt sätt kunna skriva artiklar. Nu har jag kommit så långt att det är dags att göra infoga-bild-fuinktionen så att man enkelt kan lägga in en bild på valfritt ställe i texten.

Mitt tankesätt är som följer. Varje användare har en profil. Kopplat till den profilen finns en avdelning som heter "Mina bilder". Hit skall användaren kunna ladda upp sina bilder. När användaren senare skriver en artikel är det enbart dessa som användaren skall kunna använda och infoga i en artikel.

Vet inte vad som är bästa lösningen för att få detta att fungera. En tanke jag har är att det vid sidan om artikelformuläret finns en länk med "infoga bild". När användaren trycker på den så kommer det upp ett pop-up-fönster med samtliga bilder som finns i "Mina bilder". Sedan skall användaren kunna välja en bild varpå fönstret stängs och bildID för vald bild klistras in i artikelformulärets textarea-del på följande sätt:

[IMG]3[/IMG]

Som jag har kodat nu läser jag av den taggen med ett pregmatch uttryck som hämtar ut sökväg, bildtext mm från databasen och skickar tillbaka resultatet till artikelutskriften.

Om det är någon som gar gjort något liknande tidigare eller har någon annan smart lösning än den jag presenterade vore det kul att få ta del av den :)

lillebrorMedlem sedan apr. 20041 597 inlägg
#2

Inser att denna tråd förmodligen är ämnad för Javascript/DHTML-forumet och inte PHP. Går det att få den flyttad dit?!

NiklassonMedlem sedan nov. 2000857 inlägg
#3

Visst går det, men det snabbaste sättet är att rapportera inlägget.

Flyttad från PHP..

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

Popupfönstret:

<script type="text/javascript">

function f(id){
  if (window.opener){
    var e = window.opener.document.forms["namn_på_formulär"].elements["namn_på_textarea"];

    e.value += "[IMG]" + id + "[/IMG]";

    window.close();
  }
}

</script>

<img src="bild1.png" onclick="f('bild-id_1')">
<img src="bild1.png" onclick="f('bild-id_2')">
<img src="bild1.png" onclick="f('bild-id_3')">
lillebrorMedlem sedan apr. 20041 597 inlägg
#5

Peter S skrev:

Popupfönstret:

<script type="text/javascript">

function f(id){
  if (window.opener){
    var e = window.opener.document.forms["namn_på_formulär"].elements["namn_på_textarea"];

    e.value += "[IMG]" + id + "[/IMG]";

    window.close();
  }
}

</script>

<img src="bild1.png" onclick="f('bild-id_1')">
<img src="bild1.png" onclick="f('bild-id_2')">
<img src="bild1.png" onclick="f('bild-id_3')">

Jag blev bönhörd - Precis vad jag sökte :) Tack Peter!

Om jag förstår det hela rätt så är detta koden jag har i mitt pop-up-fönster. Koden känner alltså av formulär även om det inte förekommer i det aktiva fönstret?

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

Yes!

lillebrorMedlem sedan apr. 20041 597 inlägg
#7

Vet inte om jag är seg i huvudet ikväll men jag får inte ovanstående kod att fungera när jag ska till att klicka på en av bilderna i pop-up-rutan. Det dyker inte upp någoit tecken i mitt underliggande formulär. Jag har dubbelkollat namnet på formuläret samt för textarean och det stämmer :OO

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

Bifogar ett exempel.

lillebrorMedlem sedan apr. 20041 597 inlägg
#9

Nu fick jag det att fungera så att img-taggen åker in i formuläret. Däremot vill inte popuen öppnas när jag trycker på den så som du skrev i ditt exempel.

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

Om du döper om de två senast bifogade filerna till *.html och testkör exemplet, fungerar det då inte menar du?

lillebrorMedlem sedan apr. 20041 597 inlägg
#11

Jag hade en popup-kod tidigare fast den var mycket krångligare än den du hade så jag valde att använda din. Nu får jag inte popupfönstret att öppnas när jag väljer länken infoga bild.

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

Får du något felmeddelande? Om inte får du posta koden.

lillebrorMedlem sedan apr. 20041 597 inlägg
#13

Kod ur writearticle.php:

<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Text:</td>
			<td width="52%"><textarea class="textarea" cols="50" rows="10" name="article"><?php if($_POST['article'] <> '') { echo stripslashes(htmlentities($_POST['article'])); } ?></textarea></td>
			<td style="padding-left: 5px; font-weight: bold; vertical-align: top;"><a href="javascript:void(window.open('articlepictures.php','','height=800,width=750'))">Popup</a></td>
		</tr>

Kod ur articlepictures.php:

<td>
			<?php while($picture = mysql_fetch_array($RSobj)) { ?>
			<img src="<? echo $picture['path'].$picture['filename']; ?>" onclick="f('1')"><br />
			<?php } ?>
			</td>
Peter SMedlem sedan dec. 20025 483 inlägg
#14

Är det möjligt för dig att bifoga HTML-koden i writearticle.php för en annan att testa?

lillebrorMedlem sedan apr. 20041 597 inlägg
#15

Visst! :)

<div id="content">

<script language="JavaScript" src="../inc/function.js"></script>

<?php
if(trim($_POST['createarticle']) == 'Skapa artikeln') {
	$threaddata['articlesubject'] = stripslashes(htmlentities(trim($_POST['articlesubject'])));
	$threaddata['article'] = stripslashes(htmlentities(trim($_POST['article'])));
	$threaddata['posterID'] = $_SESSION["uid"];
	$threaddata['ip'] = getenv("REMOTE_ADDR");	
	
# Uppdaterar användarprofilen i databasen ############################

	$sqlInsert = "INSERT INTO tblarticle (date_time, headline, content, published, memberID) VALUES (now(), '$threaddata[articlesubject]', '$threaddata[article]', 1, '$threaddata[posterID]')";

	$RSobj = mysql_query($sqlInsert) or die (mysql_error());
	
	echo "<script Language='JavaScript'>location.href=('myprofile.php');</script>";
	}
?>

	<?php 
	# Lagrar information om användarens aktivitet. Skrivs till tblOnline för presentation i online.php. ##########################################
	$activity = "Skriver artikel.";
	$sqlUpdate = "UPDATE tblonline SET date_time = now(), forumID = 'NULL', activity = '".$activity."' WHERE sessionID = '".session_id()."'";
	mysql_query($sqlUpdate) or die (mysql_error());	
	?>

	<div id="content_two_columns">
	<h1 class="dotted_line">Skriv artikel</h1>
	
	<?php if($_POST['previewarticle'] == 'Förhandsgranskning') { ?>
	<table width="100%" cellspacing="0px" cellpadding="0px" style="background-color: #888; border-top: 1px solid #888; border-right: 1px solid #888; border-left: 1px solid #888;">
		<tr style="background-image: url(/picture/page_bar.jpg); color: #000;">
			<td width="100%" height="23px" style="padding-left: 5px; text-align: left;"><span style="font-size: 10px; font-weight: bold;">Förhandsgranskning av artikel</span></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="100%" style="padding: 5px 0 3px 5px; font-weight: bold; font-size: 10px;"><?php echo stripslashes(htmlentities($_POST['articlesubject'])); ?></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="100%" style="padding-left: 5px; vertical-align: top;"><?php echo stripslashes(htmlentities(nl2br($_POST['article']))); ?></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="100%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
		</tr>
	</table>
	<?php } ?>

	<form action="myprofile_writearticle.php" method="post" name="writearticle" onSubmit="return validateNewThread(this)">
    	<table width="100%" cellspacing="0px" cellpadding="0px" style="background-color: #888; border: 1px solid #888;" border="0px">
		<tr style="background-image: url(/picture/page_bar.jpg); background-color: #0E3171; color: #000;">
			<td colspan="4" width="100%" height="23px" style="padding-left: 5px; text-align: left; border-bottom: 0px solid #888;"><span style="font-size: 10px; font-weight: bold;">Skriv artikel</span></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Rubrik:</td>
			<td colspan="3" width="85%"><input class="text" type="text" value="<?php if($_POST['articlesubject'] <> '') { echo stripslashes(htmlentities($_POST['articlesubject'])); } ?>" name="articlesubject" size="30" maxlength="255">&nbsp;&nbsp;Relaterat till artikeln</td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Text:</td>
			<td width="52%"><textarea class="textarea" cols="50" rows="10" name="article"><?php if($_POST['article'] <> '') { echo stripslashes(htmlentities($_POST['article'])); } ?></textarea></td>
			<td style="padding-left: 5px; font-weight: bold; vertical-align: top;"><a href="javascript:void(window.open('articlepictures.php','','height=800,width=750'))">Popup</a></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%"><input class="buttons" name="createarticle" type="submit" value="Skapa artikeln" />&nbsp;<input class="buttons" name="previewarticle" type="submit" value="Förhandsgranskning" /></td>
		</tr>
		<tr style="background-color: #F1EEE9;">
			<td width="15%" style="padding-left: 5px; font-weight: bold;">&nbsp;</td>
			<td colspan="3" width="85%">&nbsp;</td>
		</tr>
	</table>
	</form>
    	</div>
	
    
</div>
Peter SMedlem sedan dec. 20025 483 inlägg
#16

Den koden fungerar utmärkt för mig. Fönstret poppar upp som på beställning! :)

lillebrorMedlem sedan apr. 20041 597 inlägg
#17

Kan det ha att göra med att jag kör Firefox?! :OO

Det fungerade inte i IE heller nu när jag prövade :(

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

lillebror skrev:

Kan det ha att göra med att jag kör Firefox?!

Det gör jag också. ;)

lillebrorMedlem sedan apr. 20041 597 inlägg
#19

Då är det väl SBS som vanligt :e

lillebrorMedlem sedan apr. 20041 597 inlägg
#20

Det är inte så att jag har en funktion någonstans som ev. blockerar alla popups? hmmm...

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