webForumDet fria alternativet

Wysiwyg-editor för webpubliceringsverktyg????!?!!?

36 svar · 1 434 visningar · startad av brw

brwMedlem sedan juli 2000619 inlägg
#1

Jag har lite funderingar om hur man ska lösa tex. fet kursiv osv typ storlekar mm.. när man har gjort ett litet webpubliceringsverktyg. Man vill ju inte säga åt kunden att den ska använda lite "enklare" HTML-koder när den ska lägga in text osv. på hemsidan i admingränssnittet.

Då har jag hört att det skall finnas nå editorer som man kan implementera på hemsidan i admingränssnittet där det tydligen blir som en liten ordbehandlare med de vanliga knapparna för justering och stiler mm som kallas "WYSIWYG nånting" !?!?!

Nån som vet något om detta och isf om det finns några sådana som är gratis?

Mycket tacksam för svar!!

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 09 sep 2001]

MorphMedlem sedan juli 2000534 inlägg
#2

Jag har skrivit ett par stycken sådana WYSIWYG-editorer. De fungerar dock bara i IE.

En bra sida om du vill göra din egen: http://www.siteexperts.com/tips/contents/ts12/page1.asp

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

brwMedlem sedan juli 2000619 inlägg
#3

Jo har för mig att det var något som inte var riktigt bra.. men de flesta kör eller har iaf. tillgång till explorer.

Du har ingen som jag kan få kika på? eller rentav få? ;)

Red:
Vill gärna ha knapparna ovanför formuläret så att det ser ut som i word typ.

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 09 sep 2001]

MorphMedlem sedan juli 2000534 inlägg
#4

Du har ingen som jag kan få kika på? eller rentav få?

Humm, det är nog inte omöjligt. Jag ska kolla lite i kod-gömmorna på måndag.

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

brwMedlem sedan juli 2000619 inlägg
#5

skulle vara schysst som fan om du hade nån man kan få.

------------------
Ingenting är omöjligt, bara en utmaning.

MorphMedlem sedan juli 2000534 inlägg
#6

Ok, här kommer en "light-version" med de mest grundläggande funktionerna.

Följande kod slänger du in i en .html fil som du döper till nåt lämpligt, typ editor.html.

<STYLE>
  BODY {margin: 0px; padding: 0px; border: none}
  IFRAME {width: 100%; height: 100%; border: none;}
</STYLE>
<SCRIPT>
var strEditMode="Raw HTML"

function setFocus() {
  textEdit.focus()
}

function execCommand(strCommand, blnGUI, strArgument) {
  if (strEditMode=="Raw HTML") {
    var edit = textEdit.document.selection.createRange()
  if (strArgument==null)
    edit.execCommand(strCommand, blnGUI)
  else
    edit.execCommand(strCommand, blnGUI, strArgument)
  edit.select()
  textEdit.focus()
  }
}

function initEditor(text) {
  textEdit.document.designMode="On"
  textEdit.document.open()
  textEdit.document.write(text)
  textEdit.document.close()
  textEdit.document.body.style.fontFamily = "Verdana"
  textEdit.document.body.style.fontSize ="12px"
  textEdit.focus()
}

function swapModes() {
  if (strEditMode=="Raw HTML") {
    textEdit.document.body.innerText = textEdit.document.body.innerHTML
    textEdit.document.body.style.fontFamily = "monospace"
    textEdit.document.body.style.fontSize = "10pt"
    strEditMode="WYSIWYG"
  }
  else {
    textEdit.document.body.innerHTML = textEdit.document.body.innerText
    textEdit.document.body.style.fontFamily = "Verdana"
    textEdit.document.body.style.fontSize ="12px"
    strEditMode="Raw HTML"
  }
  textEdit.focus()
  var s = textEdit.document.body.createTextRange()
  s.collapse(false)
  s.select()
}
//window.onload = initEditor
</SCRIPT>
<BODY SCROLL="no" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<IFRAME ID="textEdit" frameborder="0" marginwidth="2" marginheight="2"></IFRAME>

