mirror of
https://github.com/Codiad/Codiad.git
synced 2026-03-10 19:26:47 +01:00
move function from dialog to class, ...
change $_POST['action'] to $_GET['action'] check if an extension exists before printing it out.
This commit is contained in:
@@ -12,6 +12,9 @@ require_once '../../common.php';
|
||||
|
||||
class fileextension_textmode{
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//default assotiations
|
||||
//////////////////////////////////////////////////////////////////
|
||||
private $defaultExtensions = array(
|
||||
'html' => 'html',
|
||||
'htm' => 'html',
|
||||
@@ -38,6 +41,9 @@ class fileextension_textmode{
|
||||
'jade' => 'jade',
|
||||
'coffee' => 'coffee');
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//availiable text modes
|
||||
//////////////////////////////////////////////////////////////////
|
||||
private $availiableTextModes = array(
|
||||
'abap',
|
||||
'asciidoc',
|
||||
@@ -116,6 +122,9 @@ class fileextension_textmode{
|
||||
|
||||
const storeFilename = 'extensions.php';
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//check the session if the user is allowed to do anything here
|
||||
//////////////////////////////////////////////////////////////////
|
||||
public function __construct(){
|
||||
Common::checkSession();
|
||||
}
|
||||
@@ -128,17 +137,25 @@ class fileextension_textmode{
|
||||
return $this->defaultExtensions;
|
||||
}
|
||||
|
||||
private function validateExtension($extension){
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//checks if the sended extensions are valid to prevent any injections
|
||||
//////////////////////////////////////////////////////////////////
|
||||
public function validateExtension($extension){
|
||||
return preg_match('#^[a-z0-9\_]+$#i', $extension);
|
||||
}
|
||||
|
||||
private function validTextMode($mode){
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//checks if the sended extensions are valid to prevent any injections and usage of removed text modes
|
||||
//////////////////////////////////////////////////////////////////
|
||||
public function validTextMode($mode){
|
||||
return in_array($mode, $this->availiableTextModes);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//process the form with the assotiation
|
||||
//////////////////////////////////////////////////////////////////
|
||||
private function processFileExtTextModeForm(){
|
||||
//Store Fileextensions and Textmodes in File:
|
||||
|
||||
if(!isset($_POST['extension']) || !is_array($_POST['extension'])
|
||||
|| !isset($_POST['textMode']) || !is_array($_POST['textMode'])){
|
||||
return json_encode(array('status' => 'error', 'msg' => 'incorrect data send'));
|
||||
@@ -148,18 +165,21 @@ class fileextension_textmode{
|
||||
|
||||
$warning = '';
|
||||
|
||||
//Iterate over the sended extensions
|
||||
foreach ($_POST['extension'] as $key => $extension){
|
||||
//ignore empty extensions, so that they are going to removed
|
||||
if(trim($extension) == '' ){
|
||||
continue;
|
||||
}
|
||||
|
||||
//get the sended data and check it
|
||||
if(!isset($_POST["textMode"][$key])){
|
||||
return json_encode(array('status' => 'error', 'msg' => 'incorrect data send.'));
|
||||
}
|
||||
|
||||
$extension = strtolower(trim($extension));
|
||||
$textMode = strtolower(trim($_POST["textMode"][$key]));
|
||||
|
||||
|
||||
if(!$this->validateExtension($extension)){
|
||||
return json_encode(array('status' => 'error', 'msg' => 'incorrect extension:'.htmlentities($extension)));
|
||||
}
|
||||
@@ -168,6 +188,7 @@ class fileextension_textmode{
|
||||
return json_encode(array('status' => 'error', 'msg' => 'incorrect text mode:'.htmlentities($textMode)));
|
||||
}
|
||||
|
||||
//data was correct and could be insert
|
||||
if(isset($exMap[$extension])){
|
||||
$warning = htmlentities($extension).' is already set.<br/>';
|
||||
}else{
|
||||
@@ -175,7 +196,7 @@ class fileextension_textmode{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//store the assotiations
|
||||
Common::saveJSON(fileextension_textmode::storeFilename, $exMap);
|
||||
if($warning != ''){
|
||||
return json_encode(array('status' => 'warning', 'msg' => $warning, 'extensions' => $exMap ));
|
||||
@@ -185,12 +206,15 @@ class fileextension_textmode{
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//process all the possible forms
|
||||
//////////////////////////////////////////////////////////////////
|
||||
public function processForms(){
|
||||
if(!isset($_POST['action'])){
|
||||
if(!isset($_GET['action'])){
|
||||
return json_encode(array('status' => 'error', 'msg' => 'incorrect data send.'));
|
||||
}
|
||||
|
||||
switch($_POST['action']){
|
||||
switch($_GET['action']){
|
||||
case 'FileExtTextModeForm':
|
||||
return $this->processFileExtTextModeForm();
|
||||
break;
|
||||
@@ -203,6 +227,9 @@ class fileextension_textmode{
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//Send the default extensions
|
||||
//////////////////////////////////////////////////////////////////
|
||||
private function prcessGetFileExtTextModes(){
|
||||
$ext = false;
|
||||
//ignore warnings
|
||||
@@ -212,8 +239,41 @@ class fileextension_textmode{
|
||||
//default extensions
|
||||
$ext = $this->defaultExtensions;
|
||||
}
|
||||
|
||||
return json_encode(array('status' => 'success', 'extensions' => $ext, 'textModes' => $this->availiableTextModes));
|
||||
|
||||
//the availiable extensions, which aren't removed
|
||||
$availEx = array();
|
||||
foreach($ext as $ex => $mode){
|
||||
if(in_array($ex, $this->availiableTextModes)){
|
||||
$availEx[$ex] = $mode;
|
||||
}
|
||||
}
|
||||
return json_encode(array('status' => 'success', 'extensions' => $availEx, 'textModes' => $this->availiableTextModes));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//return a select-field with all availiable text modes, the one in the parameter is selected
|
||||
//////////////////////////////////////////////////////////////////
|
||||
public function getTextModeSelect($extension){
|
||||
$extension = trim(strtolower($extension));
|
||||
$find = false;
|
||||
$ret = '<select name="textMode[]" class="textMode">'."\n";
|
||||
foreach($this->getAvailiableTextModes() as $textmode){
|
||||
$ret .= ' <option';
|
||||
if($textmode == $extension){
|
||||
$ret .= ' selected="selected"';
|
||||
$find = true;
|
||||
}
|
||||
$ret .='>'.$textmode.'</option>'."\n";
|
||||
}
|
||||
|
||||
//unknown extension, print it in the end
|
||||
if(!$find && $extension != ''){
|
||||
$ret .= ' <option selected="selected">'.$textmode.'</option>'."\n";
|
||||
}
|
||||
|
||||
$ret .= '</select>'."\n";
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,68 +9,64 @@
|
||||
|
||||
require_once 'class.fileextension_textmode.php';
|
||||
|
||||
//check Session
|
||||
//check Session is done in constructor
|
||||
$fileExTM = new fileextension_textmode();
|
||||
|
||||
//return a select-field with all availiable text modes, the one in the param is selected
|
||||
function getTextModeSelect($extension){
|
||||
global $fileExTM;
|
||||
$extension = trim(strtolower($extension));
|
||||
$find = false;
|
||||
$ret = '<select name="textMode[]" class="textMode">'."\n";
|
||||
foreach($fileExTM->getAvailiableTextModes() as $textmode){
|
||||
$ret .= ' <option';
|
||||
if($textmode == $extension){
|
||||
$ret .= ' selected="selected"';
|
||||
$find = true;
|
||||
if(!isset($_GET['action'])){
|
||||
die('Missing $_GET["action"]');
|
||||
}
|
||||
switch($_GET['action']){
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//The form for edit the assotiations
|
||||
//////////////////////////////////////////////////////////////////
|
||||
case 'fileextension_textmode_form':
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//Reading the current extensions
|
||||
//////////////////////////////////////////////////////////////////
|
||||
$ext = false;
|
||||
//ignore warnings
|
||||
$ext = @Common::getJSON(fileextension_textmode::storeFilename);
|
||||
|
||||
if(!is_array($ext)){
|
||||
//default extensions
|
||||
$ext = $fileExTM->getDefaultExtensions();
|
||||
}
|
||||
$ret .='>'.$textmode.'</option>'."\n";
|
||||
}
|
||||
|
||||
//unknown extension, print it in the end
|
||||
if(!$find && $extension != ''){
|
||||
$ret .= ' <option selected="selected">'.$textmode.'</option>'."\n";
|
||||
}
|
||||
|
||||
$ret .= '</select>'."\n";
|
||||
|
||||
return $ret;
|
||||
|
||||
$textModes = $fileExTM->getAvailiableTextModes();
|
||||
|
||||
if(!@ksort($ext)){
|
||||
die(json_encode(array('status' => 'error', 'msg' => 'Internal PHP error.') ));
|
||||
}
|
||||
?>
|
||||
<div id="FileExtTextModeDiv">
|
||||
<label>Edit file extensions</label>
|
||||
<table id="FileExtTextModeTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>File extension</th>
|
||||
<th>Text mode</th></tr>
|
||||
</thead>
|
||||
<tbody id="FileExtTextModeTableTbody">
|
||||
<?php
|
||||
foreach($ext as $ex => $mode){
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//print only valid assotiations
|
||||
//////////////////////////////////////////////////////////////////
|
||||
if(!$fileExTM->validTextMode($mode)){
|
||||
continue;
|
||||
}?>
|
||||
<tr>
|
||||
<td><input class="FileExtension" type="text" name="extension[]" value="<?php echo $ex ?>" /></td>
|
||||
<td><?php echo $fileExTM->getTextModeSelect($mode)?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<button class="btn-left" onClick="codiad.fileext_textmode.addFieldToForm()">Add New Extension</button><button class="btn-mid" onClick="codiad.fileext_textmode.sendForm();">Save Scheme</button><button class="btn-right" onClick="codiad.modal.unload();"><?php echo Common::get_i18n('Close')?></button>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
|
||||
$ext = false;
|
||||
//ignore warnings
|
||||
$ext = @Common::getJSON(fileextension_textmode::storeFilename);
|
||||
|
||||
if(!is_array($ext)){
|
||||
//default extensions
|
||||
$ext = $fileExTM->getDefaultExtensions();
|
||||
}
|
||||
|
||||
$textModes = $fileExTM->getAvailiableTextModes();
|
||||
|
||||
if(!@ksort($ext)){
|
||||
die(json_encode(array('status' => 'error', 'msg' => 'Internal PHP error.') ));
|
||||
}
|
||||
|
||||
//echo '<form onSubmit="return codiad.fileExtTextMode.sendForm();">'."\n";
|
||||
echo ' <div id="FileExtTextModeDiv">';
|
||||
echo '<label>Edit file extensions</label>';
|
||||
echo '<table id="FileExtTextModeTable">';
|
||||
echo '<thead><tr><td><label>File extension</label></td>';
|
||||
echo '<td><label>Text mode</label></td></tr></thead>';
|
||||
echo '<tbody id="FileExtTextModeTableTbody">'."\n";
|
||||
foreach($ext as $ex => $mode){
|
||||
echo '<tr>';
|
||||
echo '<td><input class="FileExtension" type="text" name="extension[]" value="'.$ex.'" /></td>';
|
||||
echo '<td>'.getTextModeSelect($mode).'</td>';
|
||||
echo '</tr>'."\n";
|
||||
}
|
||||
echo '</tbody>';
|
||||
echo '</table>';
|
||||
echo '</div>';
|
||||
echo '<button class="btn-left" onClick="codiad.fileext_textmode.addFieldToForm()">Add New Extension</button>';
|
||||
echo '<button class="btn-mid" onClick="codiad.fileext_textmode.sendForm();">Save Scheme</button>';
|
||||
echo '<button class="btn-right" onClick="codiad.modal.unload();">'.Common::get_i18n('Close').'</button>';
|
||||
|
||||
//echo '</form>'."\n";
|
||||
?>
|
||||
@@ -17,82 +17,26 @@
|
||||
dialog: 'components/fileext_textmode/dialog.php',
|
||||
controller: 'components/fileext_textmode/controller.php',
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//do a post request for the first assotiation of fileextensions and textmodes
|
||||
//////////////////////////////////////////////////////////////////
|
||||
availableTextModes : [],
|
||||
|
||||
init : function() {
|
||||
self = this;
|
||||
this.initEditorFileExtensionTextModes();
|
||||
},
|
||||
|
||||
formWidth : 300,
|
||||
|
||||
open : function() {
|
||||
codiad.modal.unload();
|
||||
codiad.modal.load(this.formWidth,
|
||||
this.dialog);
|
||||
codiad.modal.hideOverlay();
|
||||
},
|
||||
//send the isert extesions and textmodes to the server.
|
||||
sendForm : function(){
|
||||
var $div = $('#FileExtTextModeDiv');
|
||||
var extensions = $div.find('.FileExtension');
|
||||
//data to send
|
||||
var formData = {'extension[]' : [], 'textMode[]' : [], 'action' : 'FileExtTextModeForm'};
|
||||
for(var i = 0; i < extensions.size(); ++i){
|
||||
formData['extension[]'].push(extensions[i].value);
|
||||
}
|
||||
|
||||
var textMode = $div.find('.textMode');
|
||||
for(var i = 0; i < textMode.size(); ++i){
|
||||
formData['textMode[]'].push(textMode[i].value);
|
||||
}
|
||||
|
||||
$.post(this.controller, formData, self.setEditorFileExtensionTextModes);
|
||||
|
||||
codiad.modal.unload();
|
||||
},
|
||||
|
||||
//Add a new insert line to the form
|
||||
addFieldToForm : function(){
|
||||
var $table = $('#FileExtTextModeTable');
|
||||
var $tbody = $('#FileExtTextModeTableTbody');
|
||||
|
||||
var code = '<tr><td><input class="FileExtension" type="text" name="extension[]" value="" /></td>';
|
||||
code += '<td><select style="width: 100px; display: inline;" name="textMode[]" class="textMode">';
|
||||
for(var i = 0; i < this.availableTextModes.length; ++i){
|
||||
code += '<option>'+ this.availableTextModes[i] +'</option>';
|
||||
}
|
||||
code += '</select></td></tr>';
|
||||
|
||||
$tbody.append(code);
|
||||
|
||||
//scroll as far down as possible
|
||||
$table.scrollTop(1000000);
|
||||
},
|
||||
|
||||
//function for showing the status and msg from a http-request
|
||||
showStatus : function(resp) {
|
||||
resp = $.parseJSON(resp);
|
||||
if(resp.status != undefined && resp.status != '' && resp.msg != undefined && resp.message != ''){
|
||||
switch (resp.status) {
|
||||
case 'success':
|
||||
codiad.message.success(resp.msg);
|
||||
break;
|
||||
case 'error':
|
||||
codiad.message.error(resp.msg);
|
||||
break;
|
||||
case 'notice':
|
||||
codiad.message.notice(resp.msg);
|
||||
break;
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//do a post request for the first assotiation of fileextensions and textmodes
|
||||
//////////////////////////////////////////////////////////////////
|
||||
initEditorFileExtensionTextModes : function(){
|
||||
$.post(this.controller, {'action' : 'GetFileExtTextModes'}, this.setEditorFileExtensionTextModes);
|
||||
$.get(this.controller, {'action' : 'GetFileExtTextModes'}, this.setEditorFileExtensionTextModes);
|
||||
},
|
||||
|
||||
//initial method to get the stored joins
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//initial method to get the stored assotiations
|
||||
//////////////////////////////////////////////////////////////////
|
||||
setEditorFileExtensionTextModes : function(data){
|
||||
resp = $.parseJSON(data);
|
||||
if(resp.status != 'error' && resp.extensions != undefined){
|
||||
@@ -110,7 +54,79 @@
|
||||
amplify.publish('fileext_textmode.loadedExtensions');
|
||||
}
|
||||
self.showStatus(data);
|
||||
}
|
||||
},
|
||||
|
||||
formWidth : 300,
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// Open the component dialog
|
||||
//////////////////////////////////////////////////////////////////
|
||||
open : function() {
|
||||
codiad.modal.unload();
|
||||
codiad.modal.load(this.formWidth,
|
||||
this.dialog+"?action=fileextension_textmode_form");
|
||||
codiad.modal.hideOverlay();
|
||||
},
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//send the insert extesions and textmodes to the server.
|
||||
//////////////////////////////////////////////////////////////////
|
||||
sendForm : function(){
|
||||
var $div = $('#FileExtTextModeDiv');
|
||||
var extensions = $div.find('.FileExtension');
|
||||
//data to send
|
||||
var formData = {'extension[]' : [], 'textMode[]' : []};
|
||||
for(var i = 0; i < extensions.size(); ++i){
|
||||
formData['extension[]'].push(extensions[i].value);
|
||||
}
|
||||
|
||||
var textMode = $div.find('.textMode');
|
||||
for(var i = 0; i < textMode.size(); ++i){
|
||||
formData['textMode[]'].push(textMode[i].value);
|
||||
}
|
||||
|
||||
$.post(this.controller+'?action=FileExtTextModeForm', formData, self.setEditorFileExtensionTextModes);
|
||||
|
||||
codiad.modal.unload();
|
||||
},
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//Add a new insert line to the form
|
||||
//////////////////////////////////////////////////////////////////
|
||||
addFieldToForm : function(){
|
||||
var $table = $('#FileExtTextModeTable');
|
||||
var $tbody = $('#FileExtTextModeTableTbody');
|
||||
|
||||
var code = '<tr><td><input class="FileExtension" type="text" name="extension[]" value="" /></td>';
|
||||
code += '<td><select style="width: 100px; display: inline;" name="textMode[]" class="textMode">';
|
||||
for(var i = 0; i < this.availableTextModes.length; ++i){
|
||||
code += '<option>'+ this.availableTextModes[i] +'</option>';
|
||||
}
|
||||
|
||||
code += '</select></td></tr>';
|
||||
|
||||
$tbody.append(code);
|
||||
|
||||
//scroll as far down as possible
|
||||
$table.scrollTop(1000000);
|
||||
},
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//showing the status and msg from a http-request
|
||||
//////////////////////////////////////////////////////////////////
|
||||
showStatus : function(resp) {
|
||||
resp = $.parseJSON(resp);
|
||||
if(resp.status != undefined && resp.status != '' && resp.msg != undefined && resp.message != ''){
|
||||
switch (resp.status) {
|
||||
case 'success':
|
||||
codiad.message.success(resp.msg);
|
||||
break;
|
||||
case 'error':
|
||||
codiad.message.error(resp.msg);
|
||||
break;
|
||||
case 'notice':
|
||||
codiad.message.notice(resp.msg);
|
||||
break;
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
})(this, jQuery);
|
||||
@@ -9,22 +9,21 @@
|
||||
overflow-y: scroll;
|
||||
display: block;
|
||||
height: 280px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#FileExtTextModeDiv thead td{
|
||||
#FileExtTextModeDiv thead th{
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#FileExtTextModeDiv input{
|
||||
/*padding: 0px;
|
||||
margin: 0px;*/
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#FileExtTextModeDiv input.FileExtension{
|
||||
width: 80px;
|
||||
/*width: 80px;*/
|
||||
}
|
||||
|
||||
#FileExtTextModeDiv input.textMode{
|
||||
width: 120px;
|
||||
/*width: 120px;*/
|
||||
}
|
||||
Reference in New Issue
Block a user