mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-12 12:33:26 +00:00
Add HTML5 features
This commit is contained in:
@@ -16,7 +16,7 @@ https://docs.phraseanet.com/3.6/
|
||||
|
||||
#Easy Installation
|
||||
|
||||
Get the latests sources here https://github.com/alchemy-fr/Phraseanet/downloads
|
||||
Get the latest sources here https://github.com/alchemy-fr/Phraseanet/downloads
|
||||
|
||||
**Setup your webserver**
|
||||
|
||||
@@ -24,15 +24,11 @@ Get the latests sources here https://github.com/alchemy-fr/Phraseanet/downloads
|
||||
<pre>
|
||||
server {
|
||||
listen 80;
|
||||
server_name subdeomain.domain.tld;
|
||||
server_name subdomain.domain.tld;
|
||||
root /path/to/Phraseanet/www;
|
||||
|
||||
index index.php;
|
||||
|
||||
|
||||
location /web {
|
||||
alias /path/to/Phraseanet/datas/web;
|
||||
}
|
||||
location /download {
|
||||
internal;
|
||||
alias /path/to/Phraseanet/tmp/download;
|
||||
@@ -52,3 +48,4 @@ Let's go !
|
||||
Phraseanet is licensed under GPL-v3 license.
|
||||
|
||||
[1]: http://developer.phraseanet.com/
|
||||
|
||||
|
@@ -23,7 +23,14 @@ use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Application;
|
||||
|
||||
require_once dirname(__FILE__) . '/../lib/bootstrap.php';
|
||||
require_once dirname(__FILE__) . '/../lib/classes/bootstrap.class.php';
|
||||
|
||||
bootstrap::register_autoloads();
|
||||
|
||||
$configuration = Alchemy\Phrasea\Core\Configuration::build();
|
||||
if ($configuration->isInstalled()) {
|
||||
require_once dirname(__FILE__) . '/../lib/bootstrap.php';
|
||||
}
|
||||
|
||||
try {
|
||||
$app = new Application("
|
||||
|
32
composer.lock
generated
32
composer.lock
generated
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"package": "data-uri/data-uri",
|
||||
"version": "dev-master",
|
||||
"source-reference": "34f587d4baf0e1127da23e78df0ebff9ff1d37a0"
|
||||
"source-reference": "f92fcef4f8f93c05d8cc86cbe8ef5f9f3fe428c5"
|
||||
},
|
||||
{
|
||||
"package": "doctrine/common",
|
||||
@@ -85,7 +85,7 @@
|
||||
{
|
||||
"package": "php-xpdf/php-xpdf",
|
||||
"version": "dev-master",
|
||||
"source-reference": "34ad2e4830a56f1378bba6e92f9e97795e56aa15"
|
||||
"source-reference": "f5b447a68a1f67a088290326e636494a8bfcbee9"
|
||||
},
|
||||
{
|
||||
"package": "phpexiftool/exiftool",
|
||||
@@ -108,6 +108,11 @@
|
||||
"alias-pretty-version": "1.0.x-dev",
|
||||
"alias-version": "1.0.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "silex/silex",
|
||||
"version": "dev-master",
|
||||
"source-reference": "410c1ddd14794e332edacbab4037584185529d2e"
|
||||
},
|
||||
{
|
||||
"package": "silex/silex",
|
||||
"version": "dev-master",
|
||||
@@ -117,7 +122,8 @@
|
||||
{
|
||||
"package": "silex/silex",
|
||||
"version": "dev-master",
|
||||
"source-reference": "410c1ddd14794e332edacbab4037584185529d2e"
|
||||
"alias-pretty-version": "1.0.x-dev",
|
||||
"alias-version": "1.0.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "swftools/swftools",
|
||||
@@ -127,7 +133,8 @@
|
||||
{
|
||||
"package": "swiftmailer/swiftmailer",
|
||||
"version": "dev-master",
|
||||
"source-reference": "d33d54cc8a081b0b85734744936ede1ba230dd64"
|
||||
"alias-pretty-version": "4.1.x-dev",
|
||||
"alias-version": "4.1.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "swiftmailer/swiftmailer",
|
||||
@@ -135,6 +142,17 @@
|
||||
"alias-pretty-version": "4.1.x-dev",
|
||||
"alias-version": "4.1.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "swiftmailer/swiftmailer",
|
||||
"version": "dev-master",
|
||||
"source-reference": "d33d54cc8a081b0b85734744936ede1ba230dd64"
|
||||
},
|
||||
{
|
||||
"package": "symfony/symfony",
|
||||
"version": "dev-master",
|
||||
"alias-pretty-version": "2.1.x-dev",
|
||||
"alias-version": "2.1.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "symfony/symfony",
|
||||
"version": "dev-master",
|
||||
@@ -162,6 +180,12 @@
|
||||
"alias-pretty-version": "1.8.x-dev",
|
||||
"alias-version": "1.8.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "twig/twig",
|
||||
"version": "dev-master",
|
||||
"alias-pretty-version": "1.8.x-dev",
|
||||
"alias-version": "1.8.9999999.9999999-dev"
|
||||
},
|
||||
{
|
||||
"package": "twig/twig",
|
||||
"version": "dev-master",
|
||||
|
@@ -15,5 +15,5 @@ main_connexion:
|
||||
#Define a connexion to a SQLite database named test_connexion
|
||||
test_connexion:
|
||||
driver: pdo_sqlite
|
||||
path: /PATH/TO/SQLITE/DATABASE
|
||||
path: :memory:
|
||||
charset: UTF8
|
||||
|
@@ -8,5 +8,5 @@ main_connexion:
|
||||
charset: UTF8
|
||||
test_connexion:
|
||||
driver: pdo_sqlite
|
||||
path: /tmp/tests.sqlite
|
||||
path: :memory:
|
||||
charset: UTF8
|
||||
|
@@ -488,6 +488,7 @@ class Core extends \Pimple
|
||||
ini_set('session.auto_start', '0');
|
||||
ini_set('session.hash_function', '1');
|
||||
ini_set('session.hash_bits_per_character', '6');
|
||||
ini_set('session.cache_limiter', '');
|
||||
ini_set('allow_url_fopen', 'on');
|
||||
|
||||
return;
|
||||
|
@@ -48,196 +48,168 @@ class Basket extends \Entities\Basket implements \Doctrine\ORM\Proxy\Proxy
|
||||
return (int) $this->_identifier["id"];
|
||||
}
|
||||
$this->__load();
|
||||
|
||||
return parent::getId();
|
||||
}
|
||||
|
||||
public function setName($name)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setName($name);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getName();
|
||||
}
|
||||
|
||||
public function setDescription($description)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setDescription($description);
|
||||
}
|
||||
|
||||
public function getDescription()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getDescription();
|
||||
}
|
||||
|
||||
public function setUsrId($usrId)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUsrId($usrId);
|
||||
}
|
||||
|
||||
public function getUsrId()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUsrId();
|
||||
}
|
||||
|
||||
public function setPusherId($pusherId)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setPusherId($pusherId);
|
||||
}
|
||||
|
||||
public function getPusherId()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getPusherId();
|
||||
}
|
||||
|
||||
public function setArchived($archived)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setArchived($archived);
|
||||
}
|
||||
|
||||
public function getArchived()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getArchived();
|
||||
}
|
||||
|
||||
public function setCreated($created)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setCreated($created);
|
||||
}
|
||||
|
||||
public function getCreated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getCreated();
|
||||
}
|
||||
|
||||
public function setUpdated($updated)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUpdated($updated);
|
||||
}
|
||||
|
||||
public function getUpdated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUpdated();
|
||||
}
|
||||
|
||||
public function addBasketElement(\Entities\BasketElement $elements)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::addBasketElement($elements);
|
||||
}
|
||||
|
||||
public function getElements()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getElements();
|
||||
}
|
||||
|
||||
public function getElementsByOrder($ordre)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getElementsByOrder($ordre);
|
||||
}
|
||||
|
||||
public function setPusher(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setPusher($user);
|
||||
}
|
||||
|
||||
public function getPusher()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getPusher();
|
||||
}
|
||||
|
||||
public function setOwner(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setOwner($user);
|
||||
}
|
||||
|
||||
public function getOwner()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getOwner();
|
||||
}
|
||||
|
||||
public function setValidation(\Entities\ValidationSession $validation)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setValidation($validation);
|
||||
}
|
||||
|
||||
public function getValidation()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getValidation();
|
||||
}
|
||||
|
||||
public function setIsRead($isRead)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setIsRead($isRead);
|
||||
}
|
||||
|
||||
public function getIsRead()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getIsRead();
|
||||
}
|
||||
|
||||
public function hasRecord(\record_adapter $record)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::hasRecord($record);
|
||||
}
|
||||
|
||||
public function getSize()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getSize();
|
||||
}
|
||||
|
||||
|
@@ -48,70 +48,60 @@ class LazaretSession extends \Entities\LazaretSession implements \Doctrine\ORM\P
|
||||
return (int) $this->_identifier["id"];
|
||||
}
|
||||
$this->__load();
|
||||
|
||||
return parent::getId();
|
||||
}
|
||||
|
||||
public function setUsrId($usrId)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUsrId($usrId);
|
||||
}
|
||||
|
||||
public function getUsrId()
|
||||
public function getUser()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUsrId();
|
||||
return parent::getUser();
|
||||
}
|
||||
|
||||
public function setCreated($created)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setCreated($created);
|
||||
}
|
||||
|
||||
public function getCreated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getCreated();
|
||||
}
|
||||
|
||||
public function setUpdated($updated)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUpdated($updated);
|
||||
}
|
||||
|
||||
public function getUpdated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUpdated();
|
||||
}
|
||||
|
||||
public function addLazaretFiles(\Entities\LazaretFile $files)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::addLazaretFiles($files);
|
||||
}
|
||||
|
||||
public function getFiles()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getFiles();
|
||||
}
|
||||
|
||||
public function addLazaretFile(\Entities\LazaretFile $files)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::addLazaretFile($files);
|
||||
}
|
||||
|
||||
|
@@ -48,98 +48,84 @@ class UsrList extends \Entities\UsrList implements \Doctrine\ORM\Proxy\Proxy
|
||||
return (int) $this->_identifier["id"];
|
||||
}
|
||||
$this->__load();
|
||||
|
||||
return parent::getId();
|
||||
}
|
||||
|
||||
public function setName($name)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setName($name);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getName();
|
||||
}
|
||||
|
||||
public function setCreated($created)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setCreated($created);
|
||||
}
|
||||
|
||||
public function getCreated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getCreated();
|
||||
}
|
||||
|
||||
public function setUpdated($updated)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUpdated($updated);
|
||||
}
|
||||
|
||||
public function getUpdated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUpdated();
|
||||
}
|
||||
|
||||
public function addUsrListOwner(\Entities\UsrListOwner $owners)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::addUsrListOwner($owners);
|
||||
}
|
||||
|
||||
public function getOwners()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getOwners();
|
||||
}
|
||||
|
||||
public function hasAccess(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::hasAccess($user);
|
||||
}
|
||||
|
||||
public function getOwner(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getOwner($user);
|
||||
}
|
||||
|
||||
public function addUsrListEntry(\Entities\UsrListEntry $entry)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::addUsrListEntry($entry);
|
||||
}
|
||||
|
||||
public function getEntries()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getEntries();
|
||||
}
|
||||
|
||||
public function has(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::has($user);
|
||||
}
|
||||
|
||||
|
@@ -48,91 +48,78 @@ class UsrListOwner extends \Entities\UsrListOwner implements \Doctrine\ORM\Proxy
|
||||
return (int) $this->_identifier["id"];
|
||||
}
|
||||
$this->__load();
|
||||
|
||||
return parent::getId();
|
||||
}
|
||||
|
||||
public function setUsrId($usrId)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUsrId($usrId);
|
||||
}
|
||||
|
||||
public function getUsrId()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUsrId();
|
||||
}
|
||||
|
||||
public function setRole($role)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setRole($role);
|
||||
}
|
||||
|
||||
public function getRole()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getRole();
|
||||
}
|
||||
|
||||
public function setCreated($created)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setCreated($created);
|
||||
}
|
||||
|
||||
public function getCreated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getCreated();
|
||||
}
|
||||
|
||||
public function setUpdated($updated)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUpdated($updated);
|
||||
}
|
||||
|
||||
public function getUpdated()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUpdated();
|
||||
}
|
||||
|
||||
public function setList(\Entities\UsrList $list)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setList($list);
|
||||
}
|
||||
|
||||
public function getList()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getList();
|
||||
}
|
||||
|
||||
public function setUser(\User_Adapter $user)
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::setUser($user);
|
||||
}
|
||||
|
||||
public function getUser()
|
||||
{
|
||||
$this->__load();
|
||||
|
||||
return parent::getUser();
|
||||
}
|
||||
|
||||
|
@@ -606,59 +606,31 @@ class media_subdef extends media_abstract implements cache_cacheableInterface
|
||||
|
||||
$datas = array();
|
||||
|
||||
if (method_exists($media, 'getWidth')) {
|
||||
$datas[self::TC_DATA_WIDTH] = $media->getWidth();
|
||||
$methods = array(
|
||||
self::TC_DATA_WIDTH => 'getWidth',
|
||||
self::TC_DATA_HEIGHT => 'getHeight',
|
||||
self::TC_DATA_FOCALLENGTH => 'getFocalLength',
|
||||
self::TC_DATA_CHANNELS => 'getChannels',
|
||||
self::TC_DATA_COLORDEPTH => 'getColorDepth',
|
||||
self::TC_DATA_CAMERAMODEL => 'getCameraModel',
|
||||
self::TC_DATA_FLASHFIRED => 'getFlashFired',
|
||||
self::TC_DATA_APERTURE => 'getAperture',
|
||||
self::TC_DATA_SHUTTERSPEED => 'getShutterSpeed',
|
||||
self::TC_DATA_HYPERFOCALDISTANCE => 'getHyperfocalDistance',
|
||||
self::TC_DATA_ISO => 'getISO',
|
||||
self::TC_DATA_LIGHTVALUE => 'getLightValue',
|
||||
self::TC_DATA_COLORSPACE => 'getColorSpace',
|
||||
self::TC_DATA_DURATION => 'getDuration',
|
||||
self::TC_DATA_FRAMERATE => 'getFrameRate',
|
||||
self::TC_DATA_AUDIOSAMPLERATE => 'getAudioSampleRate',
|
||||
self::TC_DATA_VIDEOCODEC => 'getVideoCodec',
|
||||
self::TC_DATA_AUDIOCODEC => 'getAudioCodec',
|
||||
);
|
||||
|
||||
foreach ($methods as $tc_name => $method) {
|
||||
if (method_exists($media, $method)) {
|
||||
$datas[$tc_name] = call_user_method($method, $media);
|
||||
}
|
||||
if (method_exists($media, 'getHeight')) {
|
||||
$datas[self::TC_DATA_HEIGHT] = $media->getHeight();
|
||||
}
|
||||
if (method_exists($media, 'getFocalLength')) {
|
||||
$datas[self::TC_DATA_FOCALLENGTH] = $media->getFocalLength();
|
||||
}
|
||||
if (method_exists($media, 'getChannels')) {
|
||||
$datas[self::TC_DATA_CHANNELS] = $media->getChannels();
|
||||
}
|
||||
if (method_exists($media, 'getColorDepth')) {
|
||||
$datas[self::TC_DATA_COLORDEPTH] = $media->getColorDepth();
|
||||
}
|
||||
if (method_exists($media, 'getCameraModel')) {
|
||||
$datas[self::TC_DATA_CAMERAMODEL] = $media->getCameraModel();
|
||||
}
|
||||
if (method_exists($media, 'getFlashFired')) {
|
||||
$datas[self::TC_DATA_FLASHFIRED] = $media->getFlashFired();
|
||||
}
|
||||
if (method_exists($media, 'getAperture')) {
|
||||
$datas[self::TC_DATA_APERTURE] = $media->getAperture();
|
||||
}
|
||||
if (method_exists($media, 'getShutterSpeed')) {
|
||||
$datas[self::TC_DATA_SHUTTERSPEED] = $media->getShutterSpeed();
|
||||
}
|
||||
if (method_exists($media, 'getHyperfocalDistance')) {
|
||||
$datas[self::TC_DATA_HYPERFOCALDISTANCE] = $media->getHyperfocalDistance();
|
||||
}
|
||||
if (method_exists($media, 'getISO')) {
|
||||
$datas[self::TC_DATA_ISO] = $media->getISO();
|
||||
}
|
||||
if (method_exists($media, 'getLightValue')) {
|
||||
$datas[self::TC_DATA_LIGHTVALUE] = $media->getLightValue();
|
||||
}
|
||||
if (method_exists($media, 'getColorSpace')) {
|
||||
$datas[self::TC_DATA_COLORSPACE] = $media->getColorSpace();
|
||||
}
|
||||
if (method_exists($media, 'getDuration')) {
|
||||
$datas[self::TC_DATA_DURATION] = $media->getDuration();
|
||||
}
|
||||
if (method_exists($media, 'getFrameRate')) {
|
||||
$datas[self::TC_DATA_FRAMERATE] = $media->getFrameRate();
|
||||
}
|
||||
if (method_exists($media, 'getAudioSampleRate')) {
|
||||
$datas[self::TC_DATA_AUDIOSAMPLERATE] = $media->getAudioSampleRate();
|
||||
}
|
||||
if (method_exists($media, 'getVideoCodec')) {
|
||||
$datas[self::TC_DATA_VIDEOCODEC] = $media->getVideoCodec();
|
||||
}
|
||||
if (method_exists($media, 'getAudioCodec')) {
|
||||
$datas[self::TC_DATA_AUDIOCODEC] = $media->getAudioCodec();
|
||||
}
|
||||
|
||||
$datas[self::TC_DATA_LONGITUDE] = $media->getLongitude();
|
||||
@@ -689,8 +661,10 @@ class media_subdef extends media_abstract implements cache_cacheableInterface
|
||||
':dispatched' => 1,
|
||||
);
|
||||
|
||||
if (in_array($media->getType(), array(Media::TYPE_IMAGE, Media::TYPE_VIDEO))) {
|
||||
if (method_exists($media, 'getWidth') && null !== $media->getWidth()) {
|
||||
$params[':width'] = $media->getWidth();
|
||||
}
|
||||
if (method_exists($media, 'getHeight') && null !== $media->getHeight()) {
|
||||
$params[':height'] = $media->getHeight();
|
||||
}
|
||||
|
||||
|
@@ -86,7 +86,7 @@ class module_console_systemConfigCheck extends Command
|
||||
{
|
||||
$hasError = false;
|
||||
foreach ($constraints as $constraint) {
|
||||
if ( ! $hasError && ! $this->processConstraint($constraint, $output)) {
|
||||
if ( ! $this->processConstraint($constraint, $output)) {
|
||||
$hasError = true;
|
||||
}
|
||||
}
|
||||
|
4
lib/classes/module/console/taskrun.class.php
Executable file → Normal file
4
lib/classes/module/console/taskrun.class.php
Executable file → Normal file
@@ -97,7 +97,9 @@ class module_console_taskrun extends Command
|
||||
}
|
||||
}
|
||||
|
||||
$logger = new Logger('Task logger');
|
||||
$core = \bootstrap::getCore();
|
||||
|
||||
$logger = $core['monolog'];
|
||||
|
||||
if ($input->getOption('verbose')) {
|
||||
$handler = new Handler\StreamHandler(fopen('php://stdout', 'a'));
|
||||
|
@@ -53,6 +53,22 @@ class patch_370a6 implements patchInterface
|
||||
|
||||
public function apply(base &$databox)
|
||||
{
|
||||
$structure = $databox->get_structure();
|
||||
|
||||
$DOM = new DOMDocument();
|
||||
$DOM->loadXML($structure);
|
||||
|
||||
$xpath = new DOMXpath($DOM);
|
||||
|
||||
foreach($xpath->query('/record/subdefs/subdefgroup[@name="video"]/subdef[@name="preview"]/acodec') as $node){
|
||||
$node->nodeValue = 'libfaac';
|
||||
}
|
||||
|
||||
foreach($xpath->query('/record/subdefs/subdefgroup[@name="video"]/subdef[@name="preview"]/vcodec') as $node){
|
||||
$node->nodeValue = 'libx264';
|
||||
}
|
||||
|
||||
$databox->saveStructure($DOM);
|
||||
|
||||
$subdefgroups = $databox->get_subdef_structure();
|
||||
|
||||
|
@@ -1003,51 +1003,17 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
|
||||
$core['file-system']->chmod($subdefFile->getRealPath(), 0760);
|
||||
|
||||
try {
|
||||
media_subdef::create($this, $name, $media);
|
||||
|
||||
$appbox = \appbox::get_instance(\bootstrap::getCore());
|
||||
$session = $appbox->get_session();
|
||||
|
||||
$connbas = connection::getPDOConnection($this->get_sbas_id());
|
||||
|
||||
$sql = 'UPDATE subdef
|
||||
SET file = :filename,
|
||||
width = :width,
|
||||
height = :height,
|
||||
mime = :mime,
|
||||
path = :path,
|
||||
size = :size,
|
||||
substit = 1
|
||||
updated_on = now()
|
||||
WHERE name = :name AND record_id = :record_id';
|
||||
|
||||
$params = array(
|
||||
':record_id' => $this->record_id,
|
||||
':name' => $name,
|
||||
':filename' => $subdefFile->getFilename(),
|
||||
':mime' => $subdefFile->getMimeType(),
|
||||
':path' => $subdefFile->getPath(),
|
||||
':filesize' => $subdefFile->getSize(),
|
||||
);
|
||||
|
||||
if (method_exists($media, 'getWidth')) {
|
||||
$params[':width'] = $media->getWidth();
|
||||
}
|
||||
if (method_exists($media, 'getHeight')) {
|
||||
$params[':height'] = $media->getHeight();
|
||||
}
|
||||
|
||||
$stmt = $connbas->prepare($sql);
|
||||
|
||||
$stmt->execute($params);
|
||||
|
||||
$subdef = $this->get_subdef($name);
|
||||
$subdef->delete_data_from_cache();
|
||||
|
||||
$this->delete_data_from_cache(self::CACHE_SUBDEFS);
|
||||
|
||||
if ($meta_writable) {
|
||||
$this->write_metas();
|
||||
}
|
||||
|
||||
if ($name == 'document') {
|
||||
$this->rebuild_subdefs();
|
||||
}
|
||||
@@ -1056,9 +1022,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
|
||||
$session->get_logger($this->get_databox())
|
||||
->log($this, Session_Logger::EVENT_SUBSTITUTE, $type, '');
|
||||
} catch (Exception $e) {
|
||||
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
@@ -1380,7 +1343,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
|
||||
$pathhd = databox::dispatch(trim($databox->get_sxml_structure()->path));
|
||||
$newname = $record->get_record_id() . "_document." . $file->getFile()->getExtension();
|
||||
$newname = $record->get_record_id() . "_document." . pathinfo($file->getOriginalName(), PATHINFO_EXTENSION);
|
||||
|
||||
$core['file-system']->copy($file->getFile()->getRealPath(), $pathhd . $newname, true);
|
||||
|
||||
@@ -1657,14 +1620,8 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
{
|
||||
$subdefs = $databox->get_subdef_structure()->getSubdefGroup($this->get_type());
|
||||
|
||||
$Core = bootstrap::getCore();
|
||||
|
||||
if ( ! $logger) {
|
||||
$logger = $Core['monolog'];
|
||||
}
|
||||
|
||||
if ( ! $subdefs) {
|
||||
$Core['monolog']->addInfo(sprintf('Nothing to do for %s', $this->get_type()));
|
||||
$logger->addInfo(sprintf('Nothing to do for %s', $this->get_type()));
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -1680,15 +1637,15 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
$pathdest = null;
|
||||
|
||||
if ($this->has_subdef($subdefname) && $this->get_subdef($subdefname)->is_physically_present()) {
|
||||
|
||||
$pathdest = $this->get_subdef($subdefname)->get_pathfile();
|
||||
$this->get_subdef($subdefname)->remove_file();
|
||||
|
||||
$logger->addInfo(sprintf('Removed old file for %s', $subdefname));
|
||||
$this->clearSubdefCache($subdefname);
|
||||
}
|
||||
|
||||
$pathdest = $this->generateSubdefPathname($subdef, $pathdest);
|
||||
|
||||
$logger->addInfo(sprintf('Generating subdef to %s', $pathdest));
|
||||
$this->generate_subdef($subdef, $pathdest, $logger);
|
||||
|
||||
if (file_exists($pathdest)) {
|
||||
@@ -1732,6 +1689,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
|
||||
try {
|
||||
if (null === $this->get_hd_file()) {
|
||||
$logger->addInfo('No HD file found, aborting');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -39,6 +39,7 @@ class setup
|
||||
, "phrasea2"
|
||||
, "SimpleXML"
|
||||
, "sockets"
|
||||
, "sqlite3"
|
||||
, "xml"
|
||||
, "zip"
|
||||
, "zlib"
|
||||
@@ -49,22 +50,23 @@ class setup
|
||||
);
|
||||
protected static $PHP_CONF = array(
|
||||
'output_buffering' => '4096' //INI_ALL
|
||||
, 'memory_limit' => '1024M' //INI_ALL
|
||||
, 'memory_limit' => '2048M' //INI_ALL
|
||||
, 'error_reporting' => '6143' //INI_ALL
|
||||
, 'default_charset' => 'UTF-8' //INI_ALL
|
||||
, 'session.use_cookies' => '1' //INI_ALL
|
||||
, 'session.use_only_cookies' => '1' //INI_ALL
|
||||
, 'session.auto_start' => '0' //INI_ALL
|
||||
, 'session.hash_function' => '1' //INI_ALL
|
||||
, 'session.use_cookies' => 'on' //INI_ALL
|
||||
, 'session.use_only_cookies' => 'on' //INI_ALL
|
||||
, 'session.auto_start' => 'off' //INI_ALL
|
||||
, 'session.hash_function' => 'on' //INI_ALL
|
||||
, 'session.hash_bits_per_character' => '6' //INI_ALL
|
||||
, 'allow_url_fopen' => 'on' //INI_ALL
|
||||
, 'display_errors' => 'off' //INI_ALL
|
||||
, 'display_startup_errors' => 'off' //INI_ALL
|
||||
, 'log_errors' => 'off' //INI_ALL
|
||||
, 'session.cache_limiter' => '' //INI_ALL
|
||||
);
|
||||
protected static $PHP_REQ = array(
|
||||
'safe_mode' => 'off'
|
||||
, 'file_uploads' => '1'
|
||||
, 'file_uploads' => 'on'
|
||||
, 'magic_quotes_runtime' => 'off' //INI_ALL
|
||||
, 'magic_quotes_gpc' => 'off' //INI_PER_DIR -- just for check
|
||||
);
|
||||
@@ -191,17 +193,21 @@ class setup
|
||||
|
||||
public static function check_binaries(registryInterface $registry)
|
||||
{
|
||||
$finder = new \Symfony\Component\Process\ExecutableFinder();
|
||||
|
||||
$binaries = array(
|
||||
'PHP CLI' => $registry->get('GV_cli'),
|
||||
'ImageMagick (convert)' => $registry->get('GV_imagick'),
|
||||
'PDF 2 SWF' => $registry->get('GV_pdf2swf'),
|
||||
'Unoconv' => $registry->get('GV_unoconv'),
|
||||
'SWFextract' => $registry->get('GV_swf_extract'),
|
||||
'SWFrender' => $registry->get('GV_swf_render'),
|
||||
'MP4Box' => $registry->get('GV_mp4box'),
|
||||
'xpdf (pdf2text)' => $registry->get('GV_pdftotext'),
|
||||
'ImageMagick (composite)' => $registry->get('GV_pathcomposite'),
|
||||
'FFmpeg' => $registry->get('GV_ffmpeg'),
|
||||
'PHP CLI' => $registry->get('GV_cli', $finder->find('php')),
|
||||
'ImageMagick (convert)' => $registry->get('GV_imagick', $finder->find('convert')),
|
||||
'PDF 2 SWF' => $registry->get('GV_pdf2swf', $finder->find('pdf2swf')),
|
||||
'Unoconv' => $registry->get('GV_unoconv', $finder->find('unoconv')),
|
||||
'SWFextract' => $registry->get('GV_swf_extract', $finder->find('swfextract')),
|
||||
'SWFrender' => $registry->get('GV_swf_render', $finder->find('swfrender')),
|
||||
'MP4Box' => $registry->get('GV_mp4box', $finder->find('MP4Box')),
|
||||
'xpdf (pdf2text)' => $registry->get('GV_pdftotext', $finder->find('pdftotext')),
|
||||
'ImageMagick (composite)' => $registry->get('GV_pathcomposite', $finder->find('composite')),
|
||||
'FFmpeg' => $registry->get('GV_ffmpeg', $finder->find('ffmpeg')),
|
||||
'FFprobe' => $registry->get('GV_ffprobe', $finder->find('ffprobe')),
|
||||
'phraseanet_indexer' => $finder->find('phraseanet_indexer'),
|
||||
);
|
||||
|
||||
$constraints = array();
|
||||
@@ -601,21 +607,21 @@ class setup
|
||||
|
||||
public static function check_php_configuration()
|
||||
{
|
||||
$nonblockers = array('log_errors', 'display_startup_errors', 'display_errors');
|
||||
$nonblockers = array('log_errors', 'display_startup_errors', 'display_errors', 'output_buffering');
|
||||
|
||||
$constraints = array();
|
||||
foreach (self::$PHP_REQ as $conf => $value) {
|
||||
if (($tmp = self::test_php_conf($conf, $value)) === false) {
|
||||
if (($tmp = self::test_php_conf($conf, $value)) !== $value) {
|
||||
$constraints[] = new Setup_Constraint($conf, false, sprintf(_('setup::Configuration mauvaise : pour la variable %1$s, configuration donnee : %2$s ; attendue : %3$s'), $conf, $tmp, $value), true);
|
||||
} else {
|
||||
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = %s => OK', $conf, $value), true);
|
||||
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), true);
|
||||
}
|
||||
}
|
||||
foreach (self::$PHP_CONF as $conf => $value) {
|
||||
if (($tmp = self::test_php_conf($conf, $value)) === false) {
|
||||
$constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s var ; %2$s given - %3$s supposed', $conf, $tmp, $value), ! in_array($conf, $nonblockers));
|
||||
if (($tmp = self::test_php_conf($conf, $value)) !== $value) {
|
||||
$constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s, found `%2$s`, required `%3$s`', $conf, $tmp, $value), ! in_array($conf, $nonblockers));
|
||||
} else {
|
||||
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = %s => OK', $conf, $value), ! in_array($conf, $nonblockers));
|
||||
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), ! in_array($conf, $nonblockers));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -674,7 +680,7 @@ class setup
|
||||
private static function test_php_conf($conf, $value)
|
||||
{
|
||||
$is_flag = false;
|
||||
$flags = array('on', 'off', '1', '0', '');
|
||||
$flags = array('on', 'off', '1', '0');
|
||||
if (in_array(strtolower($value), $flags))
|
||||
$is_flag = true;
|
||||
$current = ini_get($conf);
|
||||
@@ -683,18 +689,17 @@ class setup
|
||||
|
||||
if (($current === '' || $current === 'off' || $current === '0') && $is_flag) {
|
||||
if ($value === 'off' || $value === '0' || $value === '') {
|
||||
return $current;
|
||||
return 'off';
|
||||
}
|
||||
}
|
||||
if (($current === '1' || $current === 'on') && $is_flag) {
|
||||
if ($value === 'on' || $value === '1') {
|
||||
return 'on';
|
||||
}
|
||||
}
|
||||
|
||||
return $current;
|
||||
}
|
||||
}
|
||||
if ($current === $value) {
|
||||
return $current;
|
||||
}
|
||||
}
|
||||
|
||||
public static function rollback(connection_pdo $conn, connection_pdo $connbas = null)
|
||||
{
|
||||
|
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<record>
|
||||
<path>{{datapathnoweb}}{{basename}}/documents</path>
|
||||
|
||||
<subdefs>
|
||||
<subdefgroup name="image">
|
||||
<subdef class="preview" name="preview" downloadable="true">
|
||||
@@ -12,6 +11,7 @@
|
||||
<strip>no</strip>
|
||||
<quality>75</quality>
|
||||
<meta>yes</meta>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
@@ -24,13 +24,119 @@
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<meta>no</meta>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<size>480</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
|
||||
<subdefgroup name="video">
|
||||
<subdef class="preview" name="preview_mobile_webm" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<vcodec>libvpx</vcodec>
|
||||
<acodec>libvorbis</acodec>
|
||||
<label lang="fr">Prévisualisation mobile WebM</label>
|
||||
<label lang="en">WebM mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile_ogg" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<vcodec>libtheora</vcodec>
|
||||
<acodec>libvorbis</acodec>
|
||||
<label lang="fr">Prévisualisation mobile Ogg</label>
|
||||
<label lang="en">Ogg mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile_x264" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<acodec>libfaac</acodec>
|
||||
<vcodec>libx264</vcodec>
|
||||
<label lang="fr">Prévisualisation X264</label>
|
||||
<label lang="en">X264 Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_webm" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>1</threads>
|
||||
<acodec>libvorbis</acodec>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>800</size>
|
||||
<fps>15</fps>
|
||||
<vcodec>libvpx</vcodec>
|
||||
<label lang="fr">Prévisualisation WebM</label>
|
||||
<label lang="en">WebM Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_ogg" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>1</threads>
|
||||
<acodec>libvorbis</acodec>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>800</size>
|
||||
<fps>15</fps>
|
||||
<vcodec>libtheora</vcodec>
|
||||
<label lang="fr">Prévisualisation Ogg</label>
|
||||
<label lang="en">Ogg Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<size>800</size>
|
||||
@@ -38,6 +144,7 @@
|
||||
<writeDatas>yes</writeDatas>
|
||||
<acodec>libfaac</acodec>
|
||||
<vcodec>libx264</vcodec>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>8</threads>
|
||||
<fps>15</fps>
|
||||
@@ -49,6 +156,7 @@
|
||||
<size>200</size>
|
||||
<mediatype>gif</mediatype>
|
||||
<delay>500</delay>
|
||||
<devices>screen</devices>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Animation GIF</label>
|
||||
<label lang="en">GIF Animation</label>
|
||||
@@ -56,34 +164,57 @@
|
||||
<subdef class="thumbnail" name="thumbnail" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<size>200</size>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
|
||||
<subdefgroup name="audio">
|
||||
<subdef class="preview" name="preview" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>audio</mediatype>
|
||||
<writeDatas>yes</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<size>200</size>
|
||||
<devices>screen</devices>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>audio</mediatype>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
<subdefgroup name="document">
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
@@ -94,9 +225,29 @@
|
||||
<dpi>72</dpi>
|
||||
<size>200</size>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
<subdefgroup name="flash">
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
@@ -106,6 +257,7 @@
|
||||
<writeDatas>no</writeDatas>
|
||||
<method>resample</method>
|
||||
<dpi>72</dpi>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
@@ -115,9 +267,34 @@
|
||||
<writeDatas>no</writeDatas>
|
||||
<method>resample</method>
|
||||
<dpi>72</dpi>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<size>480</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
</subdefs>
|
||||
|
||||
|
@@ -11,6 +11,7 @@
|
||||
<strip>no</strip>
|
||||
<quality>75</quality>
|
||||
<meta>yes</meta>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
@@ -23,12 +24,119 @@
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<meta>no</meta>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<size>480</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
<subdefgroup name="video">
|
||||
<subdef class="preview" name="preview_mobile_webm" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<vcodec>libvpx</vcodec>
|
||||
<acodec>libvorbis</acodec>
|
||||
<label lang="fr">Prévisualisation mobile WebM</label>
|
||||
<label lang="en">WebM mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile_ogg" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<vcodec>libtheora</vcodec>
|
||||
<acodec>libvorbis</acodec>
|
||||
<label lang="fr">Prévisualisation mobile Ogg</label>
|
||||
<label lang="en">Ogg mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile_x264" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<bitrate>300</bitrate>
|
||||
<threads>2</threads>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>480</size>
|
||||
<fps>15</fps>
|
||||
<devices>handheld</devices>
|
||||
<acodec>libfaac</acodec>
|
||||
<vcodec>libx264</vcodec>
|
||||
<label lang="fr">Prévisualisation X264</label>
|
||||
<label lang="en">X264 Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_webm" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>1</threads>
|
||||
<acodec>libvorbis</acodec>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>800</size>
|
||||
<fps>15</fps>
|
||||
<vcodec>libvpx</vcodec>
|
||||
<label lang="fr">Prévisualisation WebM</label>
|
||||
<label lang="en">WebM Preview</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_ogg" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>video</mediatype>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>1</threads>
|
||||
<acodec>libvorbis</acodec>
|
||||
<GOPsize>25</GOPsize>
|
||||
<size>800</size>
|
||||
<fps>15</fps>
|
||||
<vcodec>libtheora</vcodec>
|
||||
<label lang="fr">Prévisualisation Ogg</label>
|
||||
<label lang="en">Ogg Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<size>800</size>
|
||||
@@ -36,6 +144,7 @@
|
||||
<writeDatas>yes</writeDatas>
|
||||
<acodec>libfaac</acodec>
|
||||
<vcodec>libx264</vcodec>
|
||||
<devices>screen</devices>
|
||||
<bitrate>1000</bitrate>
|
||||
<threads>8</threads>
|
||||
<fps>15</fps>
|
||||
@@ -47,6 +156,7 @@
|
||||
<size>200</size>
|
||||
<mediatype>gif</mediatype>
|
||||
<delay>500</delay>
|
||||
<devices>screen</devices>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Animation GIF</label>
|
||||
<label lang="en">GIF Animation</label>
|
||||
@@ -54,6 +164,7 @@
|
||||
<subdef class="thumbnail" name="thumbnail" downloadable="true">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<size>200</size>
|
||||
<devices>screen</devices>
|
||||
<mediatype>image</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Imagette</label>
|
||||
@@ -65,6 +176,7 @@
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>audio</mediatype>
|
||||
<writeDatas>yes</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
@@ -72,16 +184,37 @@
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<size>200</size>
|
||||
<devices>screen</devices>
|
||||
<writeDatas>no</writeDatas>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>audio</mediatype>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
<subdefgroup name="document">
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
@@ -92,9 +225,29 @@
|
||||
<dpi>72</dpi>
|
||||
<size>200</size>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
<subdefgroup name="flash">
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
@@ -104,6 +257,7 @@
|
||||
<writeDatas>no</writeDatas>
|
||||
<method>resample</method>
|
||||
<dpi>72</dpi>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
<label lang="en">Preview</label>
|
||||
</subdef>
|
||||
@@ -113,14 +267,37 @@
|
||||
<writeDatas>no</writeDatas>
|
||||
<method>resample</method>
|
||||
<dpi>72</dpi>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Imagette</label>
|
||||
<label lang="en">Thumbnail</label>
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview_mobile" downloadable="false">
|
||||
<size>480</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Prévisualisation Mobile</label>
|
||||
<label lang="en">Mobile Preview</label>
|
||||
</subdef>
|
||||
<subdef class="thumbnail" name="thumbnail_mobile" downloadable="false">
|
||||
<size>150</size>
|
||||
<resolution>72</resolution>
|
||||
<strip>yes</strip>
|
||||
<quality>75</quality>
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>image</mediatype>
|
||||
<meta>no</meta>
|
||||
<devices>handheld</devices>
|
||||
<label lang="fr">Imagette mobile</label>
|
||||
<label lang="en">Mobile Thumbnail</label>
|
||||
</subdef>
|
||||
</subdefgroup>
|
||||
</subdefs>
|
||||
|
||||
|
||||
|
||||
<description>
|
||||
<Objet src="IPTC:ObjectName" />
|
||||
<Categorie src="IPTC:Category"/>
|
||||
|
37
templates/web/common/HTML5Video.html.twig
Normal file
37
templates/web/common/HTML5Video.html.twig
Normal file
@@ -0,0 +1,37 @@
|
||||
{% macro format(arraySubdefs, displayWidth, displayHeight, extraclass, session, wrap)%}
|
||||
|
||||
{% set displayWidth = displayWidth %}
|
||||
{% set displayHeight = displayHeight|default(displayWidth) %}
|
||||
|
||||
{% if wrap %}
|
||||
<div style="width:{{ displayWidth | round }}px;height:{{ displayHeight | round }}px;" class="thumb_wrapper {{ extraclass | default('') }}">
|
||||
{% endif %}
|
||||
|
||||
<div class="record record_video imgTips" style="position:relative;width:{{ displayWidth | round }}px;height:{{ displayHeight | round }}px;">
|
||||
<video id="video_preview_tooltip" class="videoTips video-js vjs-default-skin" controls
|
||||
preload="auto" xposter="my_video_poster.png" width="{{ displayWidth|round }}" height="{{ displayHeight | round }}"
|
||||
data-setup="{}">
|
||||
{% for name, subdef in arraySubdefs %}
|
||||
{% if session.is_authenticated() == true %}
|
||||
{% set url = subdef.get_url() %}
|
||||
{% else %}
|
||||
{% set url = subdef.get_permalink().get_url() %}
|
||||
{% endif %}
|
||||
<source src="{{ url }}" type='{{ subdef.get_mime() }}'>
|
||||
{% endfor %}
|
||||
</video>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
_V_("video_preview_tooltip", {}, function(){
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
{% if wrap %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endmacro %}
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
|
||||
{% import 'common/thumbnail.html' as thumbnail %}
|
||||
{% import 'common/HTML5Video.html.twig' as thumbnailHTML5 %}
|
||||
|
||||
{% if not_wrapped is defined and not_wrapped %}
|
||||
{% set wrap = false %}
|
||||
@@ -7,10 +8,27 @@
|
||||
{% set wrap = true %}
|
||||
{% endif %}
|
||||
|
||||
{% set previewHtml5 = null %}
|
||||
|
||||
{% if user.ACL().has_access_to_subdef(record, 'preview') %}
|
||||
|
||||
{% if record.get_type() == 'video' %}
|
||||
{% set previewHtml5 = record.getSubdfefByDeviceAndMime(constant('\\databox_subdef::DEVICE_SCREEN'), ['video/ogg', 'video/mp4', 'video/webm']) %}
|
||||
{% if previewHtml5|length < 3 %}
|
||||
{% set previewHtml5 = null %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% set preview_obj = record.get_preview() %}
|
||||
{% else %}
|
||||
{% set preview_obj = record.get_thumbnail() %}
|
||||
{% endif %}
|
||||
|
||||
{{thumbnail.format(preview_obj, preview_obj.get_width(), preview_obj.get_height(), '', session, wrap)}}
|
||||
{% set width = preview_obj.get_width() %}
|
||||
{% set height = preview_obj.get_height() %}
|
||||
|
||||
{% if previewHtml5 %}
|
||||
{{ thumbnailHTML5.format(previewHtml5, preview_obj.get_width(), preview_obj.get_height(), '', session, wrap) }}
|
||||
{% else %}
|
||||
{{ thumbnail.format(preview_obj, preview_obj.get_width(), preview_obj.get_height(), '', session, wrap) }}
|
||||
{% endif %}
|
||||
|
@@ -1,14 +1,14 @@
|
||||
{% trans 'Record_id' %} : {{record.get_record_id() }}<br/>
|
||||
{% trans 'Record_id' %} : {{ record.get_record_id() }}<br/>
|
||||
|
||||
{% if record.is_grouping() == false %}
|
||||
|
||||
{% set document = record.get_subdef('document') %}
|
||||
|
||||
{% trans 'Nom Original' %} :
|
||||
{{record.get_original_name() }}
|
||||
{{ record.get_original_name() }}
|
||||
<br/>
|
||||
|
||||
{{record.get_mime() }}
|
||||
{{ record.get_mime() }}
|
||||
|
||||
{% if document and document.get_size() %}
|
||||
- {{document.get_size()|formatoctet}}
|
||||
@@ -32,27 +32,27 @@
|
||||
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_CAMERAMODEL')) is not empty %}
|
||||
{% trans 'Camera Model' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_CAMERAMODEL')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_CAMERAMODEL')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_COLORSPACE')) is not empty %}
|
||||
{% trans 'Color space' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_COLORSPACE')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_COLORSPACE')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_CHANNELS')) is not empty %}
|
||||
{% trans 'Channels' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_CHANNELS')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_CHANNELS')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_COLORDEPTH')) is not empty %}
|
||||
{% trans 'Color Depth' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_COLORDEPTH')) }} bits
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_COLORDEPTH')) }} bits
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_ISO')) is not empty %}
|
||||
{% trans 'ISO sensibility' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_ISO')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_ISO')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_FLASHFIRED')) is not null %}
|
||||
@@ -66,53 +66,53 @@
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_SHUTTERSPEED')) is not empty %}
|
||||
{% trans 'Shutter speed' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_SHUTTERSPEED')) }} s.
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_SHUTTERSPEED')) }} s.
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_APERTURE')) is not empty %}
|
||||
{% trans 'Aperture' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_APERTURE')) | round(2) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_APERTURE')) | round(2) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_FOCALLENGTH')) is not empty %}
|
||||
{% trans 'Focal length' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_FOCALLENGTH')) }} mm
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_FOCALLENGTH')) }} mm
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_HYPERFOCALDISTANCE')) is not empty %}
|
||||
{% trans 'Hyperfocal distance' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_HYPERFOCALDISTANCE')) | round(2) }} mm
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_HYPERFOCALDISTANCE')) | round(2) }} mm
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_LIGHTVALUE')) is not empty %}
|
||||
{% trans 'Light Value' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_LIGHTVALUE')) | round(2) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_LIGHTVALUE')) | round(2) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
|
||||
{% if record.get_formated_duration() %}
|
||||
{% trans 'Duree' %} :
|
||||
{{record.get_formated_duration() | round(2) }}
|
||||
{{ record.get_formated_duration() }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_FRAMERATE')) is not empty %}
|
||||
{% trans 'Images par secondes' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_FRAMERATE')) | round(2) }} ips
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_FRAMERATE')) | round(2) }} ips
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOCODEC')) %}
|
||||
{% trans 'Codec Audio' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOCODEC')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOCODEC')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_VIDEOCODEC')) %}
|
||||
{% trans 'Codec Video' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_VIDEOCODEC')) }}
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_VIDEOCODEC')) }}
|
||||
<br />
|
||||
{% endif %}
|
||||
{% if record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOSAMPLERATE')) %}
|
||||
{% trans 'Frequence d\'echantillonage' %} :
|
||||
{{record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOSAMPLERATE')) | round(2) }} kHz
|
||||
{{ record.get_technical_infos(constant('media_subdef::TC_DATA_AUDIOSAMPLERATE')) | round(2) }} kHz
|
||||
<br />
|
||||
{% endif %}
|
||||
|
||||
|
@@ -121,10 +121,13 @@
|
||||
</div>
|
||||
|
||||
<div class="PNB frame_video">
|
||||
|
||||
|
||||
{% set previewHtml5 = record.getSubdfefByDeviceAndMime(constant('\\databox_subdef::DEVICE_SCREEN'), ['video/ogg', 'video/mp4', 'video/webm']) %}
|
||||
<video id="thumb_video" controls="" preload="auto">
|
||||
<source id="mp4" type="video/mp4" src="/web//db_install/ThemeFromShaftb-boyRemix_512kb.mp4" />
|
||||
<source id="ogv" type="video/ogg" src="/web//db_install/ThemeFromShaftb-boyRemix.ogv" />
|
||||
<p>No HTML5.</p>
|
||||
{% for subdef in previewHtml5 %}
|
||||
<source type="{{ subdef.get_mime() }}" src="{{ subdef.get_url() }}" />
|
||||
{% endfor %}
|
||||
</video>
|
||||
</div>
|
||||
|
||||
|
@@ -8,6 +8,7 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class ApplicationOverviewTest extends PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
{
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
@@ -37,6 +38,45 @@ class ApplicationOverviewTest extends PhraseanetWebTestCaseAuthenticatedAbstract
|
||||
$this->assertEquals(404, $response->getStatusCode());
|
||||
}
|
||||
|
||||
function testEtag()
|
||||
{
|
||||
$tmp = tempnam(sys_get_temp_dir(), 'testEtag');
|
||||
copy(__DIR__ . '/../../../testfiles/cestlafete.jpg', $tmp);
|
||||
|
||||
$media = \MediaVorus\MediaVorus::guess(new \SplFileInfo($tmp));
|
||||
|
||||
$file = new Alchemy\Phrasea\Border\File($media, self::$collection);
|
||||
$record = record_adapter::createFromFile($file);
|
||||
|
||||
$crawler = $this->client->request('GET', '/datafiles/' . $record->get_sbas_id() . '/' . $record->get_record_id() . '/preview/');
|
||||
$response = $this->client->getResponse();
|
||||
|
||||
/* @var $response \Symfony\Component\HttpFoundation\Response */
|
||||
$this->assertTrue($response->isOk());
|
||||
$this->assertNull($response->getEtag());
|
||||
$this->assertNull($response->getLastModified());
|
||||
$this->assertNull($response->getMaxAge());
|
||||
$this->assertNull($response->getTtl());
|
||||
$this->assertEquals(0, $response->getAge());
|
||||
$this->assertNull($response->getExpires());
|
||||
|
||||
$record->generate_subdefs($record->get_databox(), self::$core['monolog']);
|
||||
|
||||
$crawler = $this->client->request('GET', '/datafiles/' . $record->get_sbas_id() . '/' . $record->get_record_id() . '/preview/');
|
||||
$response = $this->client->getResponse();
|
||||
|
||||
/* @var $response \Symfony\Component\HttpFoundation\Response */
|
||||
$this->assertTrue($response->isOk());
|
||||
$this->assertNotNull($response->getEtag());
|
||||
$this->assertInstanceOf('DateTime', $response->getLastModified());
|
||||
$this->assertNull($response->getMaxAge());
|
||||
$this->assertNull($response->getTtl());
|
||||
$this->assertGreaterThanOrEqual(0, $response->getAge());
|
||||
$this->assertNull($response->getExpires());
|
||||
|
||||
unlink($tmp);
|
||||
}
|
||||
|
||||
function testDatafilesRouteNotAuthenticated()
|
||||
{
|
||||
$appbox = appbox::get_instance(\bootstrap::getCore());
|
||||
|
@@ -29,7 +29,7 @@ if ( ! is_executable($composer)) {
|
||||
}
|
||||
|
||||
system($composer . ' self-update');
|
||||
system($composer . ' update');
|
||||
system($composer . ' install');
|
||||
|
||||
system('git submodule init');
|
||||
system('git submodule update');
|
||||
|
@@ -33,7 +33,7 @@ if ( ! file_exists($composer)) {
|
||||
}
|
||||
|
||||
system($phpDir . 'php ' . $composer . ' self-update');
|
||||
system($phpDir . 'php ' . $composer . ' update');
|
||||
system($phpDir . 'php ' . $composer . ' install');
|
||||
|
||||
system($gitDir . 'git submodule init');
|
||||
system($gitDir . 'git submodule update');
|
||||
|
@@ -228,8 +228,9 @@
|
||||
var width = 'auto';
|
||||
var height = 'auto';
|
||||
var ratio = 1;
|
||||
var resizeImgTips = false;
|
||||
var resizeImgTips = resizeVideoTips = false;
|
||||
var $imgTips = $('#' + settings($.tooltip.current).id + ' .imgTips');
|
||||
var $videoTips = $('#' + settings($.tooltip.current).id + ' .videoTips');
|
||||
|
||||
if ($imgTips[0] && $('#' + settings($.tooltip.current).id + ' .noToolTipResize').length === 0) {
|
||||
resizeImgTips = true;
|
||||
@@ -239,6 +240,14 @@
|
||||
$imgTips.css({top:'0px',left:'0px'});
|
||||
}
|
||||
|
||||
if ($videoTips[0] && $('#' + settings($.tooltip.current).id + ' .noToolTipResize').length === 0) {
|
||||
resizeVideoTips = true;
|
||||
width = parseInt($videoTips.attr('width'));
|
||||
height = parseInt($videoTips.attr('height'));
|
||||
ratio = width/height;
|
||||
$videoTips.css({top:'0px',left:'0px'});
|
||||
}
|
||||
|
||||
var v = viewport(),
|
||||
h = helper.parent;
|
||||
helper.parent.css({
|
||||
@@ -415,8 +424,8 @@
|
||||
height += 20;
|
||||
|
||||
helper.parent.css({
|
||||
width: width,
|
||||
height: height,
|
||||
width: Math.round(width),
|
||||
height: Math.round(height),
|
||||
left: left,
|
||||
top: top
|
||||
});
|
||||
@@ -424,10 +433,17 @@
|
||||
if(resizeImgTips)
|
||||
{
|
||||
$imgTips.css({
|
||||
maxWidth: width,
|
||||
maxHeight: height,
|
||||
width: '100%',
|
||||
height: '100%'
|
||||
maxWidth: Math.round(width - 50),
|
||||
maxHeight: Math.round(height-70)
|
||||
});
|
||||
}
|
||||
|
||||
if(resizeVideoTips)
|
||||
{
|
||||
console.log($videoTips, width, height, Math.round(width - 50), Math.round(height-70));
|
||||
$videoTips.css({
|
||||
width: Math.round(width - 50),
|
||||
height: Math.round(height-70)
|
||||
});
|
||||
}
|
||||
|
||||
|
499
www/include/jslibs/video-js/video-js.css
Normal file
499
www/include/jslibs/video-js/video-js.css
Normal file
@@ -0,0 +1,499 @@
|
||||
/*
|
||||
VideoJS Default Styles (http://videojs.com)
|
||||
Version 3.2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
REQUIRED STYLES (be careful overriding)
|
||||
================================================================================ */
|
||||
/* When loading the player, the video tag is replaced with a DIV,
|
||||
that will hold the video tag or object tag for other playback methods.
|
||||
The div contains the video playback element (Flash or HTML5) and controls, and sets the width and height of the video.
|
||||
|
||||
** If you want to add some kind of border/padding (e.g. a frame), or special positioning, use another containing element.
|
||||
Otherwise you risk messing up control positioning and full window mode. **
|
||||
*/
|
||||
.video-js {
|
||||
background-color: #000; position: relative; padding: 0;
|
||||
|
||||
/* Start with 10px for base font size so other dimensions can be em based and easily calculable. */
|
||||
font-size: 10px;
|
||||
|
||||
/* Allow poster to be vertially aligned. */
|
||||
vertical-align: middle;
|
||||
/* display: table-cell; */ /*This works in Safari but not Firefox.*/
|
||||
}
|
||||
|
||||
/* Playback technology elements expand to the width/height of the containing div. <video> or <object> */
|
||||
.video-js .vjs-tech { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
/* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when checking fullScreenEnabled. */
|
||||
.video-js:-moz-full-screen { position: absolute; }
|
||||
|
||||
/* Fullscreen Styles */
|
||||
body.vjs-full-window {
|
||||
padding: 0; margin: 0;
|
||||
height: 100%; overflow-y: auto; /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */
|
||||
}
|
||||
.video-js.vjs-fullscreen {
|
||||
position: fixed; overflow: hidden; z-index: 1000; left: 0; top: 0; bottom: 0; right: 0; width: 100% !important; height: 100% !important;
|
||||
_position: absolute; /* IE6 Full-window (underscore hack) */
|
||||
}
|
||||
.video-js:-webkit-full-screen {
|
||||
width: 100% !important; height: 100% !important;
|
||||
}
|
||||
|
||||
/* Poster Styles */
|
||||
.vjs-poster {
|
||||
margin: 0 auto; padding: 0; cursor: pointer;
|
||||
|
||||
/* Scale with the size of the player div. Works when poster is vertically shorter, but stretches when it's less wide. */
|
||||
position: relative; width: 100%; max-height: 100%;
|
||||
}
|
||||
|
||||
/* Text Track Styles */
|
||||
/* Overall track holder for both captions and subtitles */
|
||||
.video-js .vjs-text-track-display { text-align: center; position: absolute; bottom: 4em; left: 1em; right: 1em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
|
||||
/* Individual tracks */
|
||||
.video-js .vjs-text-track {
|
||||
display: none; color: #fff; font-size: 1.4em; text-align: center; margin-bottom: 0.1em;
|
||||
/* Transparent black background, or fallback to all black (IE6) */
|
||||
background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.50);
|
||||
}
|
||||
.video-js .vjs-subtitles { color: #fff; }
|
||||
.video-js .vjs-captions { color: #fc6; }
|
||||
.vjs-tt-cue { display: block; }
|
||||
|
||||
/* Fading sytles, used to fade control bar. */
|
||||
.vjs-fade-in {
|
||||
visibility: visible !important; /* Needed to make sure things hide in older browsers too. */
|
||||
opacity: 1 !important;
|
||||
|
||||
-webkit-transition: visibility 0s linear 0s, opacity 0.3s linear;
|
||||
-moz-transition: visibility 0s linear 0s, opacity 0.3s linear;
|
||||
-ms-transition: visibility 0s linear 0s, opacity 0.3s linear;
|
||||
-o-transition: visibility 0s linear 0s, opacity 0.3s linear;
|
||||
transition: visibility 0s linear 0s, opacity 0.3s linear;
|
||||
}
|
||||
.vjs-fade-out {
|
||||
visibility: hidden !important;
|
||||
opacity: 0 !important;
|
||||
|
||||
-webkit-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
|
||||
-moz-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
|
||||
-ms-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
|
||||
-o-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
|
||||
transition: visibility 0s linear 1.5s,opacity 1.5s linear;
|
||||
}
|
||||
|
||||
/* DEFAULT SKIN (override in another file to create new skins)
|
||||
================================================================================
|
||||
Instead of editing this file, I recommend creating your own skin CSS file to be included after this file,
|
||||
so you can upgrade to newer versions easier. You can remove all these styles by removing the 'vjs-default-skin' class from the tag. */
|
||||
|
||||
/* The default control bar. Created by bar.js */
|
||||
.vjs-default-skin .vjs-controls {
|
||||
position: absolute;
|
||||
bottom: 0; /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
|
||||
left: 0; right: 0; /* 100% width of div */
|
||||
margin: 0; padding: 0; /* Controls are absolutely position, so no padding necessary */
|
||||
height: 2.6em; /* Including any margin you want above or below control items */
|
||||
color: #fff; border-top: 1px solid #404040;
|
||||
|
||||
/* CSS Gradient */
|
||||
/* Can use the Ultimate CSS Gradient Generator: http://www.colorzilla.com/gradient-editor/ */
|
||||
background: #242424; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #242424 50%, #1f1f1f 50%, #171717 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(50%,#242424), color-stop(50%,#1f1f1f), color-stop(100%,#171717)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Opera11.10+ */
|
||||
background: -ms-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* IE10+ */
|
||||
/* Filter was causing a lot of weird issues in IE. Elements would stop showing up, or other styles would break. */
|
||||
/*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#242424', endColorstr='#171717',GradientType=0 );*/ /* IE6-9 */
|
||||
background: linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* W3C */
|
||||
|
||||
/* Start hidden and with 0 opacity. Opacity is used to fade in modern browsers. */
|
||||
/* Can't use display block to hide initially because widths of slider handles aren't calculated and avaialbe for positioning correctly. */
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* General styles for individual controls. */
|
||||
.vjs-default-skin .vjs-control {
|
||||
position: relative; float: left;
|
||||
text-align: center; margin: 0; padding: 0;
|
||||
height: 2.6em; width: 2.6em;
|
||||
}
|
||||
|
||||
.vjs-default-skin .vjs-control:focus {
|
||||
outline: 0;
|
||||
/* background-color: #555;*/
|
||||
}
|
||||
|
||||
/* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
|
||||
.vjs-default-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
|
||||
|
||||
|
||||
/* Play/Pause
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin .vjs-play-control { width: 5em; cursor: pointer !important; }
|
||||
/* Play Icon */
|
||||
.vjs-default-skin.vjs-paused .vjs-play-control div { width: 15px; height: 17px; background: url('video-js.png'); margin: 0.5em auto 0; }
|
||||
.vjs-default-skin.vjs-playing .vjs-play-control div { width: 15px; height: 17px; background: url('video-js.png') -25px 0; margin: 0.5em auto 0; }
|
||||
|
||||
/* Rewind
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
|
||||
.vjs-default-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('video-js.png'); margin: 0.5em auto 0; }
|
||||
|
||||
/* Volume/Mute
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin .vjs-mute-control { width: 3.8em; cursor: pointer !important; float: right; }
|
||||
.vjs-default-skin .vjs-mute-control div { width: 22px; height: 16px; background: url('video-js.png') -75px -25px; margin: 0.5em auto 0; }
|
||||
.vjs-default-skin .vjs-mute-control.vjs-vol-0 div { background: url('video-js.png') 0 -25px; }
|
||||
.vjs-default-skin .vjs-mute-control.vjs-vol-1 div { background: url('video-js.png') -25px -25px; }
|
||||
.vjs-default-skin .vjs-mute-control.vjs-vol-2 div { background: url('video-js.png') -50px -25px; }
|
||||
|
||||
|
||||
.vjs-default-skin .vjs-volume-control { width: 5em; float: right; }
|
||||
.vjs-default-skin .vjs-volume-bar {
|
||||
position: relative; width: 5em; height: 0.6em; margin: 1em auto 0; cursor: pointer !important;
|
||||
|
||||
-moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
|
||||
|
||||
background: #666;
|
||||
background: -moz-linear-gradient(top, #333, #666);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#333), to(#666));
|
||||
background: -webkit-linear-gradient(top, #333, #666);
|
||||
background: -o-linear-gradient(top, #333, #666);
|
||||
background: -ms-linear-gradient(top, #333, #666);
|
||||
background: linear-gradient(top, #333, #666);
|
||||
}
|
||||
.vjs-default-skin .vjs-volume-level {
|
||||
position: absolute; top: 0; left: 0; height: 0.6em;
|
||||
|
||||
-moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
|
||||
|
||||
background: #fff;
|
||||
background: -moz-linear-gradient(top, #fff, #ccc);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ccc));
|
||||
background: -webkit-linear-gradient(top, #fff, #ccc);
|
||||
background: -o-linear-gradient(top, #fff, #ccc);
|
||||
background: -ms-linear-gradient(top, #fff, #ccc);
|
||||
background: linear-gradient(top, #fff, #ccc);
|
||||
}
|
||||
.vjs-default-skin .vjs-volume-handle {
|
||||
position: absolute; top: -0.2em; width: 0.8em; height: 0.8em; background: #ccc; left: 0;
|
||||
border: 1px solid #fff;
|
||||
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
|
||||
}
|
||||
|
||||
/* Progress
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin div.vjs-progress-control {
|
||||
position: absolute;
|
||||
left: 4.8em; right: 4.8em; /* Leave room for time displays. */
|
||||
height: 1.0em; width: auto;
|
||||
top: -1.3em; /* Set above the rest of the controls. And leave room for 2px of borders (progress bottom and controls top). */
|
||||
border-bottom: 1px solid #1F1F1F;
|
||||
border-top: 1px solid #222;
|
||||
|
||||
/* CSS Gradient */
|
||||
background: #333;
|
||||
background: -moz-linear-gradient(top, #222, #333);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
|
||||
background: -webkit-linear-gradient(top, #222, #333);
|
||||
background: -o-linear-gradient(top, #333, #222);
|
||||
background: -ms-linear-gradient(top, #333, #222);
|
||||
background: linear-gradient(top, #333, #222);
|
||||
|
||||
|
||||
/* 1px top shadow */
|
||||
/* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
|
||||
}
|
||||
|
||||
/* Box containing play and load progresses. Also acts as seek scrubber. */
|
||||
.vjs-default-skin .vjs-progress-holder {
|
||||
position: relative; cursor: pointer !important; /*overflow: hidden;*/
|
||||
padding: 0; margin: 0; /* Placement within the progress control item */
|
||||
height: 1.0em;
|
||||
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
|
||||
|
||||
/* CSS Gradient */
|
||||
background: #111;
|
||||
background: -moz-linear-gradient(top, #111, #262626);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#111), to(#262626));
|
||||
background: -webkit-linear-gradient(top, #111, #262626);
|
||||
background: -o-linear-gradient(top, #111, #262626);
|
||||
background: -ms-linear-gradient(top, #111, #262626);
|
||||
background: linear-gradient(top, #111, #262626);
|
||||
}
|
||||
.vjs-default-skin .vjs-progress-holder .vjs-play-progress,
|
||||
.vjs-default-skin .vjs-progress-holder .vjs-load-progress { /* Progress Bars */
|
||||
position: absolute; display: block; height: 1.0em; margin: 0; padding: 0;
|
||||
left: 0; top: 0; /*Needed for IE6*/
|
||||
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
|
||||
|
||||
/*width: 0;*/
|
||||
}
|
||||
|
||||
.vjs-default-skin .vjs-play-progress {
|
||||
/* CSS Gradient. */
|
||||
background: #fff; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #fff 0%, #d6d6d6 50%, #fff 100%);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#fff), color-stop(50%,#d6d6d6), color-stop(100%,#fff));
|
||||
background: -webkit-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
|
||||
background: -o-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
|
||||
background: -ms-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
|
||||
background: linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
|
||||
|
||||
background: #efefef;
|
||||
background: -moz-linear-gradient(top, #efefef 0%, #f5f5f5 50%, #dbdbdb 50%, #f1f1f1 100%);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#efefef), color-stop(50%,#f5f5f5), color-stop(50%,#dbdbdb), color-stop(100%,#f1f1f1));
|
||||
background: -webkit-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
|
||||
background: -o-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
|
||||
background: -ms-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#f1f1f1',GradientType=0 );
|
||||
background: linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
|
||||
}
|
||||
.vjs-default-skin .vjs-load-progress {
|
||||
opacity: 0.8;
|
||||
|
||||
/* CSS Gradient */
|
||||
background: #666;
|
||||
background: -moz-linear-gradient(top, #666, #333);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#666), to(#333));
|
||||
background: -webkit-linear-gradient(top, #666, #333);
|
||||
background: -o-linear-gradient(top, #666, #333);
|
||||
background: -ms-linear-gradient(top, #666, #333);
|
||||
background: linear-gradient(top, #666, #333);
|
||||
}
|
||||
|
||||
.vjs-default-skin div.vjs-seek-handle {
|
||||
position: absolute;
|
||||
width: 16px; height: 16px; /* Match img pixles */
|
||||
margin-top: -0.3em;
|
||||
left: 0; top: 0; /*Needed for IE6*/
|
||||
|
||||
background: url('video-js.png') 0 -50px;
|
||||
/* CSS Curved Corners. Needed to make shadows curved. */
|
||||
-moz-border-radius: 0.8em; -webkit-border-radius: 0.8em; border-radius: 0.8em;
|
||||
/* CSS Shadows */
|
||||
-webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
|
||||
}
|
||||
/* Time Display
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin .vjs-time-controls {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
height: 1.0em; width: 4.8em;
|
||||
top: -1.3em;
|
||||
border-bottom: 1px solid #1F1F1F;
|
||||
border-top: 1px solid #222;
|
||||
background-color: #333;
|
||||
|
||||
font-size: 1em; line-height: 1.0em; font-weight: normal; font-family: Helvetica, Arial, sans-serif;
|
||||
|
||||
background: #333;
|
||||
background: -moz-linear-gradient(top, #222, #333);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
|
||||
background: -webkit-linear-gradient(top, #222, #333);
|
||||
background: -o-linear-gradient(top, #333, #222);
|
||||
background: -ms-linear-gradient(top, #333, #222);
|
||||
background: linear-gradient(top, #333, #222);
|
||||
|
||||
/* 1px top shadow */
|
||||
/* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
|
||||
}
|
||||
|
||||
.vjs-default-skin .vjs-current-time { left: 0; }
|
||||
|
||||
.vjs-default-skin .vjs-duration { right: 0; display: none; }
|
||||
.vjs-default-skin .vjs-remaining-time { right: 0; }
|
||||
|
||||
.vjs-time-divider { display:none; }
|
||||
|
||||
.vjs-default-skin .vjs-time-control { font-size: 1em; line-height: 1; font-weight: normal; font-family: Helvetica, Arial, sans-serif; }
|
||||
.vjs-default-skin .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
|
||||
|
||||
/* Fullscreen
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-secondary-controls { float: right; }
|
||||
|
||||
.vjs-default-skin .vjs-fullscreen-control { width: 3.8em; cursor: pointer !important; float: right; }
|
||||
.vjs-default-skin .vjs-fullscreen-control div { width: 16px; height: 16px; background: url('video-js.png') -50px 0; margin: 0.5em auto 0; }
|
||||
|
||||
.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control div { background: url('video-js.png') -75px 0; }
|
||||
|
||||
|
||||
/* Big Play Button (at start)
|
||||
---------------------------------------------------------*/
|
||||
.vjs-default-skin .vjs-big-play-button {
|
||||
display: block; /* Start hidden */ z-index: 2;
|
||||
position: absolute; top: 50%; left: 50%; width: 8.0em; height: 8.0em; margin: -42px 0 0 -42px; text-align: center; vertical-align: center; cursor: pointer !important;
|
||||
border: 0.2em solid #fff; opacity: 0.95;
|
||||
-webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px;
|
||||
|
||||
background: #454545;
|
||||
background: -moz-linear-gradient(top, #454545 0%, #232323 50%, #161616 50%, #3f3f3f 100%);
|
||||
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#454545), color-stop(50%,#232323), color-stop(50%,#161616), color-stop(100%,#3f3f3f));
|
||||
background: -webkit-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
|
||||
background: -o-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
|
||||
background: -ms-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#454545', endColorstr='#3f3f3f',GradientType=0 );
|
||||
background: linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
|
||||
|
||||
/* CSS Shadows */
|
||||
-webkit-box-shadow: 4px 4px 8px #000; -moz-box-shadow: 4px 4px 8px #000; box-shadow: 4px 4px 8px #000;
|
||||
}
|
||||
|
||||
.vjs-default-skin div.vjs-big-play-button:hover {
|
||||
-webkit-box-shadow: 0 0 80px #fff; -moz-box-shadow: 0 0 80px #fff; box-shadow: 0 0 80px #fff;
|
||||
}
|
||||
|
||||
.vjs-default-skin div.vjs-big-play-button span {
|
||||
position: absolute; top: 50%; left: 50%;
|
||||
display: block; width: 35px; height: 42px;
|
||||
margin: -20px 0 0 -15px; /* Using negative margin to center image. */
|
||||
background: url('video-js.png') -100px 0;
|
||||
}
|
||||
|
||||
/* Loading Spinner
|
||||
---------------------------------------------------------*/
|
||||
/* CSS Spinners by Kilian Valkhof - http://kilianvalkhof.com/2010/css-xhtml/css3-loading-spinners-without-images/ */
|
||||
.vjs-loading-spinner {
|
||||
display: none;
|
||||
position: absolute; top: 50%; left: 50%; width: 55px; height: 55px;
|
||||
margin: -28px 0 0 -28px;
|
||||
-webkit-animation-name: rotatethis;
|
||||
-webkit-animation-duration:1s;
|
||||
-webkit-animation-iteration-count:infinite;
|
||||
-webkit-animation-timing-function:linear;
|
||||
-moz-animation-name: rotatethis;
|
||||
-moz-animation-duration:1s;
|
||||
-moz-animation-iteration-count:infinite;
|
||||
-moz-animation-timing-function:linear;
|
||||
}
|
||||
|
||||
@-webkit-keyframes rotatethis {
|
||||
0% {-webkit-transform:scale(0.6) rotate(0deg); }
|
||||
12.5% {-webkit-transform:scale(0.6) rotate(0deg); }
|
||||
12.51% {-webkit-transform:scale(0.6) rotate(45deg); }
|
||||
25% {-webkit-transform:scale(0.6) rotate(45deg); }
|
||||
25.01% {-webkit-transform:scale(0.6) rotate(90deg);}
|
||||
37.5% {-webkit-transform:scale(0.6) rotate(90deg);}
|
||||
37.51% {-webkit-transform:scale(0.6) rotate(135deg);}
|
||||
50% {-webkit-transform:scale(0.6) rotate(135deg);}
|
||||
50.01% {-webkit-transform:scale(0.6) rotate(180deg);}
|
||||
62.5% {-webkit-transform:scale(0.6) rotate(180deg);}
|
||||
62.51% {-webkit-transform:scale(0.6) rotate(225deg);}
|
||||
75% {-webkit-transform:scale(0.6) rotate(225deg);}
|
||||
75.01% {-webkit-transform:scale(0.6) rotate(270deg);}
|
||||
87.5% {-webkit-transform:scale(0.6) rotate(270deg);}
|
||||
87.51% {-webkit-transform:scale(0.6) rotate(315deg);}
|
||||
100% {-webkit-transform:scale(0.6) rotate(315deg);}
|
||||
}
|
||||
|
||||
@-moz-keyframes rotatethis {
|
||||
0% {-moz-transform:scale(0.6) rotate(0deg);}
|
||||
12.5% {-moz-transform:scale(0.6) rotate(0deg);}
|
||||
12.51% {-moz-transform:scale(0.6) rotate(45deg);}
|
||||
25% {-moz-transform:scale(0.6) rotate(45deg);}
|
||||
25.01% {-moz-transform:scale(0.6) rotate(90deg);}
|
||||
37.5% {-moz-transform:scale(0.6) rotate(90deg);}
|
||||
37.51% {-moz-transform:scale(0.6) rotate(135deg);}
|
||||
50% {-moz-transform:scale(0.6) rotate(135deg);}
|
||||
50.01% {-moz-transform:scale(0.6) rotate(180deg);}
|
||||
62.5% {-moz-transform:scale(0.6) rotate(180deg);}
|
||||
62.51% {-moz-transform:scale(0.6) rotate(225deg);}
|
||||
75% {-moz-transform:scale(0.6) rotate(225deg);}
|
||||
75.01% {-moz-transform:scale(0.6) rotate(270deg);}
|
||||
87.5% {-moz-transform:scale(0.6) rotate(270deg);}
|
||||
87.51% {-moz-transform:scale(0.6) rotate(315deg);}
|
||||
100% {-moz-transform:scale(0.6) rotate(315deg);}
|
||||
}
|
||||
/* Each circle */
|
||||
div.vjs-loading-spinner .ball1 { opacity: 0.12; position:absolute; left: 20px; top: 0px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball2 { opacity: 0.25; position:absolute; left: 34px; top: 6px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball3 { opacity: 0.37; position:absolute; left: 40px; top: 20px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball4 { opacity: 0.50; position:absolute; left: 34px; top: 34px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 15px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball5 { opacity: 0.62; position:absolute; left: 20px; top: 40px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball6 { opacity: 0.75; position:absolute; left: 6px; top: 34px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball7 { opacity: 0.87; position:absolute; left: 0px; top: 20px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
div.vjs-loading-spinner .ball8 { opacity: 1.00; position:absolute; left: 6px; top: 6px; width: 13px; height: 13px; background: #fff;
|
||||
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
|
||||
|
||||
/* Menu Buttons (Captions/Subtitles/etc.)
|
||||
-------------------------------------------------------------------------------- */
|
||||
.vjs-default-skin .vjs-menu-button {
|
||||
float: right; margin: 0.2em 0.5em 0 0; padding: 0; width: 3em; height: 2em; cursor: pointer !important;
|
||||
|
||||
border: 1px solid #111; -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
|
||||
|
||||
background: #4d4d4d;
|
||||
background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
|
||||
background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
}
|
||||
/* Button Icon */
|
||||
.vjs-default-skin .vjs-menu-button div { background: url('video-js.png') 0px -75px no-repeat; width: 16px; height: 16px; margin: 0.2em auto 0; padding: 0; }
|
||||
|
||||
/* Button Pop-up Menu */
|
||||
.vjs-default-skin .vjs-menu-button ul {
|
||||
display: none; /* Start hidden. Hover will show. */
|
||||
opacity: 0.8;
|
||||
padding: 0; margin: 0;
|
||||
position: absolute; width: 10em; bottom: 2em; max-height: 15em;
|
||||
left: -3.5em; /* Width of menu - width of button / 2 */
|
||||
background-color: #111;
|
||||
border: 2px solid #333;
|
||||
-moz-border-radius: 0.7em; -webkit-border-radius: 1em; border-radius: .5em;
|
||||
-webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.vjs-default-skin .vjs-menu-button:focus ul,
|
||||
.vjs-default-skin .vjs-menu-button:hover ul { display: block; list-style: none; }
|
||||
.vjs-default-skin .vjs-menu-button ul li { list-style: none; margin: 0; padding: 0.3em 0 0.3em 20px; line-height: 1.4em; font-size: 1.2em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-align: left; }
|
||||
.vjs-default-skin .vjs-menu-button ul li.vjs-selected { text-decoration: underline; background: url('video-js.png') -125px -50px no-repeat; }
|
||||
.vjs-default-skin .vjs-menu-button ul li:focus,
|
||||
.vjs-default-skin .vjs-menu-button ul li:hover,
|
||||
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,
|
||||
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover { background-color: #ccc; color: #111; outline: 0; }
|
||||
.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title {
|
||||
text-align: center; text-transform: uppercase; font-size: 1em; line-height: 2em; padding: 0; margin: 0 0 0.3em 0;
|
||||
|
||||
color: #fff; font-weight: bold;
|
||||
|
||||
cursor: default;
|
||||
|
||||
background: #4d4d4d;
|
||||
background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
|
||||
background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
|
||||
}
|
||||
|
||||
/* Subtitles Button */
|
||||
.vjs-default-skin .vjs-captions-button div { background-position: -25px -75px; }
|
||||
.vjs-default-skin .vjs-chapters-button div { background-position: -100px -75px; }
|
||||
.vjs-default-skin .vjs-chapters-button ul { width: 20em; left: -8.5em; /* Width of menu - width of button / 2 */ }
|
1
www/include/jslibs/video-js/video-js.min.css
vendored
Normal file
1
www/include/jslibs/video-js/video-js.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
www/include/jslibs/video-js/video-js.png
Normal file
BIN
www/include/jslibs/video-js/video-js.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.0 KiB |
BIN
www/include/jslibs/video-js/video-js.swf
Normal file
BIN
www/include/jslibs/video-js/video-js.swf
Normal file
Binary file not shown.
4569
www/include/jslibs/video-js/video.js
Normal file
4569
www/include/jslibs/video-js/video.js
Normal file
File diff suppressed because it is too large
Load Diff
21
www/include/jslibs/video-js/video.min.js
vendored
Normal file
21
www/include/jslibs/video-js/video.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -22,6 +22,7 @@ $groups = array(
|
||||
, '//include/jquery.tooltip.js'
|
||||
, '//include/jquery.p4.preview.js'
|
||||
, '//include/jquery.image_enhancer.js'
|
||||
, '//include/jslibs/video-js/video.js'
|
||||
, '//include/jslibs/jquery.contextmenu_scroll.js'),
|
||||
'admin' => array(
|
||||
'//include/jslibs/jquery.cookie.js'
|
||||
@@ -76,6 +77,7 @@ $groups = array(
|
||||
, '//include/vendor/jquery-file-upload/js/vendor/jquery.ui.widget.js'
|
||||
, '//include/vendor/jquery-file-upload/js/jquery.iframe-transport.js'
|
||||
, '//include/vendor/jquery-file-upload/js/jquery.fileupload.js'
|
||||
, '//include/jslibs/video-js/video.js'
|
||||
, '//login/geonames.js'
|
||||
, '//include/jslibs/jquery.form.2.49.js'
|
||||
, '//include/jslibs/jquery.vertical.buttonset.js'
|
||||
@@ -135,6 +137,7 @@ $groups = array(
|
||||
, '//include/jslibs/jquery.contextmenu_scroll.js'
|
||||
, '//include/jquery.common.js'
|
||||
, '//skins/lightbox/jquery.lightbox.js'
|
||||
, '//include/jslibs/video-js/video.js'
|
||||
, '//include/jslibs/flowplayer/flowplayer-3.2.6.min.js'
|
||||
),
|
||||
'lightboxie6' => array(
|
||||
@@ -147,6 +150,7 @@ $groups = array(
|
||||
, '//include/jslibs/jquery.contextmenu_scroll.js'
|
||||
, '//include/jquery.common.js'
|
||||
, '//skins/lightbox/jquery.lightbox.ie6.js'
|
||||
, '//include/jslibs/video-js/video.js'
|
||||
, '//include/jslibs/flowplayer/flowplayer-3.2.6.min.js'
|
||||
)
|
||||
);
|
||||
|
Reference in New Issue
Block a user