Denna fil blir en liten "scriptlet" som du sedan länkar in på sidan där du vill placera editorn. Du länkar in den i en vanlig IFRAME:

<IFRAME id="edit" src="editor.html" width="400" height="250"></IFRAME>

Självklart kan du ha egna värden på width & height.

Sedan behövs lite javascript på samma sida som initierar toolbaren & editorn samt får det hela att funka.

<SCRIPT language="JavaScript">
function initToolbar() {
text = ''
objToolbar = document.all.toolbar
objToolbar._editor = window.frames["edit"]
objToolbar._editor.initEditor(text)
objToolbar._editor.setFocus()
}
function doFormat(strCommand) {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand(strCommand, false, arguments[1])
}
function insertLink() {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand('CreateLink', true, null)
}
function swapMode() {
var objEditor = document.all.toolbar._editor
objEditor.swapModes()
}

Du anropar sedan initToolbar() i onLoad i BODY-taggen.

Toolbar:en är en vanlig DIV. I mitt exempel har jag bilder som knappar. Du kan ju använda vanliga knappar eller text-länkar, det är onClick som är det viktiga.

<DIV ID="toolbar" onClick="this._editor.setFocus()">
<IMG src="fet.gif" onClick="doFormat('Bold')">
<IMG src="kursiv.gif" onClick="doFormat('Italic')">
<IMG src="understreck.gif" onClick="doFormat('Underline')">
<IMG src="vanster.gif" onClick="doFormat('JustifyLeft')">
<IMG src="center.gif" onClick="doFormat('JustifyCenter')">
<IMG src="right.gif" onClick="doFormat('JustifyRight')">
<IMG src="lank.gif" onClick="insertLink()">
<IMG src="html.gif" onClick="swapMode()">
</DIV>

Det var det hela (tror jag).

[r] Om du vill utveckla funktionaliteten lite så hittar du en beskrivning av alla kommandon du kan skicka till editorn här: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/commandids.asp [/r]

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

[Redigerat av Morph den 10 sep 2001]

brwMedlem sedan juli 2000619 inlägg
#7

Nu har jag fått den att fungera.. men om jag typ vill ha ett formulär ungefär som det som jag skriver i nu när jag skriver det här alltså TEXTAREA med dom där knapparna ovanför formuläret ungefär som ikonerna sitter här fast med bold och kursiv osv...

Kan jag köra med din kod och på så sätt redigera text mm och sen sända iväg formuläret och då ska den typ spara koden som blir i bakgrunden till en databas?

------------------
Ingenting är omöjligt, bara en utmaning.

MorphMedlem sedan juli 2000534 inlägg
#8

Kan jag köra med din kod och på så sätt redigera text mm och sen sända iväg formuläret och då ska den typ spara koden som blir i bakgrunden till en databas?

Jodå, fast du får trixa till det lite. Lägg till en Textarea i formuläret. Sätt style="display:none" på den. I form-taggen lägger du sedan nåt sånt här:

onSubmit="javascript:document.forms[0].textarean.value=edit.textEdit.document.body.innerHTML;"

Sedan hämtar du koden från textarean och smackar in den i databasen.

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

[Redigerat av Morph den 10 sep 2001]

brwMedlem sedan juli 2000619 inlägg
#9

hmm.. hur menar du.. ge gärna ett exempel med ett litet formulär :)

det ska även fungera att redigera alltså att skriva ut info från databasen om man vill kunna redigera det som står där... hur fungerar det? går det oxå att lösa?

------------------
Ingenting är omöjligt, bara en utmaning.

MorphMedlem sedan juli 2000534 inlägg
#10

Så här:

<FORM action="spara.asp" method="post" name="foo" onSubmit="javascript:document.foo.koden.value=edit.textEdit.document.body.innerHTML;">
<DIV id="toolbar">
din toolbar
</DIV>
<IFRAME id="edit" src="editor.html" width="400" height="250"></IFRAME>
<TEXTAREA name="koden" style="display: none"></TEXTAREA>
</FORM>

