Drupal WYSIWYG Editors

illusio Sun, 01/06/2013 - 09:50

Sveiki !

Vai kāds nevar ieteikt normālu  WYSIWYG Editor ar HTML5 atbalstu?

TinyMCE izdzēš HTML5 tagus (piemēram canvas)

CKEditor 4.0 versijai nerādās pieliktās Toolbar pogas kā arī arī dzēš ieliktu FB kodu

Aloha būs labs bet tikai 8 drupal versijā, 7 pārāk nestabils

vienkaršam tekstam itka der gan TinyMCE, gan CKEditor 4.0 bet ja papildus kāds kods vēl jāieliek

tad dzēš tagus no koda :( :( :(

Es neesmu tik detalizēti pētījis, bet domāju, ka problēma ar tagu filtrēšanu ir drīzāk nevis WYSIWYG editorā, bet gan Drupal. Vai mēģināji uzlikt FullHTML teksta formātu un tad rakstīt tagus?

 

Es WYSIWYG izmantoju kopā ar WYSIWYG moduli (http://drupal.org/project/wysiwyg), kur vari integrēt vai nu TinyMCE, vai CKEditor, kā arī citus. Taču tas, kā apvienojošais, nedod tik lielas iespējas konfigurēt pašu editoru, kā tiešie/speciālie moduļi. Tomēr izmantojot API, tu vari panākt tieši to funkcionalitāti un izskatu, kas tev ir nepieciešams.

 

Šajā kontekstā mūsu pašu "gincha" ir šajā lapā izvietojis palīgmoduli, kuru vari izmantot kā piemēru atsperes punktam.

 

Lai cik WYSIWYG terminoloģija liecinātu par vienu, tomēr šis ir rīks, kas dara tikai noteiktas lietas. Par to var palasīties vairāk netā, piemēram:

Šeit es iezīmētu divas būtiskas problēmas:

  1. Specifisko HTML un iframe tagu drošības jautājumi (http://theinsider.deep-ice.com/texts/xss_exposed.txt)
  2. Problēmas, ko pārāk vaļīgs WYSIWYG pielietojums var radīt ar lapas dizainu un izkārtojumu

 

To visu pieminot, protams, katrs var rīkoties pēc saviem ieskatiem, taču specifiskās lietas es labāk liktu kodā vai modulī, nevis vienkārši atļautu visiem lietot FullHTML formātu, un ar WYSIWYG palīdzību radīt lapas izklājumus. Īpašu vērību jāpievērš ir iframe tagiem, kas tomēr ir specifiski jāapstrādā, lai būtu kaut cik kontrolējama situācija visā Drupal lapā. Ja vēlies ievietot video no youtube vai citiem pakalpojuma sniedzējiem, prātīgāk būtu tam izmantot attiecīgu moduli, nevis to izpildīt iekš WYSIWYG, kas dotu iespēju kontrolēt tieši no kuriem saitiem šādi linki vai snipeti var būt ievietoti, kā arī dotu labākas iespējas piemērot šādiem risinājumiem CSS, kas nemainīsies katru reizi, kā tiks ievietots kas jauns vai lieks.

 

Taču ja esi pārliecināts ko dari, un ja šis FullHTML ir labi kontrolēts (jeb to dari tikai tu pats), tad ir risinājumi, kurus vari saprātīgā veidā izmantot.

 

Pēc noklusējuma, Drupal pieļauj tikai sekojošus HTML tagus (saistīts ar XSS): http://api.drupal.org/api/drupal/modules!field!field.module/function/_f… (papildus info var palasīt šeit: http://drupal.stackexchange.com/questions/20467/changing-allowed-html-t…).

 

Tātad, ņemot vērā to, problēma ir cieši saistīta ar to, ko un kā Drupal pieļauj izmantot, un vis ticamāk, tā nav CK.../Tiny... problēma, lai gan fakts, ka šie rīki šobrīd netiek orientēti 100% HTML5 atbalstam.

 

Lai moduļa veidā risinātu šo filtrēšanas mehānismu, var izmantot sekojošu moduli: http://drupal.org/project/wysiwyg_filter kur attiecīgi web saskarnē definē kas tad tieši un kādiem HTML/CSS elementiem ir atļaujams, un kādā kombinācijā. Visa tā kopējā doma ir saistīta ar to, lai varētu savaldīt un vajadzības gadījumā arī ierobežot kopējo lapas CSS kodu. Citādi sāksies bardaks. Un pirmais, kas sākas, ir ar to, ka lietotāji Body tipa lauciņos ar WYSIWYG sāk kopēt tekstu no MS Word. iFrame arī ne vienmēr dod kontroli no CSS puses.

 

Katrā gadījumā domāju, ka HTML5 100% atbalsts vēl nebūs visur, jo arī pārlūkos vēl ir nianses, un daudz informācijas tomēr tiek izvietots klasiskajā risinājumā. Bet nu var piesaukt Raini :).

 

Es domāju, ka būtu jāsāk tev ar HTML filtru, un ja tas nelīdz, tad vienkārši izveido noteiktu nodes templeitu (pie nosacījuma, ka visa ādiņa ir ar HTML5 atbalstu un korekta), un veido pēc vajadzības savā modulī, nevis izmanto WYSIWYG kā iespēju radīt pašas lapas vai raksta kopēju izkārtojumu.

Ja noņem editorus viss strādā tegi nezūd - bet negribas visu kopēt html kodā JS strādā vis darbojas bet cik lasīju vaina pašā TinyMCE vai CKEditor, kas brutāli dzēš neatpazītos tegus, itkā var labot pieliekot tos pašā TinyMCE, bet ar tā konfigiem negribas ņemties. Šobrīd risinājums - Disable rich-text kad vaig izslēdzu redaktoru un rakstu kodu, bet tad nevar rakstīt un saglabāt no TinyMCE. Bez redaktoriem vis normāli rakstās un strādā.

canvas tagu  jau itkā šobrīd visiem jāatbalsta :) ne HTML5 kods - šobrīd kautkāda sena vēsture liekas un tēmas bez HTML5 arī :)

WYSIWYG varētu būt piņķeris kamēr salasa minimālo skaitu. Tas darbojas pēc principa - no sākumā noliegts ir viss, un tad ar roku atļaujam tikai noteiktas lietas. Pie kam, bieži WYSIWYG izmanto ne tikai HTML tagus teksta formatēšanai (piemēram strong, em, sup, sub, utt.), bet arī pievieno CSS stilus. Tajā filtru modulī tad CSS stilu pievienošana ir tas ķēpīgākais. Bet ja to sistematizē, vienreiz tam iziet cauri un pieraksta, tad ir tīri OK.

 

Par ne HTML5 tev ir taisnība, bet attiecībā uz jaunajiem risinājumiem vai projektiem. Tomēr nets ir pilns ar veco kodu vēl. Un domāju, ka arī šo redaktoru projekti lielā mērā ir saistīti ar veco kodu atbalsta problēmu risināšanu. Jauninājumiem atliek mazāk laika.

 

CK.../Tiny... var koriģēt manuāli konfigurācijas failus, un tas arī ir viņu dokumentācijā aprakstīts. Tikai šajā gadījumā tas nebūs īsti Drupaliski. Tādēļ varētu noderēt gincha modulis, kur paskatīties, kā vajadzīgās lietas iekonfigurēt tajā. Ja gincha uzies šo saraksti, var būt viņu varētu palūgt moduli papildināt ar attiecīgiem kodiem. :)

Būtu labi, ja varētu vieglāk  tos pāris tagus pielikt redaktoram :)  Man šī problēma radās, jo tekstā kā "odziņu " gribas šo to no JS ielikt efektiem, bet tur prasījās kaut vai tas pats canvas html kodā :)

