Merge branch '3.8'

Conflicts:
	composer.lock
	lib/Alchemy/Phrasea/Core/Version.php
This commit is contained in:
Nicolas Le Goff
2014-01-20 11:08:36 +01:00
3 changed files with 129 additions and 42 deletions

View File

@@ -0,0 +1,97 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2014 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Alchemy\Phrasea\Application;
use Doctrine\ORM\Query\ResultSetMapping;
class patch_383alpha4a implements patchInterface
{
/** @var string */
private $release = '3.8.3-alpha.4';
/** @var array */
private $concern = array(base::APPLICATION_BOX);
/**
* {@inheritdoc}
*/
public function get_release()
{
return $this->release;
}
/**
* {@inheritdoc}
*/
public function require_all_upgrades()
{
return false;
}
/**
* {@inheritdoc}
*/
public function concern()
{
return $this->concern;
}
/**
* {@inheritdoc}
*/
public function apply(base $appbox, Application $app)
{
$em = $app['EM'];
$mappingFieldType = $mappingFieldResult = new ResultSetMapping();
$rs = $em->createNativeQuery(
"SHOW FIELDS FROM usr WHERE Field = 'usr_login';",
$mappingFieldType->addScalarResult('Type', 'Type')
)->getSingleResult();
if (0 !== strpos(strtolower($rs['Type']), 'varbinary')) {
return;
}
// As 'usr_login' field type is varbinary it can contain any charset (utf8 or latin1).
// Compare usr_login to usr_login converted to utf8>utf32>utf8
// will detect broken char for latin1 encoded string.
// Then detected 'usr_login' fields must be converted from latin1 to utf8.
$rs = $em->createNativeQuery(
'SELECT t.usr_id, t.login_utf8 FROM (
SELECT usr_id,
usr_login AS login_unknown_charset,
CONVERT(CAST(usr_login AS CHAR CHARACTER SET latin1) USING utf8) AS login_utf8,
CONVERT(CONVERT(CAST(usr_login AS CHAR CHARACTER SET utf8) USING utf32) USING utf8) AS login_utf8_utf32_utf8
FROM usr
) AS t
WHERE t.login_utf8_utf32_utf8 != t.login_unknown_charset',
$mappingFieldResult->addScalarResult('usr_id', 'usr_id')->addScalarResult('login_utf8', 'login_utf8')
)->getResult();
foreach ($rs as $row) {
$em->getConnection()->executeQuery(sprintf('UPDATE usr SET usr_login="%s" WHERE usr_id=%d', $row['login_utf8'], $row['usr_id']));
}
foreach (array(
// drop index
"ALTER TABLE usr DROP INDEX usr_login;",
// change field type
"ALTER TABLE usr MODIFY usr_login VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin;",
// recreate index
"CREATE UNIQUE INDEX usr_login ON usr (usr_login);"
) as $sql) {
$em->getConnection()->executeQuery($sql);
}
return true;
}
}

View File