När du ska spara alltihop i databasen hämtar du html-koden som skapats med Request.Form("koden") (om du kör ASP).

det ska även fungera att redigera alltså att skriva ut info från databasen om man vill kunna redigera det som står där... hur fungerar det? går det oxå att lösa?

Japp, blir ännu en specialare :)

Lägg till en DIV nånstans på sidan som precis som textarean är gömd. Sedan skriver du ut koden från databasen i denna DIV.

<DIV id="kodFranDatabas" style="display: none;">
<%= recordset("fältetsnamn") %>
</DIV>

Sedan får du ändra lite i initToolbar(). Ersätt
text = ''
med
text = kodFranDatabas.innerHTML

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

brwMedlem sedan juli 2000619 inlägg
#11

Sedan får du ändra lite i initToolbar(). Ersätt
text = ''
med
text = kodFranDatabas.innerHTML

Den var jag inte riktigt med på..

menar du: OnLoad="initToolbar(kodFranDatabas.InnerHTML);"

Redigering:
--------------------------------------
Ska Textarea fortfarande vara kvar i "redigeringsläget" jag har fått allt att fungera förutom just redigeringsläget...

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 11 sep 2001]

MorphMedlem sedan juli 2000534 inlägg
#12

menar du: OnLoad="initToolbar(kodFranDatabas.InnerHTML);"

Nä. Du ska ändra i funktionen initToolbar() i java-scriptet. Så det blir så här:

function initToolbar() {
text = kodFranDatabas.InnerHTML
objToolbar = document.all.toolbar
objToolbar._editor = window.frames["edit"]
objToolbar._editor.initEditor(text)
objToolbar._editor.setFocus()
}

Ska Textarea fortfarande vara kvar i "redigeringsläget"

Japp.

Det som händer är att koden du hämtar från databasen slängs in en osynlig DIV på sidan. Koden från DIV:en laddas sedan in i editorn.
När du postar formuläret kopieras koden från editorn in i den osynliga textarean. Sedan kan du hämta koden från textarean på nästa sida, där du lägger in den i databasen.

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

Web-TorMedlem sedan nov. 200013 890 inlägg
#13

Vi har ett egetutvecklat webbpubliceringsverktyg inom företaget och använder oss av en HTML-editor från Microsoft:

Här är den.

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 12 sep 2001]

MacceMedlem sedan apr. 2001425 inlägg
#14

Web-tor, vet du om man får
bygga admingränssnitt för att sedan
sälja till kund ?

Eller måste man betala licens för att kunna "sälja" det ?

Jag tyckte det var svårläst... http://www.microsoft.com/info/cpyright.htm

Web-TorMedlem sedan nov. 200013 890 inlägg
#15

Jag vet faktiskt inte hur det ligger till med ev. licenskostnad.

Jag hittar inget om det i readme-filen men det är nog bäst att höra med Microsoft först.

------------------
/Tor
www.tor.nu

MikeEastMedlem sedan sep. 200153 inlägg
#16

Eh.. Jag tror inte att man behöver betala någon licens...

Vi har inte gjrt det i alla fall.. hehe..

Fast å andra sidan är hela dhtmlEdit-prylen bara en wrapper till mshtml.dll som i alla fall ingår i Explorer, så man kan väl säga att man redan har den liksom.. Man återanvänder bara möjligeheterna i Explorer.. Det är allt... typ..

------------------
Alltså.. Det är vad jag tycker..

beikerMedlem sedan juli 200194 inlägg
#17

yo!
asså... nu har ju inte jag läst copyrajtprylen på msn men jag anser att man liksom inte säljer microsofts produkt... det du tar betalt för är ju din kod, implementering och sånt för användningen av wsiwyg-komponenten som finns gratis i webbläsaren... kunden har ju redan den... vore ju sjukt om man behövde betala microsoft för att man skriver kod för användning av deras komponent... dom blir nog bara glada över att någon tycker att dom har gjort någonting användbart... många, många cms använder sig av det där nu och det betyder ju att alla som ska använda det måste ha ie vilket förmodligen var syftet med det från början....

/b
__________________
luddig som vanligt...

MikeEastMedlem sedan sep. 200153 inlägg
#18

Word, broder...

------------------
Alltså.. Det är vad jag tycker..

brwMedlem sedan juli 2000619 inlägg
#19

Nu har jag typ fått allt att funka.. fast inte i redigeringsläget... det som kommer upp är "Undefined" men alla knappar och sånt ser rätt ut.. vad kan vara fel?

Jag går alltså till sidan med följande kommando om jag vill testa att det fungerar i "editläge": sida.asp?command=edit annars bara sida.asp

<html>
<head>
<% 
command = "edit" 
koden = "<b>test</b> modul<br><br>potensiell modul"
%>

<% If command = "edit" Then %>

<SCRIPT language="JavaScript">
function initToolbar() {
text = kodFranDatabas.InnerHTML
objToolbar = document.all.toolbar
objToolbar._editor = window.frames["edit"]
objToolbar._editor.initEditor(text)
objToolbar._editor.setFocus()
}
function doFormat(strCommand) {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand(strCommand, false, arguments[1])
}
function insertLink() {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand('CreateLink', true, null)
}
function swapMode() {
var objEditor = document.all.toolbar._editor
objEditor.swapModes()
}
</SCRIPT>

<% Else %>

<SCRIPT language="JavaScript">
function initToolbar() {
text = ''
objToolbar = document.all.toolbar
objToolbar._editor = window.frames["edit"]
objToolbar._editor.initEditor(text)
objToolbar._editor.setFocus()
}
function doFormat(strCommand) {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand(strCommand, false, arguments[1])
}
function insertLink() {
var objToolbar = document.all.toolbar
objToolbar._editor.execCommand('CreateLink', true, null)
}
function swapMode() {
var objEditor = document.all.toolbar._editor
objEditor.swapModes()
}
</SCRIPT>

<% End If %>

</head>

<body Onload="initToolbar();">

<% If command <> "edit" Then %>
<FORM action="visning.asp" method="post" name="foo" onSubmit="javascript:document.foo.koden.value=edit.textEdit.document.body.innerHTML;">

<% ElseIf command = "edit" Then%>
<FORM action="visning.asp" method="post" name="foo" onSubmit="javascript:document.forms[0].koden.value=edit.textEdit.document.body.innerHTML;">

<% End If %>

<DIV ID="toolbar" onClick="this._editor.setFocus()">
<IMG src="fet.gif" onClick="doFormat('Bold')">
<IMG src="kursiv.gif" onClick="doFormat('Italic')">
<IMG src="understruken.gif" onClick="doFormat('Underline')">
<IMG src="vanster.gif" onClick="doFormat('JustifyLeft')">
<IMG src="center.gif" onClick="doFormat('JustifyCenter')">
<IMG src="hoger.gif" onClick="doFormat('JustifyRight')">
<IMG src="lank.gif" onClick="insertLink()">
<IMG src="html.gif" onClick="swapMode()">
</DIV>

<IFRAME id="edit" src="editor.html" width="500" height="350"></IFRAME>

<TEXTAREA name="koden" style="display: none"></TEXTAREA>

<% If command = "edit" Then %>
<div id="kodFranDatabas" style="display: none;">
<% Response.Write koden %>
</div>
<% End If %>

<br><br>

<input type="submit" value="Spara">
</FORM>

</body>
</html>

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 18 okt 2001]

MorphMedlem sedan juli 2000534 inlägg
#20

När dyker felmeddelandet upp? Direkt när du går in på sidan eller när du gör något speciellt? Vilken rad pekar felmeddelandet på?

Sen vet jag inte om jag hänger med riktigt i din logik. Du sätter ju command=edit högst upp på sidan vilket borde göra dina if-satser onödiga.

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

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