Šeit man ļoti patīk modulis http://drupal.org/project/cpn

Kā būtu, ja izmantotu parastos tagus ar noteiktu klasi (lai var atrast ar js), un ar JS nomainītu HTML pie lapas ielādes? (kā ideja...)

Slinkums :) vieglāk uz laiku atslēgt redaktoru .. galu galā ceru apgreidos tos TinyMCE, vai CKEditor uz pilnu HTML5 atbalstu citādi zaudēs popularitāti nau normāli ja redaktors dzēš standarta Facebook  kodu ko lieto milijoni vismaz pogu lai ieliek nečekot kodu :D

Pie kura risinājuma attiecībā uz editora iebūvi tu paliki? Tiešie moduļi, vai caur WYSIWYG? Šeit vienu linku netīšām uzgāju (saistībā ar tiešajiem moduļiem), var būt noder pētījumos:

Man kaut kā liekas, ka tas, kas ir ieslēgts, to noteikti var atslēgt. Jautājums ir tikai, vai to darīt Drupal pieņemamā veidā un formā, vai tomēr ķimerēt redaktora tekstu un config failus.

Var būt kā alternatīva ir izmantot Whitelist plaginu. Jāskatās tikai, vai jaunajā versijā tas darbojas:

Sākumā lietoju CKEditor 3, bet tas neļāva saglabāt FB standarta kodu. CKEditor 4 versijā atkal nevaru toolbar pogas papildus uzlikt (moduli pielieku vis radas, bet redaktorā vis bez izmaiņām - standarta minimums). Tad paliku pie  TinyMCE caur WYSIWYG - lai gan tas dzēš HTML5 tagus

