webForumDet fria alternativet

BB-kod och smilies (insert at cursor)?

2 svar · 315 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 274 inlägg
#1

Använder följande kod för att auto infoga en smiley eller en bb-kod.
Det fungerar sådär.. dock så hamnar alla smilies och koder i slutet av texten, istället för vid "cursorn". Hur löser jag det? (se nästa inlägg.)

Skulle även vilja veta hur jag ändrar i koden, så att ett markerat ord blir omslutet med den valda bb-koden.

GuldstrandMedlem sedan juli 20041 274 inlägg
#2
function textbbcode($form,$name,$content="") {
?>

<script language=javascript>
function SmileIT(smile,form,text){
document.forms[form].elements[text].value = document.forms[form].elements[text].value+" "+smile+" ";
document.forms[form].elements[text].focus();
}

function PopMoreSmiles(form,name) {
link='smilies.php?form='+form+'&text='+name
newWin=window.open(link,'moresmile','height=500,width=450,resizable=no,scrollbars=yes');
if (window.focus) {newWin.focus()}
}

function PopMoreTags(form,name) {
link='moretags.php?form='+form+'&text='+name
newWin=window.open(link,'moresmile','height=500,width=775,resizable=no,scrollbars=yes');
if (window.focus) {newWin.focus()}
}

function BBTag(tag,s,text,form){
switch(tag)
{
case '[RED]':
if (document.forms[form].elements[s].value=="RED ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=red]";
document.forms[form].elements[s].value="RED*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="RED ";
}
break;
case '[ORANGE]':
if (document.forms[form].elements[s].value=="ORANGE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=orange]";
document.forms[form].elements[s].value="ORANGE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="ORANGE ";
}
break;
case '[YELLOW]':
if (document.forms[form].elements[s].value=="YELLOW ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=yellow]";
document.forms[form].elements[s].value="YELLOW*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="YELLOW ";
}
break;
case '[LIME GREEN]':
if (document.forms[form].elements[s].value=="LIME GREEN ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=green]";
document.forms[form].elements[s].value="LIME GREEN*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="LIME GREEN ";
}
break;
case '[PURPLE]':
if (document.forms[form].elements[s].value=="PURPLE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=purple]";
document.forms[form].elements[s].value="PURPLE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="PURPLE ";
}
break;
case '[PINK]':
if (document.forms[form].elements[s].value=="PINK ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=pink]";
document.forms[form].elements[s].value="PINK*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="PINK ";
}
break;
case '[WHITE]':
if (document.forms[form].elements[s].value=="WHITE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[color=white]";
document.forms[form].elements[s].value="WHITE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/color]";
document.forms[form].elements[s].value="WHITE ";
}
break;
case '[QUOTE]':
if (document.forms[form].elements[s].value=="QUOTE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[quote]";
document.forms[form].elements[s].value="QUOTE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/quote]";
document.forms[form].elements[s].value="QTE ";
}
break;
case '[IMAGE]':
if (document.forms[form].elements[s].value=="IMAGE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[img]";
document.forms[form].elements[s].value="IMAGE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/img]";
document.forms[form].elements[s].value="IMAGE ";
}
break;
case '[URL]':
if (document.forms[form].elements[s].value=="URL ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[url]";
document.forms[form].elements[s].value="URL*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/url]";
document.forms[form].elements[s].value="URL ";
}
break;
case '[*]':
if (document.forms[form].elements[s].value=="LIST ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[*]";
}
break;
case '[BOLD]':
if (document.forms[form].elements[s].value=="BOLD ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[b]";
document.forms[form].elements[s].value="BOLD*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/b]";
document.forms[form].elements[s].value="BOLD ";
}
break;
case '[ITALIC]':
if (document.forms[form].elements[s].value=="ITALIC ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[i]";
document.forms[form].elements[s].value="ITALIC*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/i]";
document.forms[form].elements[s].value="ITALIC ";
}
break;
case '[UNDERLINE]':
if (document.forms[form].elements[s].value=="UNDERLINE ")
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[u]";
document.forms[form].elements[s].value="UNDERLINE*";
}
else
{
document.forms[form].elements[text].value = document.forms[form].elements[text].value+"[/u]";
document.forms[form].elements[s].value="UNDERLINE ";
}
break;
}
document.forms[form].elements[text].focus();
}

