// Improve synchronize tool in new installer
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@11487 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
1 parent
847883c387
commit
6ff8af5272
3 files changed
+320
-85
No files matched your search
+28
-10
@@ -29,21 +29,21 @@ class SynchronizeController extends InstallControllerHttp
|
|||||||
$this->loader->setLanguages($languages);
|
$this->loader->setLanguages($languages);
|
||||||
|
|
||||||
if (Tools::getValue('submit'))
|
if (Tools::getValue('submit'))
|
||||||
$this->synchronizeDatabase();
|
$this->generateSchemas();
|
||||||
|
else if (Tools::getValue('synchronize'))
|
||||||
|
$this->synchronizeEntities();
|
||||||
|
|
||||||
if ($this->type == 'demo')
|
if ($this->type == 'demo')
|
||||||
$this->loader->setFixturesPath();
|
$this->loader->setFixturesPath();
|
||||||
|
else
|
||||||
|
$this->loader->setDefaultPath();
|
||||||
$this->displayTemplate('index');
|
$this->displayTemplate('index');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function synchronizeDatabase()
|
public function generateSchemas()
|
||||||
{
|
{
|
||||||
if ($this->type == 'demo')
|
if ($this->type == 'demo')
|
||||||
{
|
|
||||||
$this->loader->setDefaultPath();
|
|
||||||
$this->loader->generateAllEntityFiles();
|
|
||||||
$this->loader->setFixturesPath();
|
$this->loader->setFixturesPath();
|
||||||
}
|
|
||||||
|
|
||||||
$tables = isset($_POST['tables']) ? (array)$_POST['tables'] : array();
|
$tables = isset($_POST['tables']) ? (array)$_POST['tables'] : array();
|
||||||
$columns = isset($_POST['columns']) ? (array)$_POST['columns'] : array();
|
$columns = isset($_POST['columns']) ? (array)$_POST['columns'] : array();
|
||||||
@@ -52,6 +52,7 @@ class SynchronizeController extends InstallControllerHttp
|
|||||||
$primaries = isset($_POST['primary']) ? (array)$_POST['primary'] : array();
|
$primaries = isset($_POST['primary']) ? (array)$_POST['primary'] : array();
|
||||||
$classes = isset($_POST['class']) ? (array)$_POST['class'] : array();
|
$classes = isset($_POST['class']) ? (array)$_POST['class'] : array();
|
||||||
$sqls = isset($_POST['sql']) ? (array)$_POST['sql'] : array();
|
$sqls = isset($_POST['sql']) ? (array)$_POST['sql'] : array();
|
||||||
|
$orders = isset($_POST['order']) ? (array)$_POST['order'] : array();
|
||||||
$images = isset($_POST['image']) ? (array)$_POST['image'] : array();
|
$images = isset($_POST['image']) ? (array)$_POST['image'] : array();
|
||||||
|
|
||||||
$entities = array();
|
$entities = array();
|
||||||
@@ -70,6 +71,9 @@ class SynchronizeController extends InstallControllerHttp
|
|||||||
if (isset($sqls[$table]) && $sqls[$table])
|
if (isset($sqls[$table]) && $sqls[$table])
|
||||||
$config['sql'] = $sqls[$table];
|
$config['sql'] = $sqls[$table];
|
||||||
|
|
||||||
|
if (isset($orders[$table]) && $orders[$table])
|
||||||
|
$config['ordersql'] = $orders[$table];
|
||||||
|
|
||||||
if (isset($images[$table]) && $images[$table])
|
if (isset($images[$table]) && $images[$table])
|
||||||
$config['image'] = $images[$table];
|
$config['image'] = $images[$table];
|
||||||
|
|
||||||
@@ -89,16 +93,30 @@ class SynchronizeController extends InstallControllerHttp
|
|||||||
'fields' => $fields,
|
'fields' => $fields,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$this->loader->generateEntityFiles($entities);
|
|
||||||
|
|
||||||
if ($this->type != 'demo')
|
foreach ($entities as $entity => $info)
|
||||||
|
$this->loader->generateEntitySchema($entity, $info['fields'], $info['config']);
|
||||||
|
|
||||||
|
$this->errors = $this->loader->getErrors();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function synchronizeEntities()
|
||||||
|
{
|
||||||
|
$entities = Tools::getValue('entities');
|
||||||
|
if (isset($entities['common']))
|
||||||
|
{
|
||||||
|
$this->loader->setDefaultPath();
|
||||||
|
$this->loader->generateEntityFiles($entities['common']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($entities['fixture']))
|
||||||
{
|
{
|
||||||
$this->loader->setFixturesPath();
|
$this->loader->setFixturesPath();
|
||||||
$this->loader->generateAllEntityFiles();
|
$this->loader->generateEntityFiles($entities['fixture']);
|
||||||
$this->loader->setDefaultPath();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->errors = $this->loader->getErrors();
|
$this->errors = $this->loader->getErrors();
|
||||||
|
$this->loader->setDefaultPath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+195
-75
@@ -1,6 +1,6 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>The Synchronizator</title>
|
<title>Outil de synchronisation de l'installeur</title>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
||||||
<script type="text/javascript" src="../theme/js/jquery-1.4.4.min.js"></script>
|
<script type="text/javascript" src="../theme/js/jquery-1.4.4.min.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" media="all" href="style.css" />
|
<link rel="stylesheet" type="text/css" media="all" href="style.css" />
|
||||||
@@ -8,33 +8,63 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$().ready(function()
|
$().ready(function()
|
||||||
{
|
{
|
||||||
$('.table_item .table_name').click(function()
|
var select_entity = function(is_checked, container)
|
||||||
{
|
{
|
||||||
var list = $(this).parent().find('.column_list');
|
if (is_checked)
|
||||||
var check = $(this).parent().find('.table_item_checkbox');
|
|
||||||
|
|
||||||
if (list.css('display') == 'none')
|
|
||||||
{
|
{
|
||||||
list.show();
|
container.find('.column_list').show();
|
||||||
check.attr('checked', true);
|
container.addClass('table_item_selected');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list.hide();
|
container.find('.column_list').hide();
|
||||||
check.attr('checked', false);
|
container.removeClass('table_item_selected');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.select_box input[type=checkbox]').click(function(e)
|
||||||
|
{
|
||||||
|
select_entity($(this).attr('checked'), $(this).parent().parent());
|
||||||
|
e.stopImmediatePropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.table_item .table_item_checkbox').click(function()
|
$('.select_box').click(function()
|
||||||
{
|
{
|
||||||
var list = $(this).parent().find('.column_list');
|
var checkbox = $(this).find('input[type=checkbox]');
|
||||||
|
checkbox.attr('checked', !checkbox.attr('checked'));
|
||||||
if ($(this).attr('checked'))
|
select_entity(checkbox.attr('checked'), $(this).parent());
|
||||||
list.show();
|
|
||||||
else
|
|
||||||
list.hide();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function check_dependencies(checked, type, entity)
|
||||||
|
{
|
||||||
|
var search_in = ['common'];
|
||||||
|
if (type == 'fixture')
|
||||||
|
search_in.push('fixture');
|
||||||
|
|
||||||
|
$(search_in).each(function(k, check_type)
|
||||||
|
{
|
||||||
|
if (!checked)
|
||||||
|
{
|
||||||
|
$(dependencies[check_type][entity]).each(function(k, child_entity)
|
||||||
|
{
|
||||||
|
$('input[name=\'entities['+check_type+']['+child_entity+']\']').attr('checked', false);
|
||||||
|
check_dependencies(false, check_type, child_entity);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$.each(dependencies[check_type], function(parent_entity, children_entity)
|
||||||
|
{
|
||||||
|
if ($.inArray(entity, children_entity) >= 0)
|
||||||
|
{
|
||||||
|
$('input[name=\'entities['+check_type+']['+parent_entity+']\']').attr('checked', true);
|
||||||
|
check_dependencies(true, check_type, parent_entity);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -46,72 +76,162 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<ul>
|
<ul class="menu">
|
||||||
<li><a href="index.php">Exporter les données</a></li>
|
<li <?php if ($this->type != 'demo' && $this->type != 'synchro'): ?>class="selected"<?php endif; ?>><a href="index.php">Schéma des données communes</a></li>
|
||||||
<li><a href="index.php?type=demo">Exporter les produits de démo</a></li>
|
<li <?php if ($this->type == 'demo'): ?>class="selected"<?php endif; ?>><a href="index.php?type=demo">Schéma des produits de démo</a></li>
|
||||||
|
<li <?php if ($this->type == 'synchro'): ?>class="selected"<?php endif; ?>><a href="index.php?type=synchro">Synchroniser les données</a></li>
|
||||||
|
<li style="margin-left: 20px"><a href="#" onclick="if ($('#display_help').css('display') == 'none'){$('#display_help').show();} else {$('#display_help').hide();} return false">Afficher l'aide</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<form action="" method="post">
|
<div id="display_help">
|
||||||
<ul class="table_list">
|
<h2>Aide pour la synchronisation de l'installeur</h2>
|
||||||
<?php foreach ($this->loader->getTables() as $entity => $is_multilang): ?>
|
<p>Cet outil est destiné à synchroniser le contenu de la base de donnée courante avec l'installeur. Par exemple en synchronisant l'entité "country", toutes les données de la table seront prises et sauvées dans un fichier country.xml, qui sera utilisé lors des installations.</p>
|
||||||
<?php $entity_info = $this->loader->getEntityInfo($entity); ?>
|
<p><b>Veuillez vous assurer de n'exporter que les informations qui concernent les modifications que vous avez effectué</b>, pour cela il suffit de cocher les informations vous concernant sur l'écran de synchronisation.</p>
|
||||||
<li class="table_item" id="entity_<?php echo $entity ?>">
|
<p></p>
|
||||||
<input type="checkbox" class="table_item_checkbox" name="tables[]" value="<?php echo $entity ?>" <?php if ($this->loader->entityExists($entity)): ?>checked="checked"<?php endif; ?> />
|
<p>
|
||||||
<a href="#" onclick="return false" class="table_name"><?php echo $entity ?></a>
|
En cochant une entité (sur l'écran de génération des schémas), celle ci sera ajoutée dans les données exportables. Cependant seules les entités que vous validerez dans l'écran de synchronisation seront réellement exportées, afin d'éviter tout problème. Voici une description des différentes informations disponibles par entité :
|
||||||
<ul class="column_list" <?php if (!$this->loader->entityExists($entity)): ?>style="display: none"<?php endif; ?>>
|
<ul>
|
||||||
<li>
|
<li><b>Identifiant</b> : servira à générer les noms des ID uniques. Par défaut les ID sont du type <i>entity_42</i>.</li>
|
||||||
Nom de l'ID
|
<li><b>Clef primaire</b> : laissez ce champ vide si l'entité possède un nom de clef primaire standard, c'est à dire <i>id_entity</i>. Entrez le nom de la clef primaire si elle est différente, entrez les différentes clef primaires séparées par une virgule s'il s'agit d'une table d'association.</li>
|
||||||
<select name="id[<?php echo $entity ?>]">
|
<li><b>Classe</b> : nom de classe qui servira à insérer les informations lors de l'installation. Attention il doit s'agir d'une classe ObjectModel. N'utilisez pas de classe s'il n'est pas nécessaire d'instancier l'objet pour créer l'entité.</li>
|
||||||
<option value="0">Normal (node_xx)</option>
|
<li><b>Images</b> : nom du dossier d'images pour exporter / importer les images automatiquement. Pour les cas particuliers, il est possible de créer des méthodes dans InstallXmlLoader <i>backupImageEntity()</i> pour l'export des images depuis la synchronisation et <i>copyImagesEntity()</i> pour l'import des images durant l'installation.</li>
|
||||||
<?php foreach (array_merge($this->loader->getColumns($entity), $this->loader->getColumns($entity, true)) as $column => $is_text): ?>
|
<li><b>Restriction SQL</b> : clauses WHERE à ajouter à la requête qui synchronise les données. Par exemple on ne souhaite exporter que la catégorie avec l'ID 1 pour les données communes, et les autres catégories pour les produits de démo.</li>
|
||||||
<option value="<?php echo $column ?>" <?php if (isset($entity_info['config']['id']) && $entity_info['config']['id'] == $column): ?>selected="selected"<?php endif; ?>>
|
<li><b>Ordre SQL</b> : clause ORDER BY de la requête qui synchronise les données</li>
|
||||||
<?php echo $column ?>
|
</ul>
|
||||||
</option>
|
Sélectionnez ensuite la liste des champs à utiliser, et pour les champs reliés à une autre entité précisez cette dernière en choisissant une relation (par exemple les champs id_country doivent être relié à l'entité country).
|
||||||
<?php endforeach; ?>
|
</p>
|
||||||
</select>
|
</div>
|
||||||
|
|
||||||
Clef primaire
|
<?php if ($this->type == 'synchro'): ?>
|
||||||
<input type="text" name="primary[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['primary'])) ? $entity_info['config']['primary'] : '' ?>" />
|
<?php
|
||||||
|
$entities = $dependencies = array();
|
||||||
Classe
|
$entities['common'] = $this->loader->getEntitiesList();
|
||||||
<select name="class[<?php echo $entity ?>]">
|
$dependencies['common'] = $this->loader->getDependencies();
|
||||||
<option value=""></option>
|
$this->loader->setFixturesPath();
|
||||||
<?php foreach ($this->loader->getClasses() as $class): ?>
|
$entities['fixture'] = $this->loader->getEntitiesList();
|
||||||
<option value="<?php echo $class ?>" <?php if (isset($entity_info['config']['class']) && $entity_info['config']['class'] == $class): ?>selected="selected"<?php endif; ?>><?php echo $class ?></option>
|
$dependencies['fixture'] = $this->loader->getDependencies();
|
||||||
<?php endforeach; ?>
|
$this->loader->setDefaultPath();
|
||||||
</select>
|
?>
|
||||||
<br />
|
<script type="text/javascript">
|
||||||
Restriction SQL (WHERE ...)
|
var dependencies = <?php echo Tools::jsonEncode($dependencies) ?>;
|
||||||
<input type="text" name="sql[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['sql'])) ? $entity_info['config']['sql'] : '' ?>" />
|
</script>
|
||||||
<br />
|
<form action="" method="post">
|
||||||
Dossier des images
|
Selectionnez la liste des entités à resynchroniser. Afin d'éviter au maximum les erreurs, sélectionnez uniquement les entitiés que vous avez modifier.
|
||||||
<input type="text" name="image[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['image'])) ? $entity_info['config']['image'] : '' ?>" />
|
<br />
|
||||||
</li>
|
(<a href="#" onclick="$('input[type=\'checkbox\']').attr('checked', true); return false">Tout cocher</a>
|
||||||
<?php foreach ($this->loader->getColumns($entity) as $column => $is_text): ?>
|
- <a href="#" onclick="$('input[type=\'checkbox\']').attr('checked', false); return false">Tout décocher</a>)
|
||||||
<li class="table_item_column" id="table_column_<?php echo $entity?>_<?php echo $column ?>">
|
<ul class="type_list">
|
||||||
<label class="column_left">
|
<?php foreach ($entities as $type => $list): ?>
|
||||||
<input type="checkbox" name="columns[<?php echo $entity ?>][]" value="<?php echo $column ?>" <?php if (isset($entity_info['fields'][$column])): ?>checked="checked"<?php endif; ?> />
|
<li style="float: left; padding-right: 40px">
|
||||||
<?php echo $column ?>
|
<span>
|
||||||
|
<?php if ($type == 'fixture'): ?>Produits de démo<?php else: ?>Données communes<?php endif; ?>
|
||||||
|
</span>
|
||||||
|
<ul class="entity_list">
|
||||||
|
<?php foreach ($list as $entity): ?>
|
||||||
|
<li>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="entities[<?php echo $type ?>][<?php echo $entity ?>]" value="<?php echo $entity ?>" onclick="check_dependencies(this.checked, '<?php echo $type ?>', '<?php echo $entity ?>')" />
|
||||||
|
<?php echo $entity ?>
|
||||||
</label>
|
</label>
|
||||||
<div>
|
|
||||||
Relation avec l'entité
|
|
||||||
<select name="relations[<?php echo $entity ?>][<?php echo $column ?>]">
|
|
||||||
<option value=""></option>
|
|
||||||
<?php foreach ($this->loader->getTables() as $subentity => $bar): ?>
|
|
||||||
<option value="<?php echo $subentity ?>" <?php if (isset($entity_info['fields'][$column]['relation']) && $entity_info['fields'][$column]['relation'] == $subentity): ?>selected="selected"<?php endif; ?>>
|
|
||||||
<?php echo $subentity ?>
|
|
||||||
</option>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<br /><br />
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</ul>
|
</ul>
|
||||||
|
<input type="submit" name="synchronize" value="Synchroniser" />
|
||||||
|
</form>
|
||||||
|
<?php else: ?>
|
||||||
|
<form action="" method="post">
|
||||||
|
<div align="right"><input type="submit" name="submit" value="Générer les schémas" /></div>
|
||||||
|
|
||||||
<input type="submit" name="submit" value="Enregistrer" />
|
<ul class="table_list">
|
||||||
</form>
|
<?php foreach ($this->loader->getTables() as $entity => $is_multilang): ?>
|
||||||
|
<?php
|
||||||
|
$entity_exists = $this->loader->entityExists($entity);
|
||||||
|
$entity_info = $this->loader->getEntityInfo($entity);
|
||||||
|
?>
|
||||||
|
<li class="table_item <?php if ($entity_exists): ?>table_item_selected<?php endif; ?>" id="entity_<?php echo $entity ?>">
|
||||||
|
<label class="select_box">
|
||||||
|
<input type="checkbox" class="table_item_checkbox" name="tables[]" value="<?php echo $entity ?>" <?php if ($entity_exists): ?>checked="checked"<?php endif; ?> />
|
||||||
|
<a href="#" onclick="return false" class="table_name"><?php echo $entity ?></a>
|
||||||
|
<?php if ($this->loader->hasElements($entity)): ?>
|
||||||
|
*
|
||||||
|
<?php endif; ?>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<ul class="column_list" <?php if (!$entity_exists): ?>style="display: none"<?php endif; ?>>
|
||||||
|
<li>
|
||||||
|
<div class="options">
|
||||||
|
<label>
|
||||||
|
Identifiant
|
||||||
|
<select name="id[<?php echo $entity ?>]">
|
||||||
|
<option value="0">Normal (node_xx)</option>
|
||||||
|
<?php foreach (array_merge($this->loader->getColumns($entity), $this->loader->getColumns($entity, true)) as $column => $is_text): ?>
|
||||||
|
<option value="<?php echo $column ?>" <?php if (isset($entity_info['config']['id']) && $entity_info['config']['id'] == $column): ?>selected="selected"<?php endif; ?>>
|
||||||
|
<?php echo $column ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
Clef primaire
|
||||||
|
<input type="text" name="primary[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['primary'])) ? $entity_info['config']['primary'] : '' ?>" />
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
Classe
|
||||||
|
<select name="class[<?php echo $entity ?>]">
|
||||||
|
<option value=""></option>
|
||||||
|
<?php foreach ($this->loader->getClasses() as $class): ?>
|
||||||
|
<option value="<?php echo $class ?>" <?php if (isset($entity_info['config']['class']) && $entity_info['config']['class'] == $class): ?>selected="selected"<?php endif; ?>><?php echo $class ?></option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
Images
|
||||||
|
<input type="text" name="image[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['image'])) ? $entity_info['config']['image'] : '' ?>" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="options">
|
||||||
|
<label>
|
||||||
|
Restriction SQL
|
||||||
|
<input type="text" name="sql[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['sql'])) ? $entity_info['config']['sql'] : '' ?>" />
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
Ordre SQL
|
||||||
|
<input type="text" name="order[<?php echo $entity ?>]" value="<?php echo (isset($entity_info['config']['ordersql'])) ? $entity_info['config']['ordersql'] : '' ?>" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<?php foreach ($this->loader->getColumns($entity) as $column => $is_text): ?>
|
||||||
|
<li class="table_item_column" id="table_column_<?php echo $entity?>_<?php echo $column ?>">
|
||||||
|
<label class="column_left">
|
||||||
|
<input type="checkbox" name="columns[<?php echo $entity ?>][]" value="<?php echo $column ?>" <?php if (isset($entity_info['fields'][$column])): ?>checked="checked"<?php endif; ?> />
|
||||||
|
<b><?php echo $column ?></b>
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
Relation avec l'entité
|
||||||
|
<select name="relations[<?php echo $entity ?>][<?php echo $column ?>]">
|
||||||
|
<option value=""></option>
|
||||||
|
<?php foreach ($this->loader->getTables() as $subentity => $bar): ?>
|
||||||
|
<option value="<?php echo $subentity ?>" <?php if (isset($entity_info['fields'][$column]['relation']) && $entity_info['fields'][$column]['relation'] == $subentity): ?>selected="selected"<?php endif; ?>>
|
||||||
|
<?php echo $subentity ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div align="right"><input type="submit" name="submit" value="Générer les schémas" /></div>
|
||||||
|
</form>
|
||||||
|
<?php endif; ?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,8 +1,105 @@
|
|||||||
|
body{
|
||||||
|
font-family: Arial;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
.clear{
|
.clear{
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul.menu{
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.menu li{
|
||||||
|
background-color: #DDDDDD;
|
||||||
|
border: 1px solid #999999;
|
||||||
|
display: inline;
|
||||||
|
padding: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.menu li a{
|
||||||
|
text-decoration: none;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.menu li.selected a{
|
||||||
|
text-decoration: underline;
|
||||||
|
color: #F31A28;
|
||||||
|
}
|
||||||
|
|
||||||
.column_left{
|
.column_left{
|
||||||
float: left;
|
float: left;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.table_list{
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.table_item{
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
border: 1px dashed #666666;
|
||||||
|
margin: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.table_item_selected{
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
border: 1px solid #666666;
|
||||||
|
margin: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_name{
|
||||||
|
color: #999999;
|
||||||
|
font-size: 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.table_item_selected .table_name{
|
||||||
|
color: #F31A28;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.column_list{
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.column_list li{
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options{
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options label{
|
||||||
|
margin-right: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#display_help{
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border: 1px solid #999999;
|
||||||
|
display: none;
|
||||||
|
margin-left: 40px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"]{
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.type_list{
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.type_list span{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.entity_list{
|
||||||
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user