@@ -354,18 +354,6 @@ function returnElement(unId)
var pref = new Array(0);
var lastpref=null;
function loaded()
{
self.focus();
write_valsug();
makeRestrict();
maketextaffich();
makeEmpty();
redrawme();
scan();
$("#iddivloading").hide();
}
function Roll(im, x)
{
var s=document[im].src;
@@ -809,7 +797,18 @@ pref["{{ value['key']|escapeDoubleQuote|raw }}"].valsug["{{ value['value']|escap
function getSruct()
{
var dom = document.implementation.createDocument(null, 'baseprefs', null);
var parser = new DOMParser();
var dom = parser.parseFromString($('#txtareaxml').val(), 'text/xml');
var existing = dom.getElementsByTagName('sugestedValues');
if (existing.length !== 0) {
for (i in existing) {
if (existing[i].parentNode) {
existing[i].parentNode.removeChild(existing[i]);
}
}
}
var values = dom.createElement('sugestedValues');
for (a in pref ) {
@@ -830,7 +829,11 @@ function getSruct()
dom.getElementsByTagName('baseprefs')[0].appendChild(values);
var serializer = new XMLSerializer();
var xml = '<?xml version="1.0" encoding="UTF-8"?>' + serializer.serializeToString(dom);
var xml = serializer.serializeToString(dom);
if (xml.substring(0, 8) !== '<?xml ve') {
xml = '<?xml version="1.0" encoding="UTF-8"?>' + xml;
}
xml.replace('<sugestedValues>', statuscoll + otherFields + '<sugestedValues>');
@@ -888,7 +891,6 @@ function view(type)
newStr=getSruct();
console.log(newStr);
if($('#txtareaxml').length > 0 && newStr!=null )
{
avantModif = newStr;
@@ -916,6 +918,11 @@ function view(type)
}
$(document).ready(function(){
write_valsug();
makeRestrict();
maketextaffich();
makeEmpty();
redrawme();
scan();
$("#iddivloading").hide();
});

View File

@@ -1,21 +1,4 @@
<script type="text/javascript">
var bodySize = {x:100,y:100};
function resize(){
bodySize.y = $(window).height();
bodySize.x = $(window).width();
var $heightd = $('#tab_demandes').outerHeight(true);
var maxSize = (bodySize.y - 120);
if($heightd > maxSize)
{
$('#tab_demandes').height(maxSize);
}
}
$(document).ready(function(){
resize();
@@ -33,7 +16,7 @@
}).on("uncheck-deny", function(event) {
var $btnGroup = $(event.currentTarget);
var $denyButton = $(".deny-checker", $btnGroup);
if ($denyButton.hasClass("active")) {
$denyButton.removeClass("active");
$(".deny-checker", $mainBtnAction).removeClass("active");
@@ -48,7 +31,7 @@
var nbActiveButton = $(".deny-checker.active", $basesBtnAction).length;
var totalBtn = $(".deny-checker", $basesBtnAction).length;
if (nbActiveButton === totalBtn) {
$(".deny-checker", $mainBtnAction).addClass("active");
}
@@ -75,7 +58,7 @@
if ($acceptBtn.hasClass("active")) {
$acceptBtn.removeClass("active");
$(".accept-checker", $mainBtnAction).removeClass("active");
$btnGroup.trigger("uncheck-hd");
$btnGroup.trigger("uncheck-watermark");
}
@@ -92,7 +75,7 @@
if (nbActiveButton === totalBtn) {
$(".accept-hd-checker", $mainBtnAction).addClass("active");
}
$btnGroup.trigger('uncheck-deny').trigger('check-accept');
}
}).on('uncheck-hd', function(event) {
@@ -116,7 +99,7 @@
if (nbActiveButton === totalBtn) {
$(".accept-watermark-checker", $mainBtnAction).addClass("active");
}
$btnGroup.trigger('uncheck-deny').trigger('check-accept');
}
}).on('uncheck-watermark', function(event) {
@@ -128,7 +111,7 @@
$(".accept-watermark-checker", $mainBtnAction).removeClass("active");
}
});
$.each([
$('.deny-checker', $basesBtnAction),
$('.accept-checker', $basesBtnAction),
@@ -167,7 +150,7 @@
}
});
});
$(".submit", $form).bind("click", function (event) {
$(".btn.active", $basesBtnAction).each(function() {
$("<input>").attr("type", "hidden").attr("name", this.name).val(this.value).appendTo($form);
@@ -216,7 +199,7 @@
</thead>
</table>
<div id="tab_demandes" style="overflow-y:scroll; overflow-x:hidden;">
<div id="tab_demandes">
{% set tableColls = table['coll'] %}
{% for row in table['user'] %}
<div class="well well-small">
@@ -253,9 +236,9 @@
</td>
<td>
{% for basId in colls %}
<h1 style="word-wrap: break-word;">
<span style="font-weight:bold;font-size:14px;word-wrap: break-word;">
{{ basId| bas_labels(app) }}
</h1>
</span>
{% set btn_value = row['usr_id'] ~ "_" ~ basId %}
<div class="btn-group btn-single-action" style="margin:auto auto 5px 0;">
<button data-event="deny" value="{{ btn_value }}" type="button" name="deny[]" class="btn deny-checker" title="{{ 'admin:: refuser l\'acces' | trans }}">