</script>

<table width="100%" style='margin: 3px' cellpadding="0" cellspacing="0">
<tr>
<td class=embedded colspan=2>
<table cellpadding="2" cellspacing="1">
<tr>
<!-- <td width="100">BBCODE TAGS</td>-->
<td class=embedded><input class=btn style="font-weight: bold;" type="button" name="bold" value="BOLD " onclick="javascript: BBTag('[BOLD]','bold','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn style="font-style: italic;" type="button" name="italic" value="ITALIC " onclick="javascript: BBTag('[ITALIC]','italic','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn style="text-decoration: underline;" type="button" name="underline" value="UNDERLINE " onclick="javascript: BBTag('[UNDERLINE]','underline','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="li" value="LIST " onclick="javascript: BBTag('[*]','li','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="quote" value="QUOTE " onclick="javascript: BBTag('[QUOTE]','quote','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="url" value="URL " onclick="javascript: BBTag('[URL]','url','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="img" value="IMAGE " onclick="javascript: BBTag('[IMAGE]','img','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
</tr>

<tr>
<!-- <td width="100">FONT COLOR</td>-->
<td class=embedded><input class=btn type="button" name="red" value="RED " onclick="javascript: BBTag('[RED]','red','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="orange" value="ORANGE " onclick="javascript: BBTag('[ORANGE]','orange','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="yellow" value="YELLOW " onclick="javascript: BBTag('[YELLOW]','yellow','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="lime" value="LIME GREEN " onclick="javascript: BBTag('[LIME GREEN]','lime','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="purple" value="PURPLE " onclick="javascript: BBTag('[PURPLE]','purple','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="pink" value="PINK " onclick="javascript: BBTag('[PINK]','pink','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
<td class=embedded><input class=btn type="button" name="white" value="WHITE " onclick="javascript: BBTag('[WHITE]','white','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>

</tr>
</table>
</td>
</tr>
<tr>
<td class=embedded>
<textarea name="<?php echo $name; ?>" rows="20" cols="40"><?php echo $content; ?></textarea>
</td>
<td class=embedded>
<table cellpadding="3" cellspacing="1">
<?

global $smilies, $BASEURL;
while ((list($code, $url) = each($smilies)) && $count<21) {
if ($count % 3==0)
print("<tr>");

print("\n<td class=embedded style='padding: 3px; margin: 2px'><a href=\"javascript: SmileIT('".str_replace("'","\'",$code)."','$form','$name')\"><img border=0 src=pic/smilies/".$url."></a></td>");
$count++;

if ($count % 3==0)
print("</tr>");
}
?>
</table>
<center><a href="javascript: PopMoreSmiles('<?php echo $form; ?>','<?php echo $name; ?>')"><?php echo Smilies;?></a></center>
</td>
</tr>
</table>
<?
}
GuldstrandMedlem sedan juli 20041 274 inlägg
#3

Har detta nu, och det verkar fungera bättre.

function textbbcode($form,$name,$content="") {
?>

<script language=javascript>
function insertAtCursor(myField, myValue) {
//IE support
  if (document.selection) {
    myField.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
  }

//MOZILLA/NETSCAPE support
  else if (myField.selectionStart || myField.selectionStart == '0') {
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
    myField.selectionEnd = startPos + myValue.length;
  } else {
    myField.value += myValue;
  }
  myField.focus();
}

// calling the function
function SmileIT(smile,form,text){
    insertAtCursor(document.forms[form].elements[text], smile)
}

function PopMoreSmiles(form,name) {
         link='moresmiles.php?form='+form+'&text='+name
         newWin=window.open(link,'moresmile','height=500,width=450,resizable=no,scrollbars=yes');
         if (window.focus) {newWin.focus()}
}

function PopMoreTags(form,name) {
         link='moretags.php?form='+form+'&text='+name
         newWin=window.open(link,'moresmile','height=500,width=775,resizable=no,scrollbars=yes');
         if (window.focus) {newWin.focus()}
}

function BBTag(tag,s,text,form){
  var df  = document.forms[form].elements[s];
  var ele = document.forms[form].elements[text];
  var tval;
  var ttag;
  switch(tag) {
    case '[quote]':
            tval = "QUOTE ";
            ttag  = "[/quote]";
            if(df.value == "QUOTE ") {
              tval = "QUOTE*";
              ttag  = "[quote]";
            }
            break;
    case '[img]':
            tval = "IMG ";
            ttag = "[/img]";
            if(df.value == "IMG ") {
              tval = "IMG*";
              ttag  = "[img]";
            }
            break;

    case '[url]':
            tval = "URL ";
            ttag = "[/url]";
            if(df.value == "URL ") {
              tval = "URL*";
              ttag  = "[url]";
            }
            break;

    case '[*]':
            tval= "List ";
                        if(df.value == "List ") ttag  = "[*]";
            break;

            insertAtCursor(ele, tag);
            df.elements[s].value = tval;
            break;

    case '[hr]':
                        tval= "Hr ";
                        if(df.value =="HR "){
                            ttag="[HR]";
            }
                        insertAtCursor(ele,tag);
            df.elements[s].value=tval;
            break;

    case '[center]':    tval= "Center";
            ttag= "[/center]";
            if(df.value == "Center "){
                    tval = "Center* ";
                 ttag="[center]";
                }
                     
                   
            break;            

    case '[b]':
            tval = "B ";
            ttag = "[/b]";
            if(df.value == "B ") {
              tval = "B*";
              ttag  = "[b]";
            }
            break;

    case '[i]':
            tval = "I ";
            ttag = "[/i]";
            if(df.value == "I ") {
              tval = "I*";
              ttag  = "[i]";
            }
            break;

    case '[u]':
            tval = "U ";
            ttag = "[/u]";
            if(df.value == "U ") {
              tval = "U*";
              ttag  = "[u]";
            }
            break;
  }
  if(tval!="") df.value = tval;
  if(ttag!="") insertAtCursor(ele, ttag);
}

</script>

  <table width="100%" style='margin: 3px' cellpadding="0" cellspacing="0">
    <tr>
      <td class=embedded colspan=2>
      <table cellpadding="2" cellspacing="1">
      <tr>
      <td class=embedded><input style="font-weight: bold;" type="button" name="bold" value="B " onclick="javascript: BBTag('[b]','bold','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input style="font-style: italic;" type="button" name="italic" value="I " onclick="javascript: BBTag('[i]','italic','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input style="text-decoration: underline;" type="button" name="underline" value="U " onclick="javascript: BBTag('[u]','underline','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="li" value="List " onclick="javascript: BBTag('[*]','li','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="quote" value="QUOTE " onclick="javascript: BBTag('[quote]','quote','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="url" value="URL " onclick="javascript: BBTag('[url]','url','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="img" value="IMG " onclick="javascript: BBTag('[img]','img','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="hr" value="HR " onclick="javascript: BBTag('[hr]','hr','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded><input type="button" name="center" value="Center " onclick="javascript: BBTag('[center]','center','<?php echo $name; ?>','<?php echo $form; ?>')" /></td>
      <td class=embedded>&nbsp;<a href="javascript: PopMoreTags('<?php echo $form; ?>','<?php echo $name; ?>')"><?php echo MORE_TAGS;?></a></td>
      </tr>
      </table>
      </td>
    </tr>
    <tr>
      <td class=embedded>
      <textarea name="<?=$name?>" rows="15" cols="40"><?=$content?></textarea>
      </td>
      <td class=embedded>
      <table cellpadding="4" cellspacing="1">
      <?

      global $smilies, $BASEURL;
      while ((list($code, $url) = each($smilies)) && $count<18) {
         if ($count % 3==0)
            print("<tr>");

            print("\n<td class=embedded style='padding: 3px; margin: 2px'><a href=\"javascript: SmileIT('".str_replace("'","\'",$code)."','$form','$name')\"><img border=0 src=".$GLOBALS['pic_base_url']."/smilies/".$url."></a></td>");
            $count++;

         if ($count % 3==0)
            print("</tr>");
      }
      ?>
      </table>
      <center><a href="javascript: PopMoreSmiles('<?php echo $form; ?>','<?php echo $name; ?>')">Fler smilies</a></center>
      </td>
    </tr>
  </table>
<?
}

Har dock inte lyckats att "omsluta" ett markerat ord (eller text) med någon bb-kod.

Genererad på 394 ms · cache AV · v20260730165559-full.f96bc7eb