Fixed some isses with the integration with TinyMCE and also Created the plugin pmSimpleUploader for TinyMCE

This commit is contained in:
user
2012-11-15 13:07:06 -04:00
parent 22cc9125d1
commit 7e589fd4f8
13 changed files with 195 additions and 36 deletions

View File

@@ -0,0 +1,69 @@
/**
* Name: editor_plugin_src.js (for pmSimpleUploader tinyMCE plugin)
**/
(function(){
var strPluginURL;
tinymce.create('tinymce.plugins.pmSimpleUploaderPlugin', {
init: function(ed, url)
{
strPluginURL = url; // store the URL for future use..
ed.addCommand('mcepmSimpleUploader', function() {
pmSimpleUploader();
});
ed.addButton('pmSimpleUploader', {
title: 'pmSimpleUploader',
label : 'Upload File',
cmd: 'mcepmSimpleUploader',
image: url + '/img/pmSimpleUploader.png'
});
},
createControl: function(n, cm) {
return null;
},
getPluginURL: function() {
return strPluginURL;
}
});
tinymce.PluginManager.add('pmSimpleUploader', tinymce.plugins.pmSimpleUploaderPlugin);
})();
// this function can get called from the plugin inint (above) or from the callback on advlink/advimg plugins..
// in the latter case, win and type will be set.. In the rist case, we will just update the main editor window
// with the path of the uploaded file
function pmSimpleUploader(field_name, url, type, win) {
var strPluginPath = tinyMCE.activeEditor.plugins.pmSimpleUploader.getPluginURL(); // get the path to the uploader plugin
var strUploaderURL = strPluginPath + "/uploader.php"; // generate the path to the uploader script
var strUploadPath = tinyMCE.activeEditor.getParam('plugin_pmSimpleUploader_upload_path'); // get the relative upload path
var strSubstitutePath = tinyMCE.activeEditor.getParam('plugin_pmSimpleUploader_upload_substitute_path'); // get the path we'll substitute for the for the upload path (i.e. fully qualified)
if (strUploaderURL.indexOf("?") < 0){ // if we were called without any GET params
strUploaderURL = strUploaderURL + "?type=" + type + "&d=" + strUploadPath + "&subs=" + strSubstitutePath; // add our own params
} else {
strUploaderURL = strUploaderURL + "&type=" + type + "&d=" + strUploadPath + "&subs=" + strSubstitutePath;
}
tinyMCE.activeEditor.windowManager.open({ // open the plugin popup
file : strUploaderURL,
title : 'Upload from file',
width : 500,
height : 100,
resizable : "yes",
inline : 1, // This parameter only has an effect if you use the inlinepopups plugin!
close_previous : "no"
}, {
window : win,
input : field_name
});
return false;
}
// This function will get called when the uploader is done uploading the file and ready to update
// calling dialog and close the upload popup
// strReturnURL should be the string with the path to the uploaded file
function closePluginPopup(){
tinyMCEPopup.close(); // close popup window
}
function updateEditorContent(serializedHTML){
tinyMCE.activeEditor.execCommand('mceSetContent', false, serializedHTML);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -0,0 +1,3 @@
tinyMCE.addI18n('en.pmSimpleUploader', {
desc:"Upload File to Server"
});

View File

@@ -0,0 +1,3 @@
tinyMCE.addI18n('es.pmSimpleUploader', {
desc:"Subir Archivo al Servidor"
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,62 @@
<head>
<title>Upload an Output Document</title>
<script type="text/javascript" src="../../tiny_mce_popup.js" ></script>
<script type="text/javascript" src="editor_plugin_src.js" ></script>
<base target="_self" />
</head>
<body>
<?php
$Action = isset($_GET["q"]) ? $_GET["q"] : "none";
if($Action =="none"){
displayUploadForm();
}else if($Action=="upload"){
uploadContentFile();
}
?>
</body>
</html>
<?php
// displays the upload form
function displayUploadForm()
{
echo '<form action="uploader.php?'.$_SERVER["QUERY_STRING"].'&q=upload" method="post" enctype="multipart/form-data" onsubmit="">'
.'File Name: <br/>'
.'<input type="file" size="40" name="upload_file" ID="File1"/><br/>'
.'<input type="submit" name="Upload File" value="Upload File" style="width: 150px;" onclick="document.getElementById(\'progress_div\').style.visibility=\'visible\';"/>'
.' <div id="progress_div" style="visibility: hidden;"><img src="progress.gif" alt="wait..." style="padding-top: 5px;"></div>'
.'</form>';
}
// uploads the file to the destination path, and returns a link with link path substituted for destination path
function uploadContentFile()
{
$StatusMessage = "";
$ActualFileName = "";
$FileObject = $_FILES["upload_file"]; // find data on the file
$DestPath = sys_get_temp_dir();
updateEditorContent(trim(file_get_contents($FileObject['tmp_name'])));
closeWindow();
}
function showPopUp($PopupText)
{
echo "<script type=\"text/javascript\" language=\"javascript\">alert (\"$PopupText\");</script>";
}
function updateEditorContent($serializedHTML)
{
echo "<script type=\"text/javascript\" language=\"javascript\">updateEditorContent(\"".$serializedHTML."\");</script>";
}
function closeWindow()
{
echo '
<script language="javascript" type="text/javascript">
closePluginPopup();
</script>
';
}
?>

View File

@@ -4233,15 +4233,21 @@ tinymce.html.Styles = function(settings, schema) {
// Remove already removed children
fi = nodes.length;
while (fi--) {
if (!nodes[fi].parent)
if(list.name!='toStr'&&list.name!='concat'&&list.name!='get_by_key'&&list.name!='expand'&&list.name!='setParent'&&list.name!='isset_key'){
// if (!nodes[fi].parent){
nodes.splice(fi, 1);
// }
}
}
for (fi = 0, fl = list.callbacks.length; fi < fl; fi++)
for (fi = 0, fl = list.callbacks.length; fi < fl; fi++){
if(list.name!='toStr'&&list.name!='concat'&&list.name!='get_by_key'&&list.name!='expand'&&list.name!='setParent'&&list.name!='isset_key'){
list.callbacks[fi](nodes, list.name, args);
}
}
}
}
}
return rootNode;
};

