First commit of the tools related to the Synonymous Dictionary.
ALso, fixed the bug with the codding tool. Added tool to download the generated project as a .zip file. Some changes to the "View>Current Project Files" tool Affected issues: - 25: Synonymouse dictionary - 32: Change the "Explore Files" label - 33: Missing the end character in the codding tool
Esse commit está contido em:
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root><defaultIdiom value="pt-BR"/><defaultDBMS value="PostgreSQL"/><lookForUpdate value="never"/><actionWithNewVersion value="1"/><actionWithNewSubVersion value="1"/><actionWithNewUpdates value="1"/></root>
|
||||
<root><defaultIdiom value="pt-BR"/><defaultDBMS value="PostgreSQL"/><lookForUpdate value="never"/><actionWithNewVersion value="-1"/><actionWithNewSubVersion value="-1"/><actionWithNewUpdates value="-1"/><useGlobalSynDic>on</useGlobalSynDic><useLocalSynDic>on</useLocalSynDic><addAutomatically>global</addAutomatically><reportDecisions>on</reportDecisions><reportDoubts>on</reportDoubts></root>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
public $relations= Array();
|
||||
public $DDL;
|
||||
public $processedWML;
|
||||
public $currentOptions= null;
|
||||
private $currentLineNumber;
|
||||
private $currentLine;
|
||||
public $sentences;
|
||||
@@ -23,9 +24,10 @@
|
||||
public $errors= 0;
|
||||
public $globalAttributeList= Array();
|
||||
public $status= 1;
|
||||
public $synonymous= Array();
|
||||
public $debug= Array();
|
||||
public $subTypes = Array();
|
||||
// this table will be created, and then discarted
|
||||
// this table will be created on the memory, but will be discarted in the end of the process
|
||||
public $theWebMindLanguageTempTable= 'theWebMindLanguageTempTable';
|
||||
// supported types
|
||||
public $types = Array('char',
|
||||
@@ -131,11 +133,29 @@
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method simply prepares the output messages to log
|
||||
* @author Felipe Nascimento
|
||||
* @name log
|
||||
* @param Int $level
|
||||
* @param String $msg
|
||||
* @return void
|
||||
*/
|
||||
private function log($level, $msg)
|
||||
{
|
||||
$this->currentOptions;
|
||||
if($level=='2' && $this->currentOptions['reportDecisions'] !='on')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if($level=='3' && $this->currentOptions['reportDoubts'] !='on')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$this->messages[]= Array($level, $msg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method has the responsability to understand (interpret) the code... this is the core
|
||||
* @author Felipe Nascimento
|
||||
@@ -145,7 +165,7 @@
|
||||
*/
|
||||
private function process($project)
|
||||
{
|
||||
// again, we will use the global _MIND to have all the properties and methods as a singleton
|
||||
// again, we will use the global _MIND to have all the properties and methods as a singleton
|
||||
GLOBAL $_MIND;
|
||||
// lets log each step
|
||||
$this->log(4, "Starting...");
|
||||
@@ -161,11 +181,13 @@
|
||||
|
||||
$this->especialChars= $lang->especialChars;
|
||||
$this->fixedChars= $lang->fixedChars;
|
||||
$project->wml= preg_replace('/\r/', '', $project->wml);
|
||||
|
||||
// identifying structures / subTypess
|
||||
// e.g.: $sex:char(1, {F=Female|M=Male}).
|
||||
$regExp= '\$\w[a-z0-9_]+:\w.+\)';
|
||||
$this->sentences= preg_match_all('/'.$regExp.'/i', $project->wml, $matches);
|
||||
|
||||
// if there are subtypes, we will create a temp table to keep them
|
||||
// we have to log it, too, and then parse it, as it was a simple attribute
|
||||
if(sizeof($matches[0]) > 0)
|
||||
@@ -174,6 +196,7 @@
|
||||
|
||||
$matches= $matches[0];
|
||||
$this->log(4, "Identifying subtypes...");
|
||||
|
||||
// here, we will use all the identified subtypes, replacing with them in
|
||||
// the lines where they were being used
|
||||
for($i=0; $i<sizeof($matches); $i++)
|
||||
@@ -187,6 +210,33 @@
|
||||
}
|
||||
}
|
||||
|
||||
// here, we're about to identify the definitions, for synonymous
|
||||
// its rules are just like this: user=users, usuarios.
|
||||
$regExp= '\@\w+=[\w \,]+[\.|\;|$]';
|
||||
$x= preg_match_all('/'.$regExp.'/i', $project->wml, $matches);
|
||||
|
||||
// if we got some matching pattern
|
||||
if(sizeof($matches[0]) > 0)
|
||||
{
|
||||
$this->log(4, "Treating synonymous...");
|
||||
$matches= $matches[0];
|
||||
for($i=0; $i<sizeof($matches); $i++)
|
||||
{
|
||||
$cur= explode('=', $matches[$i]);
|
||||
$cur[1]= explode(',', $cur[1]);
|
||||
$mainWord= $this->filter(substr($cur[0], 1));
|
||||
|
||||
for($j=0, $k= sizeof($cur[1]); $j<$k; $j++)
|
||||
{
|
||||
// I know this is a confusing line. It cleans the name of any synonymous, to not fill our dictionary with trash.
|
||||
// Also, this is a faster way to use, afterwards. It's gonna be better for our performance.
|
||||
$this->synonymous[$this->filter(trim($cur[1][$j]))]= trim($mainWord);
|
||||
}
|
||||
// we have to avoid this expression, to not be interpreted afterwards
|
||||
$project->wml= str_replace($matches[$i], '', $project->wml);
|
||||
}
|
||||
}
|
||||
|
||||
$this->log(4, "Analysing expressions...");
|
||||
// here, we gotta parse our prepared sentences
|
||||
// from now on, $this->sentences will be an array with each expression, already patternized
|
||||
@@ -606,8 +656,79 @@
|
||||
" warning(s) and ".$this->errors.' error(s)</b>');
|
||||
}
|
||||
$this->debug['messages']= $this->messages;
|
||||
$this->saveCurrentDictionary();
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This function will saves the current synonymous dictionary to the local ORthe global one
|
||||
* @author Felipe Nascimento
|
||||
* @name saveCurrentDictionary
|
||||
* @return boolean
|
||||
*/
|
||||
private function saveCurrentDictionary()
|
||||
{
|
||||
if(!isset($this->currentOptions['addAutomatically']))
|
||||
return true;
|
||||
|
||||
GLOBAL $_MIND;
|
||||
// yes, I do know it could be implemented in a different way, but, once it's gonna run only once each time
|
||||
// you run the project, I prefered to write just like this, to let it more "readable"
|
||||
if($this->currentOptions['addAutomatically'] == 'global')
|
||||
{
|
||||
$file= $_MIND['rootDir'].$_MIND['languageDir'].'/'.$this->lang.'/synonymous.json';
|
||||
$f= fopen($file, 'w+');
|
||||
if(file_put_contents($file, JSON_encode($this->synonymous)))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}elseif($this->currentOptions['addAutomatically'] == 'local')
|
||||
{
|
||||
$file= $_MIND['rootDir'].$_MIND['publishDir'].'/'.$this->projectName.'/mind/synonymous.json';
|
||||
$f= fopen($file, 'w+');
|
||||
if(file_put_contents($file, JSON_encode($this->synonymous)))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will load the synonymous of this project, only. Depending on the set options;
|
||||
* @author Felipe Nascimento
|
||||
* @name loadLocalDictionary
|
||||
* @return void
|
||||
*/
|
||||
private function loadLocalDictionary()
|
||||
{
|
||||
GLOBAL $_MIND;
|
||||
$file= $_MIND['rootDir'].$_MIND['publishDir'].'/'.$this->projectName.'/mind/synonymous.json';
|
||||
if($this->currentOptions['useGlobalSynDic'] == 'on' && file_exists($file))
|
||||
{
|
||||
$syn= JSON_decode(file_get_contents($file), true);
|
||||
if(is_array($syn))
|
||||
$this->synonymous= array_merge($syn, $this->synonymous);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will load the global synonymous dictionary if Mind should do so, depending on the set options;
|
||||
* @author Felipe Nascimento
|
||||
* @name loadGlobalDictionary
|
||||
* @return void
|
||||
*/
|
||||
private function loadGlobalDictionary()
|
||||
{
|
||||
GLOBAL $_MIND;
|
||||
$file= $_MIND['rootDir'].$_MIND['languageDir'].'/'.$this->lang.'/synonymous.json';
|
||||
if($this->currentOptions['useGlobalSynDic'] == 'on' && file_exists($file))
|
||||
{
|
||||
$syn= JSON_decode(file_get_contents($file), true);
|
||||
if(is_array($syn))
|
||||
$this->synonymous= array_merge($syn, $this->synonymous);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the constructor
|
||||
@@ -618,12 +739,20 @@
|
||||
* @param [Project Object]
|
||||
* @return MindProcessor Object
|
||||
*/
|
||||
public function __construct($project=false) // obj of project
|
||||
public function __construct($project=false)
|
||||
{
|
||||
// if no project has been received, we simply return the new empty Object
|
||||
GLOBAL $_MIND;
|
||||
$this->currentOptions= $_MIND['fw']->loadOptions();
|
||||
|
||||
// if no project has been received, we simply return the new empty Object
|
||||
if(!$project){
|
||||
return $this;
|
||||
}
|
||||
$this->lang= $project->lang;
|
||||
$this->projectName= $project->name;
|
||||
|
||||
$this->loadGlobalDictionary();
|
||||
$this->loadLocalDictionary();
|
||||
|
||||
// if a project Object has been sent to this method, then process it and return its result
|
||||
return $this->process($project);
|
||||
@@ -713,6 +842,12 @@
|
||||
// and the left word is the secont entity
|
||||
$rightTable= $this->filter(trim($mindExp[sizeof($mindExp)-1]));
|
||||
|
||||
// let's, first, see if any of these entities should be replaced by any synonymous
|
||||
if(isset($this->synonymous[$leftTable]))
|
||||
$leftTable= $this->synonymous[$leftTable];
|
||||
if(isset($this->synonymous[$rightTable]))
|
||||
$rightTable= $this->synonymous[$rightTable];
|
||||
|
||||
/*
|
||||
* if the name of right table has a ":" it means it is probably an attribute
|
||||
* wrote with some mistake
|
||||
@@ -730,7 +865,6 @@
|
||||
// anyways... we will fix the name to a valid one
|
||||
$rightTable= $newTmpName;
|
||||
$this->warnings++;
|
||||
//continue;
|
||||
}
|
||||
// here, we find those entities which point to themselves
|
||||
if($leftTable == $rightTable)
|
||||
@@ -847,6 +981,11 @@
|
||||
$mindExp= explode(trim($this->verbId), $mindExp);
|
||||
// firstly, we gotta create the left table, if it does not exist
|
||||
$leftTable= $this->filter(trim($mindExp[0]));
|
||||
|
||||
// we here, will check if this entity may not be replaced by a synonymous
|
||||
if(isset($this->synonymous[$leftTable]))
|
||||
$leftTable= $this->synonymous[$leftTable];
|
||||
|
||||
if(!isset($this->tables[$leftTable]))
|
||||
{
|
||||
$this->tables[$leftTable]= new Table($leftTable);
|
||||
|
||||
@@ -9,13 +9,28 @@
|
||||
{
|
||||
if(isset($_GET['projectdirtoshow']))
|
||||
{
|
||||
$original_dir= $_MIND['publishDir'].'/'.$p.'/root';
|
||||
$userDir= $_MIND['publishDir'].'/'.$p.'/root';
|
||||
$original_dir= $_MIND['publishDir'].'/'.$p.'/root/';
|
||||
$userDir= $_MIND['publishDir'].'/'.$p.'/root/';
|
||||
}else{
|
||||
$userDir= $_MIND['userDir'].'/'.$_SESSION['user']['login'].'/temp/'.$p.'/root';
|
||||
$userDir= $_MIND['userDir'].'/'.$_SESSION['user']['login'].'/temp/'.$p.'/root/';
|
||||
$original_dir= $userDir;
|
||||
}
|
||||
|
||||
if(isset($_GET['zip']))
|
||||
{
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename="'.$p.'.zip"');
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Pragma: no-cache');
|
||||
|
||||
$path= str_replace(basename($_SERVER['SCRIPT_FILENAME']), '', $_SERVER['SCRIPT_FILENAME']);
|
||||
$from= 'cd '.$path.'; cd '.$_MIND['rootDir'].'; cd '.$original_dir.'../;';
|
||||
$ret= exec($from.' zip -r mind/'.$p.'.zip root/');
|
||||
|
||||
readfile($_MIND['rootDir'].$original_dir.'../mind/'.$p.'.zip');
|
||||
exit;
|
||||
}
|
||||
if(isset($_GET['f']))
|
||||
{
|
||||
if(file_exists($_GET['f']))
|
||||
@@ -88,7 +103,7 @@
|
||||
|
||||
if($ext == 'inc') // I should tell you ... do NOT use .inc files ... even though, if you wan to... ok
|
||||
$ext= 'php';
|
||||
if($ext == 'txt')
|
||||
if($ext == 'txt' || $ext == 'json')
|
||||
$ext= 'plain';
|
||||
|
||||
if($ext == 'ini')
|
||||
@@ -208,7 +223,6 @@
|
||||
|
||||
$d = dir($dir);
|
||||
$tmpDir;
|
||||
//echo $curVersion['date'].'<hr>';
|
||||
|
||||
while (false !== ($entry = $d->read()))
|
||||
{
|
||||
@@ -216,7 +230,6 @@
|
||||
{
|
||||
$tmpDir= str_replace($userDir, '', $dir.'/'.$entry);
|
||||
$pos= sizeof(explode('/', $tmpDir)) -4;
|
||||
//echo $entry;
|
||||
if(is_dir($dir.'/'.$entry))
|
||||
{
|
||||
$id= "files_explorer_".$pos.basename($tmpDir).rand(0,9999);
|
||||
@@ -245,15 +258,43 @@
|
||||
<a href='<?php echo $original_dir; ?>'
|
||||
target='_quot'
|
||||
style='text-decoration:none;padding:0px; margin:0px;'>
|
||||
<div style='border-bottom:solid 1px #666;
|
||||
<div style='border:solid 1px #666;
|
||||
background-color:#e0e0e0;
|
||||
cursor:pointer;'
|
||||
cursor:pointer;
|
||||
height:20px;
|
||||
margin:1px;'
|
||||
onmouseover="this.style.backgroundColor= '#f0f0f0'"
|
||||
onmouseout="this.style.backgroundColor= '#e0e0e0'">
|
||||
Explore Files
|
||||
See it Running
|
||||
</div>
|
||||
</a>
|
||||
<div style='padding:2px;'>
|
||||
<a href='<?php echo $_SERVER['PHP_SELF'].'?zip=1&p='.$p; ?>'
|
||||
target='downloadFrame'
|
||||
style='text-decoration:none;padding:0px; margin:0px;'>
|
||||
<div style='border:solid 1px #666;
|
||||
background-color:#e0e0e0;
|
||||
cursor:pointer;
|
||||
height:20px;
|
||||
margin:1px;'
|
||||
onmouseover="this.style.backgroundColor= '#f0f0f0'"
|
||||
onmouseout="this.style.backgroundColor= '#e0e0e0'">
|
||||
Download current
|
||||
</div>
|
||||
</a>
|
||||
<a href="JavaScript: $('#addressHereTreeDiv').toggle(); void(0);"
|
||||
style='text-decoration:none;padding:0px; margin:0px;'>
|
||||
<div style='border:solid 1px #666;
|
||||
background-color:#e0e0e0;
|
||||
cursor:pointer;
|
||||
height:20px;
|
||||
margin:1px;'
|
||||
onmouseover="this.style.backgroundColor= '#f0f0f0'"
|
||||
onmouseout="this.style.backgroundColor= '#e0e0e0'">
|
||||
Files Tree
|
||||
</div>
|
||||
</a>
|
||||
<div style='padding:2px;'
|
||||
id='addressHereTreeDiv'>
|
||||
<?php
|
||||
throughDir($_MIND['rootDir'].$userDir);
|
||||
?>
|
||||
@@ -274,6 +315,10 @@
|
||||
src="about:blanc">
|
||||
</iframe>
|
||||
</div>
|
||||
<iframe id='downloadFrame'
|
||||
name='downloadFrame'
|
||||
style='display:none;'>
|
||||
</iframe>
|
||||
<script>
|
||||
|
||||
var showCurrentCodeOf= function(file){
|
||||
@@ -289,14 +334,5 @@
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//header("Location: ".$addr);
|
||||
//echo $addr;
|
||||
}
|
||||
?>
|
||||
@@ -16,12 +16,13 @@ Mind.Dialog.CloseModal();
|
||||
$op= $_MIND['fw']->loadOptions();
|
||||
?>
|
||||
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
|
||||
mthod='POST'
|
||||
method='POST'
|
||||
onsubmit="return false"
|
||||
id='optionsForm'>
|
||||
<ul>
|
||||
<li><a href="#optionsForm_tab1">Laytout</a></li>
|
||||
<li><a href="#optionsForm_tab2">Updates</a></li>
|
||||
<li><a href="#optionsForm_tab3">I.Q.</a></li>
|
||||
</ul>
|
||||
<div id="optionsForm_tab1">
|
||||
<table>
|
||||
@@ -123,7 +124,7 @@ Mind.Dialog.CloseModal();
|
||||
<tr>
|
||||
<td>
|
||||
Check for updates<br/>
|
||||
<select name='lookForUpdate' onchange="optionsFormChangeUpdate(this)">
|
||||
<select name='lookForUpdate' id='mindOptionsLookForUpdate' onchange="optionsFormChangeUpdate(this)">
|
||||
<option value='1'
|
||||
<?php
|
||||
if($op['lookForUpdate'] == 1)
|
||||
@@ -243,6 +244,38 @@ Mind.Dialog.CloseModal();
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="optionsForm_tab3">
|
||||
<input type='checkbox'
|
||||
<?php if(isset($op['useGlobalSynDic']) && $op['useGlobalSynDic'] == 'on') echo "checked='checked'" ?>
|
||||
name='useGlobalSynDic'/>
|
||||
Use Global Synonimous<br/>
|
||||
|
||||
<input type='checkbox'
|
||||
name='addAutomatically'
|
||||
id='addAutomatically1'
|
||||
value='global'
|
||||
<?php if(isset($op['addAutomatically']) && $op['addAutomatically'] == 'global') echo "checked='checked'" ?> />
|
||||
Add new synonymous automatically<br/>
|
||||
<input type='checkbox'
|
||||
<?php if(isset($op['useLocalSynDic']) && $op['useLocalSynDic'] == 'on') echo "checked='checked'" ?>
|
||||
name='useLocalSynDic'/>
|
||||
Use Project Synonimous<br/>
|
||||
|
||||
<input type='checkbox'
|
||||
name='addAutomatically'
|
||||
id='addAutomatically2'
|
||||
value='local'
|
||||
<?php if(isset($op['addAutomatically']) && $op['addAutomatically'] == 'local') echo "checked='checked'" ?> />
|
||||
Add new synonymous automatically<br/>
|
||||
<input type='checkbox'
|
||||
<?php if(isset($op['reportDecisions']) && $op['reportDecisions'] == 'on') echo "checked='checked'" ?>
|
||||
name='reportDecisions' />
|
||||
Report decisions<br/>
|
||||
<input type='checkbox'
|
||||
<?php if(isset($op['reportDoubts']) && $op['reportDoubts'] == 'on') echo "checked='checked'" ?>
|
||||
name='reportDoubts' />
|
||||
Report doubts<br/>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
function optionsFormChangeUpdate(o)
|
||||
@@ -257,5 +290,48 @@ Mind.Dialog.CloseModal();
|
||||
|
||||
$(function() {
|
||||
$("#optionsForm").tabs();
|
||||
optionsFormChangeUpdate(document.getElementById('mindOptionsLookForUpdate'));
|
||||
|
||||
var iq= $('#optionsForm_tab3');
|
||||
var gSynDic= iq.find("[name=useGlobalSynDic]");
|
||||
var lSynDic= iq.find('[name=useLocalSynDic]');
|
||||
|
||||
if(!gSynDic.is(':checked'))
|
||||
{
|
||||
document.getElementById('addAutomatically1').disabled= 'disabled';
|
||||
document.getElementById('addAutomatically1').checked= false;
|
||||
}
|
||||
if(!lSynDic.is(':checked'))
|
||||
{
|
||||
document.getElementById('addAutomatically2').disabled= 'disabled';
|
||||
document.getElementById('addAutomatically2').checked= false;
|
||||
}
|
||||
|
||||
$('#addAutomatically2').bind('click', function(){
|
||||
if(this.checked)
|
||||
document.getElementById('addAutomatically1').checked= false;
|
||||
});
|
||||
|
||||
$('#addAutomatically1').bind('click', function(){
|
||||
if(this.checked)
|
||||
document.getElementById('addAutomatically2').checked= false;
|
||||
});
|
||||
gSynDic.bind('click', function(){
|
||||
if(this.checked)
|
||||
{
|
||||
document.getElementById('addAutomatically1').removeAttribute('disabled');
|
||||
}else{
|
||||
document.getElementById('addAutomatically1').setAttribute('disabled', 'disabled');
|
||||
}
|
||||
})
|
||||
|
||||
lSynDic.bind('click', function(){
|
||||
if(this.checked)
|
||||
{
|
||||
document.getElementById('addAutomatically2').removeAttribute('disabled');
|
||||
}else{
|
||||
document.getElementById('addAutomatically2').setAttribute('disabled', 'disabled');
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -91,14 +91,14 @@
|
||||
function getEncoded($n)
|
||||
{
|
||||
$n= utf8_decode($n);
|
||||
$n= addslashes(strip_tags(preg_replace('/[\!\@\#\$\%\¨\&\*\(\)\\_\-\=\+\^\~\,\.\{\[\]\}\?\"\']\;\/\:/', '', $n)));
|
||||
$n= preg_replace('/[áâãà]/i', 'a', $n);
|
||||
$n= preg_replace('/[éêèë]/i', 'e', $n);
|
||||
$n= preg_replace('/[íìîï]/i', 'i', $n);
|
||||
$n= preg_replace('/[óòõôö]/i', 'o', $n);
|
||||
$n= preg_replace('/[úùûü]/i', 'u', $n);
|
||||
$n= preg_replace('/ç/i', 'c', $n);
|
||||
$n= preg_replace('/ñ/i', 'n', $n);
|
||||
$n= addslashes(strip_tags(preg_replace('/[\!\@\#\$\%\�\&\*\(\)\\_\-\=\+\^\~\,\.\{\[\]\}\?\"\']\;\/\:/', '', $n)));
|
||||
$n= preg_replace('/[����]/i', 'a', $n);
|
||||
$n= preg_replace('/[����]/i', 'e', $n);
|
||||
$n= preg_replace('/[����]/i', 'i', $n);
|
||||
$n= preg_replace('/[�����]/i', 'o', $n);
|
||||
$n= preg_replace('/[����]/i', 'u', $n);
|
||||
$n= preg_replace('/�/i', 'c', $n);
|
||||
$n= preg_replace('/�/i', 'n', $n);
|
||||
$n= preg_replace('/^[0-9]/', '_', $n);
|
||||
return $n;
|
||||
}
|
||||
@@ -133,7 +133,6 @@
|
||||
echo "Mind.Dialog.ShowError(".JSON_encode($_MIND['fw']->errorOutput(8))."); ";
|
||||
if(!$flag)
|
||||
exit;
|
||||
//return $this->output;
|
||||
}
|
||||
function loadExternal()
|
||||
{
|
||||
@@ -357,7 +356,7 @@
|
||||
|
||||
public function fixName($str)
|
||||
{
|
||||
return preg_replace("[^a-zA-Z0-9_]", "", strtr($str, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
|
||||
return preg_replace("[^a-zA-Z0-9_]", "", strtr($str, "�������������������������� ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
|
||||
}
|
||||
|
||||
function getSavedERDList($p)
|
||||
@@ -446,6 +445,22 @@
|
||||
else
|
||||
$xml->actionWithNewUpdates['value']= '-1';
|
||||
|
||||
// for I.Q. Options
|
||||
if(isset($ar['useGlobalSynDic']))
|
||||
$xml->addChild('useGlobalSynDic', $ar['useGlobalSynDic']);
|
||||
if(isset($ar['useLocalSynDic']))
|
||||
$xml->addChild('useLocalSynDic', $ar['useLocalSynDic']);
|
||||
if(isset($ar['addAutomatically']))
|
||||
$xml->addChild('addAutomatically', $ar['addAutomatically']);
|
||||
if(isset($ar['askForVerbs']))
|
||||
$xml->addChild('askForVerbs', $ar['askForVerbs']);
|
||||
if(isset($ar['askForTypes']))
|
||||
$xml->addChild('askForTypes', $ar['askForTypes']);
|
||||
if(isset($ar['reportDecisions']))
|
||||
$xml->addChild('reportDecisions', $ar['reportDecisions']);
|
||||
if(isset($ar['reportDoubts']))
|
||||
$xml->addChild('reportDoubts', $ar['reportDoubts']);
|
||||
|
||||
$_MIND['fw']->saveXML($xml, $opXML);
|
||||
|
||||
}
|
||||
@@ -460,6 +475,15 @@
|
||||
$opts['actionWithNewVersion'] = (string)$op->actionWithNewVersion['value'];
|
||||
$opts['actionWithNewSubVersion']= (string)$op->actionWithNewSubVersion['value'];
|
||||
$opts['actionWithNewUpdates'] = (string)$op->actionWithNewUpdates['value'];
|
||||
|
||||
$opts['useGlobalSynDic'] = (string)$op->useGlobalSynDic;
|
||||
$opts['useLocalSynDic'] = (string)$op->useLocalSynDic;
|
||||
$opts['addAutomatically'] = (string)$op->addAutomatically;
|
||||
$opts['askForVerbs'] = (string)$op->askForVerbs;
|
||||
$opts['askForTypes'] = (string)$op->askForTypes;
|
||||
$opts['reportDecisions'] = (string)$op->reportDecisions;
|
||||
$opts['reportDoubts'] = (string)$op->reportDoubts;
|
||||
|
||||
return $opts;
|
||||
}
|
||||
public function getThemes()
|
||||
@@ -507,16 +531,10 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
// exit;
|
||||
}
|
||||
|
||||
$_MIND['fw']= new Mind();
|
||||
$_MIND['fw']->loadExternal();
|
||||
set_error_handler('errorHandle');
|
||||
|
||||
/*$u= new User();
|
||||
$u->name('Felipe Nascimento');
|
||||
$u->pwd('pqp');
|
||||
$u->login('felipe');
|
||||
$u->email('felipe@thewebmind.org');
|
||||
$u->save();*/
|
||||
set_error_handler('errorHandle');
|
||||
?>
|
||||
@@ -87,7 +87,7 @@ Mind.MindEditor= {
|
||||
},
|
||||
filterCaracters: function(v)
|
||||
{
|
||||
v= v.replace(/[\"\'@#$%&\(\)\[\]\{\}\+\=\§]/ig, '');
|
||||
v= v.replace(/[\"\'@#$%&\(\)\[\]\{\}\+\=\�]/ig, '');
|
||||
if(!isNaN(v.substring(0,1)))
|
||||
v= '_'+v;
|
||||
return v;
|
||||
@@ -208,7 +208,7 @@ Mind.MindEditor= {
|
||||
SetUserConfig : function(){
|
||||
// Tamanho da fonte
|
||||
Mind.MindEditor.SetSize(Mind.Theme.userConfig.fontSize);
|
||||
//Marca como selecionado a opção armazenada
|
||||
//Marca como selecionado a op��o armazenada
|
||||
if(document.getElementById("font_size_select"))
|
||||
{
|
||||
var comboFontSize = document.getElementById("font_size_select");
|
||||
@@ -225,7 +225,7 @@ Mind.MindEditor= {
|
||||
// Cor de Fundo
|
||||
document.getElementById('bgToChangeOnEditor').style.backgroundColor = Mind.Theme.userConfig.backgroundColor;
|
||||
|
||||
// Ajusta a posição do painel esquerdo
|
||||
// Ajusta a posi��o do painel esquerdo
|
||||
Mind.Panel["left"].Size(Mind.Theme.userConfig.leftPanelPos);
|
||||
Mind.Panel["right"].Size(parseInt(document.body.clientWidth) - parseInt(Mind.Theme.userConfig.rightPanelPos));
|
||||
Mind.Panel["bottom"].Size(parseInt(document.body.clientHeight) - parseInt(Mind.Theme.userConfig.bottomPanelPos));
|
||||
@@ -251,7 +251,6 @@ Mind.MindEditor= {
|
||||
{
|
||||
$('#mindEditorTool [guia=true]').css('display', 'none');
|
||||
var h= e.offsetHeight;
|
||||
//e.style.display= 'none';
|
||||
setTimeout(function(){
|
||||
$(e).animate({
|
||||
top:e.offsetTop + e.offsetHeight - 2,
|
||||
@@ -262,7 +261,7 @@ Mind.MindEditor= {
|
||||
});
|
||||
}, 200);
|
||||
return;
|
||||
} // else, show it
|
||||
}
|
||||
e.style.display= '';
|
||||
var h= e.offsetHeight;
|
||||
var c= document.getElementById('mindEditor').value;
|
||||
@@ -302,16 +301,16 @@ Mind.MindEditor= {
|
||||
return;
|
||||
if(rel == '1/1')
|
||||
{
|
||||
str+= l+ ' '+ Mind.Project.attributes['verb']+ ' 1 '+ r+ '\n';
|
||||
str+= l+ ' '+ Mind.Project.attributes['verb']+ ' 1 '+ r+ '.\n';
|
||||
str+= r+ ' '+ Mind.Project.attributes['verb']+ ' 1 '+ l;
|
||||
}else if(rel == 'n/n')
|
||||
{
|
||||
str+= l+ ' '+ Mind.Project.attributes['verb']+ ' n '+ r+ '\n';
|
||||
str+= l+ ' '+ Mind.Project.attributes['verb']+ ' n '+ r+ '.\n';
|
||||
str+= r+ ' '+ Mind.Project.attributes['verb']+ ' n '+ l;
|
||||
}else{
|
||||
str+= l+ ' '+ Mind.Project.attributes['verb']+ ' '+ rel.substring(2,3)+ ' '+ r;
|
||||
}
|
||||
document.getElementById('mindEditor').value+= str;
|
||||
document.getElementById('mindEditor').value+= str+'.';
|
||||
Mind.MindEditor.Typing(document.getElementById('mindEditor').value, false);
|
||||
document.getElementById('mindEditorToolForm').reset();
|
||||
document.getElementById('mindEditorTool_Entities_left').focus();
|
||||
@@ -364,7 +363,7 @@ Mind.MindEditor= {
|
||||
if(comment.replace(/ /g, '') != '')
|
||||
str+= ' // '+ comment;
|
||||
}
|
||||
document.getElementById('mindEditor').value+= str;
|
||||
document.getElementById('mindEditor').value+= str+'.';
|
||||
Mind.MindEditor.Typing(document.getElementById('mindEditor').value, false);
|
||||
document.getElementById('mindEditorToolForm').reset();
|
||||
document.getElementById('mindEditorTool_Attribute_entity').focus();
|
||||
@@ -408,7 +407,7 @@ Mind.MindEditor= {
|
||||
if(comment.replace(/ /g, '') != '')
|
||||
str+= ' // '+ comment;
|
||||
|
||||
document.getElementById('mindEditor').value= str+ '\n'+ document.getElementById('mindEditor').value;
|
||||
document.getElementById('mindEditor').value= str+ '.\n'+ document.getElementById('mindEditor').value;
|
||||
Mind.MindEditor.Typing(document.getElementById('mindEditor').value, false);
|
||||
document.getElementById('mindEditorToolForm').reset();
|
||||
document.getElementById('mindEditorTool_subtype_name').focus();
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<verb value="usa"/>
|
||||
<verb value="usam"/>
|
||||
<verb value="pertence a"/>
|
||||
<verb value="ganha"/></verbs>
|
||||
<verb value="ganha"/><verb value="ministra"/></verbs>
|
||||
<belongs>
|
||||
<verb value="pode ser"/>
|
||||
<verb value="pode ter"/>
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário