Jump to content

TUniXTinyMCE Component


Recommended Posts

Hi
I wrote this component
A professional editor that takes advantage of the capabilities of TinyMCE
Two of my problem, I need your help

1.Component of the output html text for what to do, the following

 

Function TUniXTinyMCE.GetPlainText: String;
begin
  // Result:=  UniSession. Query['????????']; Or Other Solution
End;
 

2.The problem with this view is not the first time, but the time to update the page with the error go away

 

Grateful

 

----

Component Body

----

 

Unit UniXTinyMCE;
Interface
Uses
  SysUtils, Classes, Controls,
  Ext, ExtPascal, ExtForm,
  UniGUIBaseClasses, UniGUIClasses,
  UniPageControl,
  UniGUIApplication,
  UniGUIUtils, ExtPascalUtils,
  uniHTMLFrame, uniGUIServer, UniGUIForm;
Const
  PackageVersion = '1.1.0';
 
Type
  TMyExtButton = Class(TExtButton);
 
  TButtonList = Record
    JSName: String;
    OnClick: TNotifyEvent;
  End;
 
  TUniXTinyMCE = Class(TUniHTMLFrame)
  Private
    { Private declarations }
    Function GetVersion: String;
 
  Protected
    { Protected declarations }
 
  Public
    { Public declarations }
    Constructor Create(Owner: TComponent); Override;
    Destructor Destroy; Override;
    Procedure Loaded; Override;
    procedure SetHtmlText(HtmlText: string);
    Function GetPlainText: String;
 
  Published
    { Published declarations }
    Property Vesrion: String Read GetVersion;
  End;
 
Procedure Register;
 
Implementation
 
Function GetWindowJSName: String;
Var
  I: Integer;
  C: TList;
  UF: TUniForm;
  FC: TClass;
Begin
  Result := '';
 
  FC := UniSession.MainFormClass;
  C := UniSession.FormsList;
  For I := 0 To C.Count - 1 Do
  Begin
    UF := TUniForm(C);
    If SameText(UF.ClassName, FC.ClassName) Then
    Begin
      Result := UF.WebForm.ExtForm.JSName;
      Exit;
    End;
  End;
End;
 
// ------------------------------------------------------------------------------
Procedure Register;
Begin
  RegisterComponents('uniGUI Editor', [TUniXTinyMCE]);
End;
 
// ------------------------------------------------------------------------------
 
Constructor TUniXTinyMCE.Create(Owner: TComponent);
Begin
  Inherited;
 
End;
 
// ------------------------------------------------------------------------------
Destructor TUniXTinyMCE.Destroy;
Begin
  Inherited;
End;
 
// ------------------------------------------------------------------------------
Function TUniXTinyMCE.GetPlainText: String;
begin
  // Result:=  UniSession. Query['????????']; Or Other Solution
End;
 
// -------------------------------------------------------------------------------
procedure TUniXTinyMCE.SetHtmlText(HtmlText: string);
begin
  UniSession.AddJS('tinyMCE.get("ed1").setContent(' + StrToJS(HtmlText) + ')');
 
end;
 
// ------------------------------------------------------------------------------
Function TUniXTinyMCE.GetVersion: String;
Begin
  Result := PackageVersion;
End;
 
// ------------------------------------------------------------------------------
Procedure TUniXTinyMCE.Loaded;
 
var
  FilesFolder: String;
Begin
  Inherited;
 
  If Not WebMode Then
    Exit;
 
  FilesFolder := StringReplace
    (IncludeTrailingBackslash(uniGUIServer.UniServerInstance.FilesFolder), '\',
    '/', [RfReplaceAll]);
 
  If uniGUIServer.UniServerInstance.CustomFiles.IndexOf
    (FilesFolder + 'tiny_mce/tiny_mce.js') < 0 Then
  begin
    uniGUIServer.UniServerInstance.CustomFiles.Add
      (FilesFolder + 'tiny_mce/tiny_mce.js');
 
    self.HTML.Clear;
    self.HTML.Add
      ('<textarea id="ed1" style="width: 100%; height: 100%;"></textarea>');
    self.HTML.Add('<script>');
    self.HTML.Add('tinyMCE.init({');
    self.HTML.Add('theme : "advanced",');
    self.HTML.Add
      ('plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu'
      + ',paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",');
    self.HTML.Add
      ('theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",');
    self.HTML.Add
      ('theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",');
    self.HTML.Add
      ('theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",');
    self.HTML.Add
      ('theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",');
    self.HTML.Add('theme_advanced_toolbar_location : "top",');
    self.HTML.Add('theme_advanced_toolbar_align : "left",');
    self.HTML.Add('theme_advanced_statusbar_location : "bottom",');
    self.HTML.Add('theme_advanced_resizing : true,');
    self.HTML.Add
      ('extended_valid_elements : "img[class=myclass|!src|border:0|alt|title|width|height]",');
    self.HTML.Add('mode: "exact",');
    self.HTML.Add('elements : "ed1"');
    self.HTML.Add('});');
    self.HTML.Add('</script>');
 
  End;
End;
 
End.

UniXTinyMCE.rar

Link to post
Share on other sites
×
×
  • Create New...