if ($linkData['type'] == Link::SHOWLINK && $linkData['target'] !== 'hide') {
$ids = explode(',', $linkData['to']);
- $close = ($linkData['video_service'] && $linkData['video_service'] !== 'none');
+ $close = ($linkData['close_button'] && $linkData['close_button'] !== 'none');
foreach ($ids as $id) {
$id = trim($id);
if ($id === 'tabs') {
use App\Models\FluidbookPublication;
use App\Models\User;
+use App\SubForms\Link\Base;
use Cubist\Util\Files\Files;
use Cubist\Util\Gzip;
use Cubist\Util\Str;
self::_correctImageSpecialLinks($links);
self::_fixWebVideoServices($links);
self::_fixMultimedia($links);
+ self::_fixCloseButton($links);
}
protected static function _fixTooltips(&$links)
if (isset($link['video_width'], $link['video_height']) && $link['video_width'] == 320 & $link['video_height'] == 240) {
$links[$k]['video_width'] = $links[$k]['video_height'] = '';
}
- if (isset($link['alternative']) && $link['alternative'] && $link['type'] == 6) {
+ if (isset($link['alternative']) && $link['alternative'] && $link['type'] == Link::MULTIMEDIA) {
$links[$k]['to'] = $link['alternative'];
unset($links[$k]['alternative']);
}
}
}
+ protected static function _fixCloseButton(&$links)
+ {
+ foreach ($links as $k => $link) {
+ if ($link['type'] === Link::SHOWLINK && isset($link['video_service']) && $link['video_service'] && !isset($link['close_button'])) {
+ $links[$k]['close_button'] = $link['video_service'];
+ unset($links[$k]['video_service']);
+ }
+ }
+ }
+
/**
* @param $xls Spreadsheet
* @param $links []
use App\Models\Traits\PublicationSettings;
use App\Models\Traits\SCORMVersionTrait;
use App\Slack\Slack;
+use App\SubForms\Link\Base;
use Cubist\Backpack\CubistBackpackServiceProvider;
use Cubist\Backpack\Magic\Fields\FormBigSection;
use Cubist\Backpack\Magic\Fields\FormSuperSection;
{
$res = [];
$this->getLinksAndRulers($links, $rules);
+
+ $canContainLinks = Base::typesCanContainLinks();
+
foreach ($links as $link) {
- if ($link['type'] != 6) {
+ $attr = $canContainLinks[$link['type']] ?? false;
+ if (!$attr) {
continue;
}
- if (!isset($link['to']) || !$link['to']) {
+ if (!isset($link[$attr]) || !$link[$attr]) {
continue;
}
- $file = $this->asset_path($link['to']);
+ $file = $this->asset_path($link[$attr]);
if (!file_exists($file)) {
continue;
}
- $md5 = md5($link['to']);
- if (isset($res[$md5])) {
- continue;
- }
- $res[$md5] = ['name' => $link['to'], 'dim' => Image::getimagesize($file), 'url' => url('/fluidbook-publication/' . $this->id . '/edit/links/assets/' . $link['to'])];
+ $md5 = md5($link[$attr]);
+ $res['uid_' . $link['uid']] = $res[$md5] = ['name' => $link[$attr], 'dim' => Image::getimagesize($file), 'url' => url('/fluidbook-publication/' . $this->id . '/edit/links/assets/' . $link[$attr])];
}
return $res;
}
protected $_extra = true;
protected $_uid = true;
+ protected $_canContainLinks = false;
+
protected static $_acceptImage = ['.jpg', '.jpeg', '.png', '.svg', '.gif'];
protected static $_acceptImageAndZip = ['.jpg', '.jpeg', '.png', '.svg', '.gif', '.zip'];
protected static $_acceptAnimation = ['.jpg', '.jpeg', '.png', '.svg', '.gif', '.zip', '.oam', '.html', '.json', '.pdf'];
return $res;
}
+ public static function typesCanContainLinks()
+ {
+ $res = [];
+ foreach (self::types() as $l) {
+ if(!isset($l['class'])){
+ continue;
+ }
+ $class = $l['class'];
+ $i = new $class();
+ if ($c = $i->canContainLinks()) {
+ $res[$l['type']] = $c;
+ }
+ }
+ return $res;
+ }
+
+ public function canContainLinks()
+ {
+ return $this->_canContainLinks;
+ }
+
/**
* @return mixed
*/
public function addDestinationField()
{
- $this->addField('to', \Cubist\Backpack\Magic\Fields\Email::class, __('Adresse e-mail'));
+ $this->addField('to', \Cubist\Backpack\Magic\Fields\Text::class, __('Adresse e-mail'));
}
}
{
public $type = Link::IMAGE;
+ protected $_canContainLinks = 'to';
+
public function addDestinationField()
{
$this->addField('to', FilesOrURL::class, __('Image'), $this->getFilesOrURLEntry() + ['accept' => self::$_acceptImage]);
public $_integration = true;
public $_multimedia = true;
+ protected $_canContainLinks = 'to';
+
public function addDestinationField()
{
$this->addField('to', FilesOrURL::class, __('Animation'), $this->getFilesOrURLEntry() + ['accept' => self::$_acceptAnimation]);
use App\Fields\FluidbookLinkEditor\Target;
use App\Fluidbook\Link\Link;
-use Cubist\Backpack\Magic\Fields\SelectFromArray;
-use Cubist\Backpack\Magic\Fields\URL;
// __('!! Editeur de liens')
class Web extends Base
{
public function addDestinationField()
{
- $this->addField('to', URL::class, __('Adresse'));
+ $this->addField('to', \Cubist\Backpack\Magic\Fields\Text::class, __('Adresse'));
$this->addField('target', Target::class, __('Ouvrir le lien dans'));
}
}
e.preventDefault();
}
$(document).on('dragenter', '#linkeditor-main', function (e) {
-
// Prevent canvas being scrolled at the begining of the drag
$("#linkeditor-canvas").addClass('noscroll');
setTimeout(function () {
},
}
});
- if (selection.is('[fb-type=6]')) {
+ if (CAN_CONTAIN_LINKS[parseInt($(selection).attr('fb-type'))] !== undefined) {
res.items.image_link = {
isHtmlName: true,
name: TRANSLATIONS.edit_image_link + ' <kbd>Ctrl+L</kbd>', callback: function () {
openImageLink: function () {
- let selection = $(".link[fb-type=6].selected");
- if (selection.length !== 1 || selection.attr('fb-alternative') == '') {
+ let selection = $(".link.selected");
+ if (undefined === CAN_CONTAIN_LINKS[parseInt($(selection).attr('fb-type'))] || selection.length !== 1) {
this.linkeditor.notification(TRANSLATIONS.error_open_image_link, 'warning');
return;
}
- this.linkeditor.changePage('link_' + MD5(selection.attr('fb-alternative')).toString());
+ this.linkeditor.changePage('link_uid_' + selection.attr('fb-uid'));
},
selectLinkAndSelectToField: function (link) {
$title='#'.$id.' - '.__('Editeur de liens');
/** @var $fluidbook \App\Models\FluidbookPublication */
$depths=\App\SubForms\Link\Base::getDepths(\App\Models\FluidbookPublication::find($fluidbook->id));
+ $canContainLinks=\App\SubForms\Link\Base::typesCanContainLinks();
$fluidbook->getLinksAndRulers($links,$rulers);
$fbdata=$fluidbook->getPageData()->getRawData();
$fbdata['settings']['width']=$fbdata['width']=$fluidbook->getPageWidth();
var SETTINGS = @json($settings);
var THEME = @json($t);
var ASSETS = @json($assets);
+ var CAN_CONTAIN_LINKS = @json($canContainLinks);
var DEPTH = @json($depths);
</script>
<script