View File

@@ -108,6 +108,7 @@ class OutputDocument extends BaseOutputDocument
if (!is_null($oOutputDocument)) {
$aFields = $oOutputDocument->toArray(BasePeer::TYPE_FIELDNAME);
$aFields['OUT_DOC_TITLE'] = $oOutputDocument->getOutDocTitle();
$aFields['PRO_UID'] = $oOutputDocument->getProUid();
$aFields['OUT_DOC_DESCRIPTION'] = $oOutputDocument->getOutDocDescription();
$aFields['OUT_DOC_FILENAME'] = $oOutputDocument->getOutDocFilename();
$aFields['OUT_DOC_TEMPLATE'] = $oOutputDocument->getOutDocTemplate();

View File

@@ -79,11 +79,26 @@ switch ($action) {
case 'loadOutputEditor':
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
$aData = "";
$fcontent = '';
$proUid = '';
$filename = '';
$title = '';
require_once 'classes/model/OutputDocument.php';
$oOutputDocument = new OutputDocument();
if (isset( $_REQUEST['OUT_DOC_UID'] )) {
$aFields = $oOutputDocument->load( $_REQUEST['OUT_DOC_UID'] );
$fcontent = $aFields['OUT_DOC_TEMPLATE'];
$proUid = $aFields['PRO_UID'];
$filename = $aFields['OUT_DOC_FILENAME'];
$title = $aFields['OUT_DOC_TITLE'];
}
$aData = Array ( 'PRO_UID' => $proUid,'OUT_DOC_TEMPLATE' => $fcontent, 'FILENAME' => $filename, 'OUT_DOC_UID'=> $_REQUEST['OUT_DOC_UID'], 'OUT_DOC_TITLE'=> $title);
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'outputdocs/outputdocs_Edit', '', $aData );
//$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'outputdocs/outputdocs_Edit', '', $aData );
G::RenderPage( 'publish', 'raw' );
//echo '<h3>outputss</h3>';
break;
}

View File

@@ -86,7 +86,7 @@ echo '
';
?>
<textarea name="form[fcontent]" id="form[fcontent]" class="tmceEditor"><p>news</p></textarea>
<textarea name="form[fcontent]" id="form[fcontent]" class="tmceEditor"><p>news<table><tr><td>cell 1</td></tr><tr><td>cell 2</td></tr></table></p></textarea>
<!--<textarea name="new" id="new" class="tmceEditor">another one</textarea>-->
<?php

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="outputdocs/outputdocs_Edit" type="xmlform" width="100%" labelWidth="2px" enableTemplate="1">
<dynaForm name="outputdocs/outputdocs_Edit" action="outputdocs/outputdocs_Save" type="xmlform" width="100%" labelWidth="2px" enableTemplate="1">
<INSERT_VARIABLE type="button" align="right" style="position:absolute;left:700px;top:420px;border-style:double;" onmouseover="saveSelection();" onclick="showDynaformsFormVars(&#039;form[TEXT_TEST]&#039;,&#039;../controls/varsAjax&#039;,&#039;@#PRO_UID&#039;,&#039;@#&#039;);">
<en>@#</en>
@@ -8,8 +8,9 @@
<PRO_UID type="hidden"/>
<OUT_DOC_UID type="hidden" showInTable="0"/>
<OUT_DOC_TITLE type="hidden" showInTable="0"/>
<OUT_DOC_TEMPLATE type="wysiwyg_editor" editorType="OUTPUT_DOCUMENT" width="100%" height="365px" defaultValue="&lt;br/&gt;"/>
<OUT_DOC_TEMPLATE type="wysiwyg_editor" editorType="OUTPUT_DOCUMENT" width="640" height="365" defaultValue="&lt;br/&gt;"/>
<ACCEPT type="button" onclick="outputdocsSave(this.form);">
<en>Save</en>

View File

@@ -54,7 +54,7 @@ var outputdocsEditor;
var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../outputdocs/outputdocs_Ajax',
args: 'action=loadOutputEditor'
args: 'action=loadOutputEditor&OUT_DOC_UID='+uid+'&OUT_DOC_TYPE='+typ
});
outputdocsEditor.loader.show();
@@ -92,10 +92,9 @@ var outputdocsEditor;
}
function outputdocsSave( form ) {
alert(form.action);
form.action = '../outputdocs/outputdocs_Save';
ajax_post( form.action, form, 'POST' );
outputdocsEditor.remove();
@#PAGED_TABLE_ID.refresh();
}