mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
Add autocompleter for metatags
This commit is contained in:
@@ -32,6 +32,131 @@ class Description implements ControllerProviderInterface
|
|||||||
$controllers = new ControllerCollection();
|
$controllers = new ControllerCollection();
|
||||||
|
|
||||||
|
|
||||||
|
$controllers->get('/metadatas/search/', function(Application $app, Request $request) {
|
||||||
|
|
||||||
|
$term = trim(strtolower($request->get('term')));
|
||||||
|
$res = array();
|
||||||
|
|
||||||
|
if ($term) {
|
||||||
|
$provider = new \PHPExiftool\Driver\TagProvider();
|
||||||
|
|
||||||
|
$table = $provider->getLookupTable();
|
||||||
|
$table['phraseanet'] = array(
|
||||||
|
'pdftext' => array(
|
||||||
|
'tagname' => 'PdfText',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\PdfText',
|
||||||
|
'namespace' => 'Phraseanet'),
|
||||||
|
'tfarchivedate' => array(
|
||||||
|
'tagname' => 'TfArchivedate',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfArchivedate',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfatime' => array(
|
||||||
|
'tagname' => 'TfAtime',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfAtime',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfbits' => array(
|
||||||
|
'tagname' => 'TfBits',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfBits',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfbasename' => array(
|
||||||
|
'tagname' => 'TfBasename',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfBasename',
|
||||||
|
'namespace' => 'Phraseanet'),
|
||||||
|
'tfchannels' => array(
|
||||||
|
'tagname' => 'TfChannels',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfChannels',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tTfCtime' => array(
|
||||||
|
'tagname' => 'TfCtime',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfCtime',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfduration' => array(
|
||||||
|
'tagname' => 'TfDuration',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfDuration',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfeditdate' => array(
|
||||||
|
'tagname' => 'TfEditdate',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfEditdate',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfextension' => array(
|
||||||
|
'tagname' => 'TfExtension',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfExtension',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tffilename' => array(
|
||||||
|
'tagname' => 'TfFilename',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfFilename',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tffilepath' => array(
|
||||||
|
'tagname' => 'TfFilepath',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfFilepath',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfheight' => array(
|
||||||
|
'tagname' => 'TfHeight',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfHeight',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfmimetype' => array(
|
||||||
|
'tagname' => 'TfMimetype',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfMimetype',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfmtime' => array(
|
||||||
|
'tagname' => 'TfMtime',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfMtime',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfdirname' => array(
|
||||||
|
'tagname' => 'TfDirname',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfDirname',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfrecordid' => array(
|
||||||
|
'tagname' => 'TfRecordid',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfRecordid',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfsize' => array(
|
||||||
|
'tagname' => 'TfSize',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfSize',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
'tfwidth' => array(
|
||||||
|
'tagname' => 'TfWidth',
|
||||||
|
'classname' => '\\Alchemy\\Phrasea\\Metadata\\Tag\\TfWidth',
|
||||||
|
'namespace' => 'Phraseanet'
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($table as $namespace => $tags) {
|
||||||
|
$ns = strpos($namespace, $term);
|
||||||
|
|
||||||
|
foreach ($tags as $tagname => $datas) {
|
||||||
|
if ($ns === false && strpos($tagname, $term) === false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$res[] = array(
|
||||||
|
'id' => $namespace . '/' . $tagname,
|
||||||
|
'label' => $datas['namespace'] . ' / ' . $datas['tagname'],
|
||||||
|
'value' => $datas['namespace'] . ':' . $datas['tagname'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new \Symfony\Component\HttpFoundation\JsonResponse($res);
|
||||||
|
});
|
||||||
|
|
||||||
$controllers->post('/{sbas_id}/', function(Application $app, $sbas_id) {
|
$controllers->post('/{sbas_id}/', function(Application $app, $sbas_id) {
|
||||||
$Core = $app['Core'];
|
$Core = $app['Core'];
|
||||||
$user = $Core->getAuthenticatedUser();
|
$user = $Core->getAuthenticatedUser();
|
||||||
@@ -44,7 +169,6 @@ class Description implements ControllerProviderInterface
|
|||||||
|
|
||||||
$databox = \databox::get_instance((int) $sbas_id);
|
$databox = \databox::get_instance((int) $sbas_id);
|
||||||
$fields = $databox->get_meta_structure();
|
$fields = $databox->get_meta_structure();
|
||||||
$available_fields = \databox::get_available_metadatas();
|
|
||||||
$available_dc_fields = $databox->get_available_dcfields();
|
$available_dc_fields = $databox->get_available_dcfields();
|
||||||
|
|
||||||
|
|
||||||
@@ -132,14 +256,12 @@ class Description implements ControllerProviderInterface
|
|||||||
|
|
||||||
$databox = \databox::get_instance((int) $sbas_id);
|
$databox = \databox::get_instance((int) $sbas_id);
|
||||||
$fields = $databox->get_meta_structure();
|
$fields = $databox->get_meta_structure();
|
||||||
$available_fields = \databox::get_available_metadatas();
|
|
||||||
$available_dc_fields = $databox->get_available_dcfields();
|
$available_dc_fields = $databox->get_available_dcfields();
|
||||||
|
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
'databox' => $databox,
|
'databox' => $databox,
|
||||||
'fields' => $fields,
|
'fields' => $fields,
|
||||||
'available_fields' => $available_fields,
|
|
||||||
'available_dc_fields' => $available_dc_fields,
|
'available_dc_fields' => $available_dc_fields,
|
||||||
'vocabularies' => \Alchemy\Phrasea\Vocabulary\Controller::getAvailable(),
|
'vocabularies' => \Alchemy\Phrasea\Vocabulary\Controller::getAvailable(),
|
||||||
);
|
);
|
||||||
|
@@ -649,44 +649,6 @@ class databox extends base
|
|||||||
return sprintf("%s@%s:%s (MySQL %s)", $this->dbname, $this->host, $this->port, $this->get_connection()->server_info());
|
return sprintf("%s@%s:%s (MySQL %s)", $this->dbname, $this->host, $this->port, $this->get_connection()->server_info());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return an array of available metadata objects
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
public static function get_available_metadatas()
|
|
||||||
{
|
|
||||||
$provider = new PHPExiftool\Driver\TagProvider();
|
|
||||||
|
|
||||||
$available = $provider->getAll();
|
|
||||||
|
|
||||||
$available['Phraseanet'] = array(
|
|
||||||
'PdfText' => new \Alchemy\Phrasea\Metadata\Tag\PdfText(),
|
|
||||||
'TfArchivedate' => new \Alchemy\Phrasea\Metadata\Tag\TfArchivedate(),
|
|
||||||
'TfAtime' => new \Alchemy\Phrasea\Metadata\Tag\TfAtime(),
|
|
||||||
'TfBits' => new \Alchemy\Phrasea\Metadata\Tag\TfBits(),
|
|
||||||
'TfBasename' => new \Alchemy\Phrasea\Metadata\Tag\TfBasename(),
|
|
||||||
'TfChannels' => new \Alchemy\Phrasea\Metadata\Tag\TfChannels(),
|
|
||||||
'TfCtime' => new \Alchemy\Phrasea\Metadata\Tag\TfCtime(),
|
|
||||||
'TfDuration' => new \Alchemy\Phrasea\Metadata\Tag\TfDuration(),
|
|
||||||
'TfEditdate' => new \Alchemy\Phrasea\Metadata\Tag\TfEditdate(),
|
|
||||||
'TfExtension' => new \Alchemy\Phrasea\Metadata\Tag\TfExtension(),
|
|
||||||
'TfFilename' => new \Alchemy\Phrasea\Metadata\Tag\TfFilename(),
|
|
||||||
'TfFilepath' => new \Alchemy\Phrasea\Metadata\Tag\TfFilepath(),
|
|
||||||
'TfHeight' => new \Alchemy\Phrasea\Metadata\Tag\TfHeight(),
|
|
||||||
'TfMimetype' => new \Alchemy\Phrasea\Metadata\Tag\TfMimetype(),
|
|
||||||
'TfMtime' => new \Alchemy\Phrasea\Metadata\Tag\TfMtime(),
|
|
||||||
'TfDirname' => new \Alchemy\Phrasea\Metadata\Tag\TfDirname(),
|
|
||||||
'TfRecordid' => new \Alchemy\Phrasea\Metadata\Tag\TfRecordid(),
|
|
||||||
'TfSize' => new \Alchemy\Phrasea\Metadata\Tag\TfSize(),
|
|
||||||
'TfWidth' => new \Alchemy\Phrasea\Metadata\Tag\TfWidth(),
|
|
||||||
);
|
|
||||||
|
|
||||||
ksort($available);
|
|
||||||
|
|
||||||
return $available;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get_available_dcfields()
|
public function get_available_dcfields()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
|
@@ -1,379 +1,350 @@
|
|||||||
|
|
||||||
{% macro dces_selector(available_dc_sources, selected_field) %}
|
{% macro dces_selector(available_dc_sources, selected_field) %}
|
||||||
{% set disabled = '' %}
|
{% set disabled = '' %}
|
||||||
{% if selected_field.is_on_error() %}
|
{% if selected_field.is_on_error() %}
|
||||||
{% set disabled = 'disabled="disabled"' %}
|
{% set disabled = 'disabled="disabled"' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<select class="metafield_{{selected_field.get_id()}} dces_selector" {{disabled}} name="dces_{{selected_field.get_id()}}">
|
<select class="metafield_{{ selected_field.get_id() }} dces_selector" {{ disabled }} name="dces_{{ selected_field.get_id() }}">
|
||||||
<option>{% trans 'choisir' %}</option>
|
<option>{% trans 'choisir' %}</option>
|
||||||
{% for field in available_dc_sources %}
|
{% for field in available_dc_sources %}
|
||||||
<option value="{{ field.get_label() }}" {% if selected_field.get_dces_element() != null and selected_field.get_dces_element().get_label() == field.get_label() %}selected="selected"{% endif %}>
|
<option value="{{ field.get_label() }}" {% if selected_field.get_dces_element() != null and selected_field.get_dces_element().get_label() == field.get_label() %}selected="selected"{% endif %}>
|
||||||
DC:{{ field.get_label() }}
|
DC:{{ field.get_label() }}
|
||||||
</option>
|
</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro thumbtitle_selector(title) %}
|
{% macro thumbtitle_selector(title) %}
|
||||||
<option value="1" {% if title == '1' %}selected="selected"{% endif %}>{% trans 'Tous' %}</option>
|
<option value="1" {% if title == '1' %}selected="selected"{% endif %}>{% trans 'Tous' %}</option>
|
||||||
<option value="0" {% if title == '0' %}selected="selected"{% endif %}>{% trans 'Aucun' %}</option>
|
<option value="0" {% if title == '0' %}selected="selected"{% endif %}>{% trans 'Aucun' %}</option>
|
||||||
<option value="fr" {% if title == 'fr' %}selected="selected"{% endif %}>{% trans 'Francais' %}</option>
|
<option value="fr" {% if title == 'fr' %}selected="selected"{% endif %}>{% trans 'Francais' %}</option>
|
||||||
<option value="de" {% if title == 'de' %}selected="selected"{% endif %}>{% trans 'Allemand' %}</option>
|
<option value="de" {% if title == 'de' %}selected="selected"{% endif %}>{% trans 'Allemand' %}</option>
|
||||||
<option value="en" {% if title == 'en' %}selected="selected"{% endif %}>{% trans 'Anglais' %}</option>
|
<option value="en" {% if title == 'en' %}selected="selected"{% endif %}>{% trans 'Anglais' %}</option>
|
||||||
<option value="ar" {% if title == 'ar' %}selected="selected"{% endif %}>{% trans 'Arabe' %}</option>
|
<option value="ar" {% if title == 'ar' %}selected="selected"{% endif %}>{% trans 'Arabe' %}</option>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<link type="text/css" rel="stylesheet" href="/include/minify/f=include/jslibs/yui2.8/build/reset/reset.css,include/jslibs/jquery-ui-1.8.17/css/ui-lightness/jquery-ui-1.8.17.custom.css,include/jslibs/jquery-treeview/jquery.treeview.css,skins/common/main.css,skins/admin/admincolor.css" />
|
<link type="text/css" rel="stylesheet" href="/include/minify/f=include/jslibs/yui2.8/build/reset/reset.css,include/jslibs/jquery-ui-1.8.17/css/ui-lightness/jquery-ui-1.8.17.custom.css,include/jslibs/jquery-treeview/jquery.treeview.css,skins/common/main.css,skins/admin/admincolor.css" />
|
||||||
<script type="text/javascript" src="/include/jslibs/jquery-1.7.1.js"></script>
|
<script type="text/javascript" src="/include/jslibs/jquery-1.7.1.js"></script>
|
||||||
<script type="text/javascript" src="/include/jslibs/jquery-ui-1.8.17/js/jquery-ui-1.8.17.custom.min.js"></script>
|
<script type="text/javascript" src="/include/jslibs/jquery-ui-1.8.17/js/jquery-ui-1.8.17.custom.min.js"></script>
|
||||||
<script type="text/javascript" src="/include/jquery.tooltip.js"></script>
|
<script type="text/javascript" src="/include/jquery.tooltip.js"></script>
|
||||||
<style>
|
<style>
|
||||||
body{
|
body{
|
||||||
font-size:12px;
|
font-size:12px;
|
||||||
}
|
|
||||||
.ui-autocomplete {
|
|
||||||
max-height: 200px;
|
|
||||||
overflow-y: auto;
|
|
||||||
/* prevent horizontal scrollbar */
|
|
||||||
overflow-x: hidden;
|
|
||||||
/* add padding to account for vertical scrollbar */
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
/* IE 6 doesn't support max-height
|
|
||||||
* we use height instead, but this forces the menu to always be this tall
|
|
||||||
*/
|
|
||||||
* html .ui-autocomplete {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
.ui-autocomplete-loading { background: white url('/skins/icons/ui-anim_basic_16x16.gif') right center no-repeat; }
|
|
||||||
.alertTips{
|
|
||||||
cursor:help;
|
|
||||||
}
|
|
||||||
.alert{
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function(){
|
|
||||||
var buttons = {};
|
|
||||||
var dialog = $('#field_changer');
|
|
||||||
buttons['{% trans 'boutton::annuler' %}'] = function(){
|
|
||||||
$('#field_changer').dialog('close');
|
|
||||||
};
|
|
||||||
buttons['{% trans 'boutton::valider' %}'] = function(){
|
|
||||||
var field_id = $('input[name="field_id"]', dialog).val();
|
|
||||||
$('#field_changer').dialog('close');
|
|
||||||
var selected_opt = $('#field_chooser option:selected');
|
|
||||||
var display = selected_opt.parent().attr('label')+' / '+selected_opt.html();
|
|
||||||
$('#display_value_'+field_id).empty().append(display);
|
|
||||||
$('input[name="src_'+field_id+'"]').val($('#field_chooser').val());
|
|
||||||
$('input[name="src_'+field_id+'"]').trigger('change');
|
|
||||||
$('.metafield_'+field_id).removeAttr('disabled');
|
|
||||||
};
|
|
||||||
$('#field_changer').dialog({
|
|
||||||
modal:true,
|
|
||||||
buttons : buttons
|
|
||||||
}).dialog('close');
|
|
||||||
|
|
||||||
$('a.field_change').bind('click', function(){
|
|
||||||
var field_id = $('input',this).val();
|
|
||||||
$('#field_chooser').val( $('input[name="src_'+field_id+'"]').val());
|
|
||||||
$('input[name="field_id"]', dialog).val(field_id);
|
|
||||||
dialog.dialog().dialog('open');
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.alertTips').tooltip();
|
|
||||||
|
|
||||||
$('button.struct_saver').bind('click', function(){
|
|
||||||
$('#form_struct').submit();
|
|
||||||
});
|
|
||||||
|
|
||||||
var buttons = {};
|
|
||||||
var dialog_adder = $('#field_adder');
|
|
||||||
buttons['{% trans 'boutton::annuler' %}'] = function(){
|
|
||||||
$('#field_adder').dialog('close');
|
|
||||||
};
|
|
||||||
buttons['{% trans 'boutton::valider' %}'] = function(){
|
|
||||||
$('#newfield').val($('#field_adder input[name="newfield_name"]').val());
|
|
||||||
$('#field_adder').dialog('close');
|
|
||||||
$('#form_struct').submit();
|
|
||||||
};
|
|
||||||
$('#field_adder').dialog({
|
|
||||||
modal:true,
|
|
||||||
buttons : buttons
|
|
||||||
}).dialog('close');
|
|
||||||
|
|
||||||
$('.field_adder').bind('click', function(){
|
|
||||||
dialog_adder.dialog().dialog('open');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$('.meta_deleter').bind('click', function(){
|
|
||||||
if(confirm('{% trans 'Etes vous sur de vouloir supprimer cette metadonnee ? Elle sera definitivement perdue' %}'))
|
|
||||||
{
|
|
||||||
var field = $('input[name="field_ids[]"]', $(this).parent());
|
|
||||||
var field_id = $('input', $(this)).val();
|
|
||||||
field.attr('name', 'todelete_ids[]');
|
|
||||||
$('.metafield_'+field_id).attr('disabled', 'disabled');
|
|
||||||
}
|
}
|
||||||
});
|
.ui-autocomplete {
|
||||||
|
max-height: 200px;
|
||||||
|
max-width: 400px;
|
||||||
$('.dces_selector').bind('change', function(event){
|
overflow-y: auto;
|
||||||
if($.trim($(this).val()) === '')
|
/* prevent horizontal scrollbar */
|
||||||
|
overflow-x: hidden;
|
||||||
return;
|
/* add padding to account for vertical scrollbar */
|
||||||
var $this = $(this);
|
padding-right: 20px;
|
||||||
var $others = $('.dces_selector option[value="'+$this.val()+'"]:selected');
|
|
||||||
if($others.length > 1)
|
|
||||||
{
|
|
||||||
var other_name = $($others.get(0)).closest('tr').find('input.meta_namer').val();
|
|
||||||
|
|
||||||
$('#warning_dialog').html("<p>{% trans 'Attention, deux champs ne peuvent représenter le meme element Dublin Core.' %}<br/><br/>{% trans 'La precedente attribution a ete desactivee' %} </p><p style='margin-top:10px;text-align:center;font-weight:bold;'>"+other_name+'</p>').dialog({modal:true});
|
|
||||||
$others.each(function(i, el){
|
|
||||||
var $parent = $(el).parent();
|
|
||||||
if($parent.attr('name') !== $this.attr('name'))
|
|
||||||
$parent.val('');
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
});
|
/** IE 6 doesn't support max-height
|
||||||
|
* we use height instead, but this forces the menu to always be this tall
|
||||||
|
*/
|
||||||
|
* html .ui-autocomplete {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.ui-autocomplete-loading { background: white url('/skins/icons/ui-anim_basic_16x16.gif') right center no-repeat; }
|
||||||
|
.alertTips{
|
||||||
|
cursor:help;
|
||||||
|
}
|
||||||
|
.alert{
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
$('.meta_multi, .meta_src').bind('change', function(){
|
$( "#field_chooser" ).autocomplete({
|
||||||
var id = $(this).attr('name').split('_').pop();
|
source: "/admin/description/metadatas/search/",
|
||||||
|
minLength: 2,
|
||||||
|
select: function( event, ui ) {
|
||||||
|
$('#current_field_label').val(ui.item.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$.ajax({
|
var buttons = {};
|
||||||
type: "GET",
|
var dialog = $('#field_changer');
|
||||||
url: "/admin/fields/checkmulti/",
|
buttons['{% trans 'boutton::annuler' %}'] = function(){
|
||||||
dataType: 'json',
|
$('#field_changer').dialog('close');
|
||||||
data: {
|
};
|
||||||
multi : $('input[name="multi_'+id+'"]').attr('checked'),
|
|
||||||
source : $('input[name="src_'+id+'"]').val()
|
$('#tag_remover').bind('click', function(){
|
||||||
},
|
$('#current_field_label').val('');
|
||||||
error: function(){
|
});
|
||||||
return;
|
|
||||||
},
|
buttons['{% trans 'boutton::valider' %}'] = function(){
|
||||||
timeout: function(){
|
var field_id = $('input[name="field_id"]', dialog).val();
|
||||||
return;
|
$('#field_changer').dialog('close');
|
||||||
},
|
|
||||||
success: function(data){
|
$('#display_value_'+field_id).empty().append($('#current_field_label').val());
|
||||||
var $parent = $('input[name="multi_'+id+'"]').parent();
|
$('input[name="src_'+field_id+'"]').val($('#current_field_label').val());
|
||||||
$('.alert', $parent).hide();
|
$('input[name="src_'+field_id+'"]').trigger('change');
|
||||||
if(data.result === false && data.is_multi === true)
|
$('.metafield_'+field_id).removeAttr('disabled');
|
||||||
$('.alert_is_multi', $parent).show();
|
};
|
||||||
else if(data.result === false && data.is_multi === false)
|
$('#field_changer').dialog({
|
||||||
$('.alert_not_multi', $parent).show();
|
modal:true,
|
||||||
}
|
buttons : buttons
|
||||||
|
}).dialog('close');
|
||||||
|
|
||||||
|
$('a.field_change').bind('click', function(){
|
||||||
|
$('#field_chooser').val('');
|
||||||
|
var field_id = $('input',this).val();
|
||||||
|
$('#current_field_label').val( $('input[name="src_'+field_id+'"]').val());
|
||||||
|
$('input[name="field_id"]', dialog).val(field_id);
|
||||||
|
dialog.dialog().dialog('open');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.alertTips').tooltip();
|
||||||
|
|
||||||
|
$('button.struct_saver').bind('click', function(){
|
||||||
|
$('#form_struct').submit();
|
||||||
|
});
|
||||||
|
|
||||||
|
var buttons = {};
|
||||||
|
var dialog_adder = $('#field_adder');
|
||||||
|
buttons['{% trans 'boutton::annuler' %}'] = function(){
|
||||||
|
$('#field_adder').dialog('close');
|
||||||
|
};
|
||||||
|
buttons['{% trans 'boutton::valider' %}'] = function(){
|
||||||
|
$('#newfield').val($('#field_adder input[name="newfield_name"]').val());
|
||||||
|
$('#field_adder').dialog('close');
|
||||||
|
$('#form_struct').submit();
|
||||||
|
};
|
||||||
|
$('#field_adder').dialog({
|
||||||
|
modal:true,
|
||||||
|
buttons : buttons
|
||||||
|
}).dialog('close');
|
||||||
|
|
||||||
|
$('.field_adder').bind('click', function(){
|
||||||
|
dialog_adder.dialog().dialog('open');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.meta_deleter').bind('click', function(){
|
||||||
|
if(confirm('{% trans 'Etes vous sur de vouloir supprimer cette metadonnee ? Elle sera definitivement perdue' %}'))
|
||||||
|
{
|
||||||
|
var field = $('input[name="field_ids[]"]', $(this).parent());
|
||||||
|
var field_id = $('input', $(this)).val();
|
||||||
|
field.attr('name', 'todelete_ids[]');
|
||||||
|
$('.metafield_'+field_id).attr('disabled', 'disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('.dces_selector').bind('change', function(event){
|
||||||
|
if($.trim($(this).val()) === '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var $this = $(this);
|
||||||
|
var $others = $('.dces_selector option[value="'+$this.val()+'"]:selected');
|
||||||
|
if($others.length > 1)
|
||||||
|
{
|
||||||
|
var other_name = $($others.get(0)).closest('tr').find('input.meta_namer').val();
|
||||||
|
|
||||||
|
$('#warning_dialog').html("<p>{% trans 'Attention, deux champs ne peuvent représenter le meme element Dublin Core.' %}<br/><br/>{% trans 'La precedente attribution a ete desactivee' %} </p><p style='margin-top:10px;text-align:center;font-weight:bold;'>"+other_name+'</p>').dialog({modal:true});
|
||||||
|
$others.each(function(i, el){
|
||||||
|
var $parent = $(el).parent();
|
||||||
|
if($parent.attr('name') !== $this.attr('name'))
|
||||||
|
$parent.val('');
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.meta_multi, .meta_src').bind('change', function(){
|
||||||
|
var id = $(this).attr('name').split('_').pop();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: "/admin/fields/checkmulti/",
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
multi : $('input[name="multi_'+id+'"]').attr('checked'),
|
||||||
|
source : $('input[name="src_'+id+'"]').val()
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
timeout: function(){
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
success: function(data){
|
||||||
|
var $parent = $('input[name="multi_'+id+'"]').parent();
|
||||||
|
$('.alert', $parent).hide();
|
||||||
|
if(data.result === false && data.is_multi === true)
|
||||||
|
$('.alert_is_multi', $parent).show();
|
||||||
|
else if(data.result === false && data.is_multi === false)
|
||||||
|
$('.alert_not_multi', $parent).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('.meta_readonly, .meta_src').bind('change', function(){
|
||||||
|
var id = $(this).attr('name').split('_').pop();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: "/admin/fields/checkreadonly/",
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
readonly : $('input[name="readonly_'+id+'"]').attr('checked'),
|
||||||
|
source : $('input[name="src_'+id+'"]').val()
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
timeout: function(){
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
success: function(data){
|
||||||
|
var $parent = $('input[name="readonly_'+id+'"]').parent();
|
||||||
|
$('.alert', $parent).hide();
|
||||||
|
if(data.result === false && data.is_readonly === true)
|
||||||
|
$('.alert_is_readonly', $parent).show();
|
||||||
|
else if(data.result === false && data.is_readonly === false)
|
||||||
|
$('.alert_not_readonly', $parent).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$('.meta_readonly, .meta_src').bind('change', function(){
|
|
||||||
var id = $(this).attr('name').split('_').pop();
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: "GET",
|
|
||||||
url: "/admin/fields/checkreadonly/",
|
|
||||||
dataType: 'json',
|
|
||||||
data: {
|
|
||||||
readonly : $('input[name="readonly_'+id+'"]').attr('checked'),
|
|
||||||
source : $('input[name="src_'+id+'"]').val()
|
|
||||||
},
|
|
||||||
error: function(){
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
timeout: function(){
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
success: function(data){
|
|
||||||
var $parent = $('input[name="readonly_'+id+'"]').parent();
|
|
||||||
$('.alert', $parent).hide();
|
|
||||||
if(data.result === false && data.is_readonly === true)
|
|
||||||
$('.alert_is_readonly', $parent).show();
|
|
||||||
else if(data.result === false && data.is_readonly === false)
|
|
||||||
$('.alert_not_readonly', $parent).show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body style="overflow-x:scroll;">
|
<body style="overflow-x:scroll;">
|
||||||
<div id="warning_dialog" style="display:none" title="{% trans 'Attention !' %}" >
|
<div id="warning_dialog" style="display:none" title="{% trans 'Attention !' %}" >
|
||||||
</div>
|
</div>
|
||||||
<div style="display:none" id="field_changer">
|
<div style="display:none" id="field_changer">
|
||||||
<select id="field_chooser">
|
<input id="field_chooser" type="text" value="">
|
||||||
<option>{% trans 'choisir' %}</option>
|
<input type="text" readonly value="" id="current_field_label"/>
|
||||||
{% set current_ns = '' %}
|
<button id="tag_remover">{% trans 'Delete' %}</button>
|
||||||
{% for group in available_fields %}
|
<input name="field_id" type="hidden" value=""/>
|
||||||
{% for field in group %}
|
</div>
|
||||||
{% if current_ns != field.getGroupName() %}
|
<div style="display:none" id="field_adder">
|
||||||
{% if current_ns != '' %}
|
|
||||||
</optgroup>
|
|
||||||
{% endif %}
|
|
||||||
{% set current_ns = field.getGroupName() %}
|
|
||||||
<optgroup label="{{field.getGroupName()}}">
|
|
||||||
{% endif %}
|
|
||||||
<option value="{{field.getTagname()}}">{{field.getTagname()}}</option>
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</optgroup>
|
|
||||||
</select>
|
|
||||||
<input name="field_id" type="hidden"/>
|
|
||||||
</div>
|
|
||||||
<div style="display:none" id="field_adder">
|
|
||||||
<input name="newfield_name" type="text"/>
|
<input name="newfield_name" type="text"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button class="field_adder">
|
<button class="field_adder">
|
||||||
{% trans 'boutton::ajouter' %}
|
{% trans 'boutton::ajouter' %}
|
||||||
</button>
|
</button>
|
||||||
<button class="struct_saver">Submit</button>
|
<button class="struct_saver">Submit</button>
|
||||||
</div>
|
</div>
|
||||||
<form action="/admin/description/{{ databox.get_sbas_id() }}/" method="post" target="_self" id="form_struct">
|
<form action="/admin/description/{{ databox.get_sbas_id() }}/" method="post" target="_self" id="form_struct">
|
||||||
<input name="newfield" id="newfield" type="hidden" />
|
<input name="newfield" id="newfield" type="hidden" />
|
||||||
<table class="admintable">
|
<table class="admintable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th></th>
|
||||||
</th>
|
<th>{% trans 'Nom' %}</th>
|
||||||
<th>
|
<th>{% trans 'Source' %}Source</th>
|
||||||
{% trans 'Nom' %}
|
<th><span title="{% trans 'DublinCore Element Set' %}">DCES</span></th>
|
||||||
</th>
|
<th>{% trans 'Multivalue' %}</th>
|
||||||
<th>
|
<th>{% trans 'Indexable' %}</th>
|
||||||
{% trans 'Source' %}Source
|
<th>{% trans 'Vocabulary Type' %}</th>
|
||||||
</th>
|
<th>{% trans 'Vocabulary restricted' %}</th>
|
||||||
<th>
|
<th>{% trans 'Required' %}</th>
|
||||||
<span title="{% trans 'DublinCore Element Set' %}">DCES</span>
|
<th>{% trans 'Lecture seule' %}</th>
|
||||||
</th>
|
<th>{% trans 'Type' %}</th>
|
||||||
<th>
|
<th>{% trans 'Separateur' %}</th>
|
||||||
{% trans 'Multivalue' %}
|
<th>{% trans 'Branche Thesaurus' %}</th>
|
||||||
</th>
|
<th>{% trans 'Affiche dans report' %}</th>
|
||||||
<th>
|
<th>{% trans 'Afficher en titre' %}</th>
|
||||||
{% trans 'Indexable' %}
|
<th>{% trans 'Business Field' %}</th>
|
||||||
</th>
|
</tr>
|
||||||
<th>
|
</thead>
|
||||||
{% trans 'Vocabulary Type' %}
|
<tbody>
|
||||||
</th>
|
{% for field in fields %}
|
||||||
<th>
|
{% set disabled = '' %}
|
||||||
{% trans 'Vocabulary restricted' %}
|
{% if field.is_on_error() %}
|
||||||
</th>
|
{% set disabled = 'disabled="disabled"' %}
|
||||||
<th>
|
{% endif %}
|
||||||
{% trans 'Required' %}
|
<tr class="{% if loop.index is odd %}odd{% else %}even{% endif %}">
|
||||||
</th>
|
<td>
|
||||||
<th>
|
<a class="meta_deleter">
|
||||||
{% trans 'Lecture seule' %}
|
<input type="hidden" value="{{ field.get_id() }}"/>
|
||||||
</th>
|
<img src="/skins/icons/delete.png">
|
||||||
<th>
|
</a>
|
||||||
{% trans 'Type' %}
|
<input type="hidden" name="field_ids[]" value="{{ field.get_id() }}" />
|
||||||
</th>
|
</td>
|
||||||
<th>
|
<td>
|
||||||
{% trans 'Separateur' %}
|
<input style="width:100px;" class="meta_namer metafield_{{ field.get_id() }}" {{ disabled }} type="text" name="name_{{ field.get_id() }}" value="{{ field.get_name () }}" />
|
||||||
</th>
|
</td>
|
||||||
<th>
|
<td>
|
||||||
{% trans 'Branche Thesaurus' %}
|
<span id="display_value_{{ field.get_id() }}">{{ field.get_tag().getGroupName() }}:{{ field.get_tag().getName() }}</span> <a href="#" class="field_change">change<input type="hidden" value="{{ field.get_id() }}"/></a>
|
||||||
</th>
|
<input class="meta_src" type="hidden" name="src_{{ field.get_id() }}" value="{{ field.get_tag().getTagname() }}"/>
|
||||||
<th>
|
</td>
|
||||||
{% trans 'Affiche dans report' %}
|
<td>
|
||||||
</th>
|
{{ _self.dces_selector(available_dc_fields, field) }}
|
||||||
<th>
|
</td>
|
||||||
{% trans 'Afficher en titre' %}
|
<td>
|
||||||
</th>
|
<input class="meta_multi metafield_{{ field.get_id() }}" {{ disabled }} name="multi_{{ field.get_id() }}" type="checkbox" {% if field.is_multi() %}checked="checked"{% endif %}/>
|
||||||
<th>
|
<img class="alert alertTips alert_not_multi" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne n\'est pas multivaluee, vous devriez decocher cette case' %}" style="display:none;" />
|
||||||
{% trans 'Business Field' %}
|
<img class="alert alertTips alert_is_multi" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne est multivaluee, vous devriez cocher cette case' %}" style="display:none;" />
|
||||||
</th>
|
</td>
|
||||||
</tr>
|
<td>
|
||||||
</thead>
|
<input class="metafield_{{ field.get_id() }}" {{ disabled }} name="indexable_{{ field.get_id() }}" type="checkbox" {% if field.is_indexable() %}checked="checked"{% endif %}/>
|
||||||
<tbody>
|
</td>
|
||||||
{% for field in fields %}
|
|
||||||
{% set disabled = '' %}
|
|
||||||
{% if field.is_on_error() %}
|
|
||||||
{% set disabled = 'disabled="disabled"' %}
|
|
||||||
{% endif %}
|
|
||||||
<tr class="{% if loop.index is odd %}odd{% else %}even{% endif %}">
|
|
||||||
<td>
|
|
||||||
<a class="meta_deleter"><input type="hidden" value="{{field.get_id()}}"/><img src="/skins/icons/delete.png"></a>
|
|
||||||
<input type="hidden" name="field_ids[]" value="{{field.get_id()}}" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input style="width:100px;" class="meta_namer metafield_{{field.get_id()}}" {{disabled}} type="text" name="name_{{field.get_id()}}" value="{{field.get_name ()}}" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span id="display_value_{{field.get_id()}}">{{ field.get_tag().getGroupName() }} / {{ field.get_tag().getName() }}</span> <a href="#" class="field_change">change<input type="hidden" value="{{field.get_id()}}"/></a>
|
|
||||||
<input class="meta_src" type="hidden" name="src_{{field.get_id()}}" value="{{ field.get_tag().getTagname() }}"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{_self.dces_selector(available_dc_fields, field)}}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input class="meta_multi metafield_{{field.get_id()}}" {{disabled}} name="multi_{{field.get_id()}}" type="checkbox" {% if field.is_multi() %}checked="checked"{% endif %}/>
|
|
||||||
<img class="alert alertTips alert_not_multi" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne n\'est pas multivaluee, vous devriez decocher cette case' %}" style="display:none;" />
|
|
||||||
<img class="alert alertTips alert_is_multi" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne est multivaluee, vous devriez cocher cette case' %}" style="display:none;" />
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<input class="metafield_{{field.get_id()}}" {{disabled}} name="indexable_{{field.get_id()}}" type="checkbox" {% if field.is_indexable() %}checked="checked"{% endif %}/>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
{% if field.is_multi() %}
|
{% if field.is_multi() %}
|
||||||
<select class="metafield_{{field.get_id()}}" {{disabled}} name="vocabulary_{{field.get_id()}}">
|
<select class="metafield_{{ field.get_id() }}" {{ disabled }} name="vocabulary_{{ field.get_id() }}">
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
{% for vocabulary in vocabularies %}
|
{% for vocabulary in vocabularies %}
|
||||||
<option {% if field.getVocabularyControl() and field.getVocabularyControl().getType() == vocabulary.getType() %}selected="selected"{% endif %} value="{{ vocabulary.getType() }}">{{ vocabulary.getName() }}</option>
|
<option {% if field.getVocabularyControl() and field.getVocabularyControl().getType() == vocabulary.getType() %}selected="selected"{% endif %} value="{{ vocabulary.getType() }}">{{ vocabulary.getName() }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="metafield_{{field.get_id()}}" {{disabled}} name="vocabularyrestricted_{{field.get_id()}}" type="checkbox" {% if field.isVocabularyRestricted() %}checked="checked"{% endif %}/>
|
<input class="metafield_{{ field.get_id() }}" {{ disabled }} name="vocabularyrestricted_{{ field.get_id() }}" type="checkbox" {% if field.isVocabularyRestricted() %}checked="checked"{% endif %}/>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
<input class="metafield_{{field.get_id()}}" {{disabled}} name="required_{{field.get_id()}}" type="checkbox" {% if field.is_required() %}checked="checked"{% endif %}/>
|
<input class="metafield_{{ field.get_id() }}" {{ disabled }} name="required_{{ field.get_id() }}" type="checkbox" {% if field.is_required() %}checked="checked"{% endif %}/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="meta_readonly metafield_{{field.get_id()}}" {{disabled}} name="readonly_{{field.get_id()}}" type="checkbox" {% if field.is_readonly() %}checked="checked"{% endif %}/>
|
<input class="meta_readonly metafield_{{ field.get_id() }}" {{ disabled }} name="readonly_{{ field.get_id() }}" type="checkbox" {% if field.is_readonly() %}checked="checked"{% endif %}/>
|
||||||
<img class="alert alertTips alert_not_readonly" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne n\'est pas en lecture seule, vous devriez decocher cette case' %}" style="display:none;" />
|
<img class="alert alertTips alert_not_readonly" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne n\'est pas en lecture seule, vous devriez decocher cette case' %}" style="display:none;" />
|
||||||
<img class="alert alertTips alert_is_readonly" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne est en lecture seule, vous devriez cocher cette case' %}" style="display:none;" />
|
<img class="alert alertTips alert_is_readonly" src="/skins/icons/alert.png" title="{% trans 'Attention, la source descriptive selectionne est en lecture seule, vous devriez cocher cette case' %}" style="display:none;" />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="metafield_{{field.get_id()}}" {{disabled}} name="type_{{field.get_id()}}">
|
<select class="metafield_{{ field.get_id() }}" {{ disabled }} name="type_{{ field.get_id() }}">
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
<option {% if field.get_type() == 'string' %}selected{% endif %} value="string">string</option>
|
<option {% if field.get_type() == 'string' %}selected{% endif %} value="string">string</option>
|
||||||
<option {% if field.get_type() == 'text' %}selected{% endif %} value="text">text</option>
|
<option {% if field.get_type() == 'text' %}selected{% endif %} value="text">text</option>
|
||||||
<option {% if field.get_type() == 'number' %}selected{% endif %} value="number">number</option>
|
<option {% if field.get_type() == 'number' %}selected{% endif %} value="number">number</option>
|
||||||
<option {% if field.get_type() == 'date' %}selected{% endif %} value="date">date</option>
|
<option {% if field.get_type() == 'date' %}selected{% endif %} value="date">date</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input size="2" class="metafield_{{field.get_id()}}" {{disabled}} value="{{ field.get_separator() }}" name="separator_{{field.get_id()}}" type="text"/>
|
<input size="2" class="metafield_{{ field.get_id() }}" {{ disabled }} value="{{ field.get_separator() }}" name="separator_{{ field.get_id() }}" type="text"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input style="width:100px;" class="metafield_{{field.get_id()}}" {{disabled}} name="tbranch_{{field.get_id()}}" type="text" value="{{field.get_tbranch()}}"/>
|
<input style="width:100px;" class="metafield_{{ field.get_id() }}" {{ disabled }} name="tbranch_{{ field.get_id() }}" type="text" value="{{ field.get_tbranch() }}"/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="metafield_{{field.get_id()}}" {{disabled}} name="report_{{field.get_id()}}" type="checkbox" {% if field.is_report() %}checked="checked"{% endif %}/>
|
<input class="metafield_{{ field.get_id() }}" {{ disabled }} name="report_{{ field.get_id() }}" type="checkbox" {% if field.is_report() %}checked="checked"{% endif %}/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="metafield_{{field.get_id()}}" {{disabled}} name="thumbtitle_{{field.get_id()}}">
|
<select class="metafield_{{ field.get_id() }}" {{ disabled }} name="thumbtitle_{{ field.get_id() }}">
|
||||||
{{_self.thumbtitle_selector(field.get_thumbtitle())}}
|
{{ _self.thumbtitle_selector(field.get_thumbtitle()) }}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="metafield_{{field.get_id()}}" {{disabled}} name="business_{{field.get_id()}}" type="checkbox" {% if field.isBusiness() %}checked="checked"{% endif %}/>
|
<input class="metafield_{{ field.get_id() }}" {{ disabled }} name="business_{{ field.get_id() }}" type="checkbox" {% if field.isBusiness() %}checked="checked"{% endif %}/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button type="submit">Submit</button>
|
<button type="submit">Submit</button>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -242,4 +242,23 @@ class DescriptionTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
$this->client->request("GET", "/description/" . $databox->get_sbas_id() . "/");
|
$this->client->request("GET", "/description/" . $databox->get_sbas_id() . "/");
|
||||||
$this->assertTrue($this->client->getResponse()->isOk());
|
$this->assertTrue($this->client->getResponse()->isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetMetadatas()
|
||||||
|
{
|
||||||
|
$appbox = appbox::get_instance(\bootstrap::getCore());
|
||||||
|
$databox = array_shift($appbox->get_databoxes());
|
||||||
|
|
||||||
|
$this->client->request("GET", "/description/metadatas/search/", array('term'=>''));
|
||||||
|
$this->assertTrue($this->client->getResponse()->isOk());
|
||||||
|
|
||||||
|
$datas = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
$this->assertEquals(array(), $datas);
|
||||||
|
|
||||||
|
$this->client->request("GET", "/description/metadatas/search/", array('term'=>'xmp'));
|
||||||
|
$this->assertTrue($this->client->getResponse()->isOk());
|
||||||
|
|
||||||
|
$datas = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
$this->assertTrue(is_array($datas));
|
||||||
|
$this->assertGreaterThan(0, count($datas));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user