vismaz varu to tajās lapās, kur vaig atslēgt caur  Disable rich-text - ātri un kaucik ērti + Code Mirror ar pieslēgts zem TinyMCE

Gaidu  Aloha , liekas būs pats sakarīgākais redaktors - uzliku bet tur kautkas ar tām dev versijam un papildus moduļiem vēl īsti neiet bet cik sapratu 8 tas bus zem Core :D

Pagaidām var arī caur notepad++ Ctrl c, v :D vienīgi neērti

Nesaprotu vai CKEditor 4 pogas jāliek caur CKEditor configu - caur moduli pieliekās bet nekas nemainās vai tiešām bugainu redaktoru vietā nevar uztaisīt 1 bet normālu :D

Paldies j2b par izsmeļošām atbildēm! Man nav daudz ko piebilst. illusio, kāds ir FB standarta kods, ko mēģini ielikt?

<div class="fb-like-box" data-href="http://www.facebook.com/pages/ fb lapa " data-width="460" data-height="345" data-show-faces="true" data-border-color="#fff" data-stream="false" data-header="false">&nbsp;</div> (no fb developer lapas)

vai varbut twitter

<p><a class="twitter-timeline" href="https://twitter.com/ tw lapa ">Tweets by @ user </a></p>

bet cik aceros FaceBookā  - 3 CKEditorā pie saglabāšanas vienkārši kods pazuda

pārējais iekš  http://drupal.org/project/cpn  (Js skripts). Bez CKEditora vis saglabājas. Ar redaktoru  -html koda vietā tukšums

Par TinyMCE līdzīgi custom js skripts un HTML. <canvas></canvas> tiek izmestas pārējais paliek.

Varbūt ar ka ko daru nepareizi bet parejais vis redaktoros normali strādā. Paldies par atbildēm

 

Jā un kapēc nesanāk papildus toolbar pogas pielikt 4.0 CKEditoram caur moduli - modulī pieliekas redaktorā nekas nemainās. 3CKEditorā vis strādāja Paldies 

Pamēģināju CKEditor-4+wysiwyg, nu vēl jāpagaida, kamēr wysiwyg moduli pielabos, jo 4ajā versijā editoram ir lielas izmaiņas (inline editing arī tur ir). Var jau uzlikt un salāpīt versijas atpazīšanu un pogas vairākās rindās, bet nu tas vēl nav dzīvotājs. Šodien padzirdēju, ka Drupal8 nebūs Aloha, bet CKEditor 4.

CKEditor-3.x atbalsta HTML5 tagus.  Cita lieta, vai tas atverot kodu māk to apstrādāt tā, lai editorā to attēlotu. Piemērs tam, kas tur īsti notiek, ir teaser brake plugin.  Izmēģināju to pašu fb kodu, editors neko nepazaudē. Ja tā var teikt, pazūd vizuālais kontakts :)

Es arī nenoturējos :) Jāsaka, ka CKEditors ir palicis pēc būtības daudz patīkamāks. Versijas jautājumu tiešām var salāpīt, taču teksta līdzināšanas pogas pazūd. Tālāk neķēpājos. Patika arī ideja par Bilderi, kur var salasīt to, kas vajadzīgs, no nepumpēt lieku (http://ckeditor.com/builder)

 

Aloha puišiem gan sanāca aplauziens. Tā jau domāja, ka būs ok, ja kāds no plašajiem CMS tos varētu ielikt korē, bet nu - neko darīt. Katrā gadījumā Inline edit funkcija šķiet vilinoša pamatā jau lietotāju ērtības dēļ un arī dēļ tam, lai patiešām WYSIWYG padarītu pēc būtības tuvāku. Taču piekritīšu arī viedoklim, ka no izstrādes puses skatoties, tas uzliks papildus slogu un formu validāciju, izklājumiem, un pārējiem pričendāļiem. Dzīvosim - redzēsim.