Plakaty

<span>Plakaty</span> <span class="text-lg">  </span>

Najczęściej zadawane pytania

Gdzie wydrukować plakaty reklamowe?

Odpuść krążenie po mieście, stanie w korkach i w kolejkach. Najlepsze plakaty reklamowe zamówisz bez wychodzenia z domu! Plakaty dla firm z oferty Voogo zachwycają jakością i estetyką wykonania, a ich przygotowanie w kreatorze online jest dziecinnie proste.

Czym przykleić plakaty do ściany (reklamowe)?

Istnieje kilka sposobów na to, by zamocować plakaty reklamowe do ściany. Najczęściej stosowane to taśma klejąca, rzepy oraz klej w sprayu. Zanim umieścisz plakaty firmowe na wybranej powierzchni, upewnij się, że wybrany produkt klejący jej nie uszkodzi.

W co oprawić plakaty firmowe?

Plakaty firmowe wiesza się na różnych powierzchniach w standardowej formie. Jeśli jednak chcesz zachować trwałość treści, możesz oprawić plakaty dla firm w ramę lub antyramę, a także zabezpieczyć koszulką foliową, jeśli plakaty reklamowe będą wywieszane na zewnątrz.

Jak drukować plakaty reklamowe?

Wysoka jakość druku to kluczowy parametr jeśli chodzi o plakaty reklamowe. Jeśli zależy Ci na doskonałym stosunku jakości do ceny, zaprojektuj i wydrukuj plakaty firmowe w darmowym kreatorze plakatów Voogo.

Jaki papier na plakaty firmowe?

Gramatura papieru ma duże znaczenie dla plakatów reklamowych. Od tego zależy ich trwałość. Najlepszy papier na plakaty firmowe ma minimum 180 g/m2. W Voogo drukujemy plakaty reklamowe na papierze kredowym o grubości 200 g/m2.

Jak wysyłać plakaty reklamowe?

Choć nasze plakaty reklamowe drukujemy na papierze kredowym o gramaturze 200 g/m2, zawsze warto zabezpieczyć je na czas transportu. Proponujemy, by przesyłać plakaty firmowe owinięte w folię stretch, umieszczone w dopasowanym kartonie.

Jaki papier na plakaty firmowe?


























Pytanie






Odpowiedź








Normalny FormatyNormalnyNagłówek 1Nagłówek 2Nagłówek 3Nagłówek 4Kod źródłowyWyrównajWyrównaj do lewejWyrównaj do środkaWyrównaj do prawejDo lewej i prawejPogrubienieKursywaPodkreślenieUporządkowana listaDomyślnaNiższy alfaNiższy greckiNiższe rzymskieGórna alfaGórny rzymskiLista nieuporządkowanaDomyślnaOkrągDyskPlacInsert SnippetWstaw tabelęWstaw linkWstaw obrazekWstaw linię poziomąWidok kod


<div
class="modal fade component-backend-modal"
role="dialog"
aria-modal="true"
v-if="visible"
v-bind:aria-labelledby="ariaLabeledBy"
:style="containerStyle"
:class="containerCssClass"
@click="onOverlayClick"
>
<div
ref="document"
role="document"
class="modal-dialog"
:class="cssClass"
>
<div
ref="content"
class="modal-content"
:class="contentCssClassName"
:style="modalStyle"
@mousedown="onMouseDown"
@transitionend="onTransitionEnd"
>
<slot name="content"></slot>

<template v-if="resizable">
<div v-if="resizable === true || resizable === 'vertical'" class="resize-handle" data-side="bt"></div>
<div v-if="resizable === true || resizable === 'vertical'" class="resize-handle" data-side="tp"></div>
<div v-if="resizable === true || resizable === 'horizontal'" class="resize-handle" data-side="lf"></div>
<div v-if="resizable === true || resizable === 'horizontal'" class="resize-handle" data-side="rt"></div>
<div v-if="resizable === true" class="resize-handle" data-side="bt-rt"></div>
<div v-if="resizable === true" class="resize-handle" data-side="bt-lf"></div>
<div v-if="resizable === true" class="resize-handle" data-side="tp-rt"></div>
<div v-if="resizable === true" class="resize-handle" data-side="tp-lf"></div>
</template>
</div>
</div>
</div>


<div
data-default-button-text="OK"
>
<backend-component-modal
ref="modal"
:aria-labeled-by="modalTitleId"
:unique-key="uniqueKey"
:size="size"
:storePosition="false"
@hidden="onHidden"
>
<template v-slot:content>
<div class="modal-header">
<h4 class="modal-title" v-bind:id="modalTitleId" v-text="title"></h4>
<button
@click.prevent="$refs.modal.hide()"
type="button"
class="btn-close"
aria-label="Zamknij"
tabindex="0"
></button>
</div>
<div class="modal-body">
<p v-text="text"></p>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-primary btn-default-action"
data-default-focus
@click="$refs.modal.hide()"
v-text="primaryButtonText"
></button>
</div>
</template>
</backend-component-modal>
</div>


<div
data-default-button-text="OK"
>
<backend-component-modal
ref="modal"
:aria-labeled-by="modalTitleId"
:unique-key="uniqueKey"
:size="size"
:storePosition="false"
@hidden="onHidden"
>
<template v-slot:content>
<div class="modal-header">
<h4 class="modal-title" v-bind:id="modalTitleId" v-text="title"></h4>
<button
@click.prevent="$refs.modal.hide()"
type="button"
class="btn-close"
aria-label="Zamknij"
tabindex="0"
></button>
</div>
<div class="modal-body">
<p v-text="text"></p>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-primary btn-default-action"
:class="{'btn-primary': !isDanger, 'btn-danger': isDanger}"
v-bind:data-default-focus="!isDanger"
@click="onButtonClick"
v-text="primaryButtonText"
></button>
<span class="button-separator">lub</span>
<button
class="btn btn-link text-muted"
@click.prevent="$refs.modal.hide()"
v-bind:data-default-focus="isDanger"
>Anuluj</button>
</div>
</template>
</backend-component-modal>
</div>


<div>
<backend-component-modal
ref="modal"
:aria-labeled-by="modalTitleId"
:unique-key="uniqueKey"
:size="size"
:storePosition="false"
@hidden="onHidden"
>
<template v-slot:content>
<div class="modal-header">
<h4 class="modal-title" v-bind:id="modalTitleId" v-text="title"></h4>
<button
@click.prevent="$refs.modal.hide()"
type="button"
class="btn-close"
aria-label="Zamknij"
tabindex="0"
></button>
</div>
<div v-html="text" @click="onClick"></div>
</template>
</backend-component-modal>
</div>


<div
class="component-backend-document flex-layout-column"
:class="cssClass"
>
<transition name="document-fade-in">
<template v-if="!loading && !errorLoadingDocument">
<transition name="document-header-fade">
<div class="document-header-container flex-layout-item fix" v-show="!headerCollapsed">
<slot name="header"></slot>
</div>
</transition>
</template>
</transition>

<transition name="document-fade-in">
<div v-if="!loading && !errorLoadingDocument" class="document-toolbar-container flex-layout-item fix">
<slot name="toolbar"></slot>
</div>
</transition>

<div v-if="!loading && !errorLoadingDocument" class="flex-layout-item fix">
<slot name="drawer"></slot>
</div>

<transition name="document-fade-in">
<div v-if="!loading && !errorLoadingDocument" class="document-content-container flex-layout-item stretch relative">
<slot name="content"></slot>

<transition name="processing-fade-in">
<backend-component-loading-indicator
v-if="processing"
indicator-style="stripe"
css-class="document-progress-indicator"
></backend-component-loading-indicator>
</transition>
</div>
</transition>

<div v-if="loading" class="flex-layout-item justify-center">
<backend-component-loading-indicator
size="small"
></backend-component-loading-indicator>
</div>

<transition name="processing-fade-in">
<div v-if="errorLoadingDocument" class="flex-layout-item justify-center">
<div class="document-loading-error backend-icon-background-pseudo">
<h3 v-text="errorLoadingDocumentHeader"></h3>
<p v-text="errorLoadingDocument"></p>
</div>
</div>
</transition>
</div>



<div class="flex-layout-row document-toolbar-scroll-container" ref="toolbarContainer">
<div class="document-toolbar-scrollable flex-layout-item stretch" ref="scrollable">
<template v-for="element in scrollableElements" v-if="!element.hidden">
<div
class="document-toolbar-element"
:class="['element-type-'+element.type, {'button-group': !!element.buttonGroup, 'button-icon-only': element.type == 'button' && !element.label}]">
<backend-component-document-toolbar-button
v-if="element.type == 'button' || element.type == 'dropdown'"
:settings=element
:toolbar-disabled="disabled"
@dropdowncontentshown="onDropdownContentShown"
@dropdowncontenthidden="onDropdownContentHidden"
@command="onElementCommand"
></backend-component-document-toolbar-button>
</div> </template>
</div>

<div class="flex-layout-item fix fixed-right">
<template v-for="element in fixedRightElements" v-if="!element.hidden">
<div
class="document-toolbar-element"
:class="['element-type-'+element.type, {'button-group': !!element.buttonGroup, 'button-icon-only': element.type == 'button' && !element.label}]">
<backend-component-document-toolbar-button
v-if="element.type == 'button' || element.type == 'dropdown'"
:settings=element
:toolbar-disabled="disabled"
@dropdowncontentshown="onDropdownContentShown"
@dropdowncontenthidden="onDropdownContentHidden"
@command="onElementCommand"
></backend-component-document-toolbar-button>
</div> </template>
</div>
</div>


<div v-oc-hotkey:[settings.hotkey]="onHotkey" v-if="!settings.hidden">
<a
role="button"
v-if="settings.href"
v-bind:href="settings.href"
v-bind:target="settings.target ? settings.target : '_self'"
v-bind:disabled="settings.disabled || toolbarDisabled"
v-bind:tabindex="settings.disabled || toolbarDisabled ? -1 : 0"
v-bind:aria-controls="ariaControlsId"
v-bind:aria-haspopup="settings.type == 'dropdown'"
v-bind:id="buttonId"
v-bind:data-cmd="command"
v-bind:data-tooltip-text="tooltip"
v-bind:data-tooltip-hotkey="tooltipHotkey"
class="backend-toolbar-button"
:class="cssClass"
@click="onClick"
ref="button"
>
<i v-if="icon" :class="icon"></i>
<span v-if="label" v-text="label"></span>
</a>
<button
type="button"
v-else
v-bind:disabled="settings.disabled || toolbarDisabled"
v-bind:tabindex="settings.disabled || toolbarDisabled ? -1 : 0"
v-bind:aria-controls="ariaControlsId"
v-bind:aria-haspopup="settings.type == 'dropdown'"
v-bind:id="buttonId"
v-bind:data-cmd="command"
v-bind:data-tooltip-text="tooltip"
v-bind:data-tooltip-hotkey="tooltipHotkey"
class="backend-toolbar-button"
:class="cssClass"
@click="onClick"
ref="button"
>
<i v-if="icon" :class="icon"></i>
<span class="button-label" v-if="label" v-text="label" :style="titleStyle"></span>
</button
><button
type="button"
v-if="settings.type != 'dropdown' && settings.menuitems"
class="backend-toolbar-button menu-trigger"
:class="menuTriggerCssClass"
aria-haspopup="true"
v-bind:disabled="settings.disabled || toolbarDisabled"
v-bind:tabindex="settings.disabled || toolbarDisabled ? -1 : 0"
v-bind:id="menuButtonId"
v-bind:aria-controls="menuId"
@click="onClick($event, false, true)"
ref="menuButton"
>
<span v-if="settings.showBadge" class="badge"></span>
</button>

<backend-component-dropdownmenu
v-if="settings.menuitems"
:items=settings.menuitems
:menu-id="menuId"
:labeled-by-id="buttonId"
ref="menu"
@closedwithesc="onMenuClosedWithEsc"
@command="onMenuItemCommand"
@shown="onMenuShown"
@hidden="onMenuHidden"
@aligntotrigger="onAlignToTrigger"
></backend-component-dropdownmenu>
</div>



<div class="document-header" :class="{'has-document-icon': documentIcon, 'has-close-icon': showCloseIcon}">
<span
v-if="documentIcon"
class="document-icon"
v-bind:style="documentIconStyle"
>
<i :class="documentIcon.cssClass"></i>
</span>

<input type="text" ref="titleInput" class="header-title" v-model="data[titleProperty]" v-bind:disabled="disabled || disableTitleEditor" @input="onTitleInput"></input>

<div class="flex-layout-row" v-if="subtitleProperty" v-show="!hideSubtitleEditor">
<div class="flex-layout-item fix subtitle-label center" v-text="subtitleLabel + ':'"></div>
<input
type="text"
class="header-subtitle flex-layout-item stretch"
v-model="data[subtitleProperty]"
v-bind:disabled="disabled"
@input="onSubtitleInput"
></input>
</div>

<button
v-if="showCloseIcon"
class="close close-icon backend-icon-background-pseudo"
@click="$emit('documentcloseclick')"
>
<span aria-hidden="true">×</span>
</button>
</div>


<div>
<transition name="backend-dropdown-overlay-touch-screen">
<div v-if="visible" class="backend-dropdownmenu-overlay" @click.prevent="onOverlayClick" @contextmenu.prevent="onOverlayContextMenu"></div>
</transition>

<backend-component-dropdownmenu-sheet
ref="sheet"
:items="items"
:labeled-by-id="labeledById"
:menu-id="menuId"
:preferable-position="preferablePosition"
@aligntotrigger="$emit('aligntotrigger', $event)"
@command="$emit('command', $event)"
@hidden="onSheetHidden"
@closemenu="hideMenu"
></backend-component-dropdownmenu-sheet>
</div>


<div class="dropdown-menu backend-dropdownmenu" data-menu-position-container>
<div class="dropdown-container">
<transition name="backend-dropdown-menu-touch-screen" v-on:after-leave="onAfterLeave">
<ul
role="menu"
:class="menuClassName"
ref="menu"
v-if="visible"
v-bind:id="menuId"
v-bind:aria-labelledby="labeledById"
>
<li class="submenu-header clearfix" v-if="isSubmenu">
<button
class="go-back-link backend-icon-background-pseudo"
@click.stop.prevent="onGoBackClick"
>Go Back</button>
<button
class="close-link backend-icon-background-pseudo"
@click.stop.prevent="onCloseClick"
>Close Menu</button>
</li>

<backend-component-dropdownmenu-menuitem
v-for="(item, index) in items"
:type="item.type"
:disabled="item.disabled"
:href="item.href"
:target="item.target"
:checked="item.checked"
:items="item.items"
:icon="item.icon"
:label="item.label"
:command="item.command"
:itemStyle="item.style"
:key="index"
:is-first="index == 0"
@command="onCommand($event)"
@hide="onHide"
@itemmouseenter="onItemMouseEnter"
@submenushown="onItemSubmenuShown"
@submenuhidden="onItemSubmenuHidden"
@closemenu="$emit('closemenu', $event)"
></backend-component-dropdownmenu-menuitem>
</ul>
</transition>
</div>
</div>


<li
class="item"
:class="{
separator: type == 'separator',
first: isFirst,
'submenu-expanded': isSubmenuExpanded
}"
v-bind:role="type == 'separator' ? 'separator' : 'presentation'"
v-bind:disabled="disabled"
>
<button v-if="!href && type != 'separator'"
ref="itemElement"
v-bind:tabindex="disabled ? -1 : 0"
v-bind:disabled="disabled"
v-bind:aria-disabled="disabled"
v-bind:role="itemRole"
v-bind:aria-checked="itemIsChecked ? 'true' : 'false'"
v-bind:id="menuItemId"
v-bind:aria-haspopup="hasSubmenu"
v-bind:aria-expanded="isSubmenuExpanded"
:class="{'has-submenu': hasSubmenu}"
:style="itemStyle"
@click="onClick($event)"
@mouseenter="onMouseEnter"
data-menuitem
>
<i :class="icon" v-if="icon"></i>
<i
class="backend-icon-background-pseudo"
v-if="type == 'checkbox' || type == 'radiobutton'"
></i>
<i
class="backend-icon-background-pseudo submenu-indicator"
v-if="hasSubmenu"
></i>
<span v-text="label"></span>
</button>

<a
ref="itemElement"
v-if="href && type != 'separator'"
v-bind:href="href"
v-bind:target="target ? target : '_self'"
v-bind:tabindex="disabled ? -1 : 0"
v-bind:disabled="disabled"
v-bind:aria-disabled="disabled"
v-bind:aria-checked="itemIsChecked ? 'true' : 'false'"
v-bind:role="itemRole"
:style="itemStyle"
@click="onClick($event)"
@mouseenter="onMouseEnter"
data-menuitem
>
<i :class="icon" v-if="icon"></i>
<i
class="backend-icon-background-pseudo"
v-if="type == 'checkbox' || type == 'radiobutton'"
></i>
<span v-text="label"></span>
</a>

<backend-component-dropdownmenu-sheet
v-if="hasSubmenu"
ref="submenu"
:items="items"
:labeled-by-id="menuItemId"
:menu-id="submenuId"
:is-submenu="true"
@command="$emit('command', $event)"
@hidden="onSubmenuHidden"
@closemenu="$emit('closemenu', $event)"
></backend-component-dropdownmenu-sheet>
</li>


<div class="component-backend-loading-indicator" :class="className">
<div class="spinner" v-if="indicatorStyle == 'circles'">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>

<div v-if="indicatorStyle == 'stripe'">
<div class="stripe-indicator">
<div></div>
</div>
</div>

<div v-if="indicatorStyle == 'bar'" class="bar-indicator">
<div class="stripe-indicator">
<div :style="barIndicatorStyle" :class="{'progress-done': this.progress == 100}"></div>
</div>
</div>
</div>


<div>
<button
v-bind:disabled="disabled"
v-bind:tabindex="disabled ? -1 : 0"
v-bind:id="buttonId"
ref="button"
:class="cssClass"
@click="onClick"
>
<span class="button-label" v-text="buttonText"></span>
</button>

<backend-component-dropdownmenu
:items=menuitems
:menu-id="menuId"
:labeled-by-id="buttonId"
ref="menu"
@command="onMenuItemCommand"
@shown="onMenuShown"
@hidden="onMenuHidden"
:preferable-position="preferableMenuPosition"
></backend-component-dropdownmenu>
</div>


<backend-component-popover
ref="popover"
container-css-class="publishing-controls"
:always-visible="true"
@shown="onShown"
>
<div class="publishing-controls-popover-body">
<div ref="parentId"></div>
<div class="slug-section">
<span class="label-link text-muted" v-if="showTreeControls && !showFullSlug" @click.stop="onShowFullSlugClick">Wyświetl pełny ślimak</span>
<div ref="slug" class="clearfix"></div>
<span class="full-slug text-muted" v-text="fullSlug" v-if="showTreeControls && showFullSlug"></span>
</div>
<div ref="enabled"></div>
<div class="clearfix"></div>

<p v-if="isDraft" class="publish-notice">
Szkice nie są widoczne na stronie, dopóki nie zostaną zastosowane. <span class="js-link" @click="$emit('publishdraftclick', $event)">Zastosuj ten szkic</span>.
</p>

<p v-if="isDeleted" class="publish-notice">
This record is not visible because it has been deleted. <span class="js-link" @click="$emit('restorerecordclick', $event)">Restore this Record</span>.
</p>

<div class="enabled-controls" v-show="state.current.enabled">
<div class="date-section">
<p v-show="!showPublishDate">
<i class="icon-calendar-check"></i>
<span @click="onShowPublishDateClick">Zaplanuj datę publikacji</span>
</p>

<span class="label-link text-muted" v-if="showPublishDate" @click.stop="onRemovePublishDateClick">Usunąć</span>
<div v-show="showPublishDate" ref="publishDate"></div>
<div class="clearfix"></div>
</div>

<div class="date-section">
<p v-show="!showExpiryDate">
<i class="icon-calendar-disable"></i>
<span @click="onShowExpiryDateClick">Ustaw datę ważności</span>
</p>

<span class="label-link text-muted" v-if="showExpiryDate" @click.stop="onRemoveExpiryDateClick">Usunąć</span>
<div v-show="showExpiryDate" ref="expiryDate"></div>
<div class="clearfix"></div>
</div>
</div>
</div>
</backend-component-popover>



<div class="popover-overlay-container" v-if="visible || alwaysVisible" @click="onOverlayClick" :style="containerStyle">
<div class="control-popover fade" ref="popover" :class="containerCssClassFull" :style="popoverStyle">
<div>
<slot></slot>
</div>
</div>
</div>


<button
type="button"
class="record-management-button has-menu record-status-button"
:class="buttonCssClass"
@click.prevent="onClick($event)"
>
<i :style="markerStyle"></i>
<span><span v-text="currentStatusName"></span> <em v-if="state.publishingStateChanged && !state.initial.isDraft">Niezapisany</em></span>
</button>



<div class="draftnotes">
<input type="text" name="Draft[notes]" v-model="state.initial.draftNotes" placeholder="Wersja robocza: notatki robocze">
<input type="hidden" name="Draft[name]" v-bind:value="draftName">
</div>



<div
class="component-backend-richeditor-document-connector flex-layout-column layout-absolute"
:class="cssClass"
data-configuration="{"lang":{"command_upload_from_computer":"Upload From Computer","browse":"Browse Media Library","by_url":"By URL","url_required":"The URL is required","url_validation":"URL must start with http:\/\/ or https:\/\/","add_image_title":"Insert Image","add_video_title":"Insert Video","add_audio_title":"Insert Audio","add_file_title":"Insert File","embedding_code":"Embedding Code","embedding_code_required":"The embedding code is required","invalid_embedding_code_title":"Invalid code","invalid_embedding_code_message":"Please enter valid HTML embedding code"},"vendorPath":"https:\/\/fun-multisite-ecom.colorland.tech\/modules\/backend\/vuecomponents\/richeditordocumentconnector\/assets\/vendor"}"
>
<div v-if="allowResizing && !codeEditingMode" class="top-ruler flex-layout-item fix">
<div class="width-indicator" :style="rulerStyle">
<span v-for="tick in majorTicks" :style="tick.style" class="width-tick tick-major"></span>
<span v-for="tick in minorTicks" :style="tick.style" class="width-tick tick-minor"></span>

<div class="width-drag-handle" @mousedown.stop="onResizingHandleMouseDown" ref="handle"></div>
</div>
</div>
<div class="flex-layout-item stretch richeditor-container">
<slot></slot>
</div>
<div class="flex-layout-item stretch relative codeeditor-container">
<backend-component-monacoeditor
v-if="codeEditingMode"
ref="codeEditor"
container-css-class="fill-container"
:model-definitions="codeEditorModelDefinitions"
>
</backend-component-monacoeditor>
</div>
</div>



<backend-component-document
container-css-class="fill-container"
:built-in-mode="true"
:full-screen="fullScreen"
ref="document"
>
<template v-slot:toolbar v-if="!hasExternalToolbar">
<backend-component-document-toolbar
:elements="toolbarElements"
:disabled="readOnly"
@command="onToolbarCommand"
ref="toolbar"
></backend-component-document-toolbar>
</template>

<template v-slot:content>
<div class="flex-layout-column fill-container" ref="contentContainer">
<div class="flex-layout-item stretch editor-panel relative">
<backend-component-richeditor-document-connector
:allow-resizing="showMargins"
:toolbar-container="toolbarExtensionPointProxy"
:external-toolbar-app-state="externalToolbarAppState"
:use-media-manager="useMediaManager"
:built-in-mode="true"
unique-key="html-editor-form-widget"
container-css-class="fill-container"
>
<backend-component-richeditor
v-model="value"
:read-only="options.readOnly"
:use-line-breaks="options.useLineBreaks"
:full-page="fullPage"
:editor-options="editorOptions"
:toolbar-buttons="toolbarButtons"
ref="richeditor"
@blur="onBlur"
@focus="onFocus"
>
</backend-component-richeditor>
</backend-component-richeditor-document-connector>
</div>
</div>
</template>
</backend-component-document>



<div
class="component-backend-richeditor flex-layout-column"
:class="cssClass"
data-configuration="{"editorLang":"pl","useMediaManager":true,"iframeStylesFile":"https:\/\/fun-multisite-ecom.colorland.tech\/modules\/backend\/vuecomponents\/richeditor\/assets\/css\/iframestyles.css","globalToolbarButtons":null,"allowEmptyTags":null,"allowTags":null,"allowAttrs":null,"noWrapTags":null,"removeTags":null,"lineBreakerTags":null,"imageStyles":null,"linkStyles":null,"paragraphFormat":null,"paragraphStyles":null,"inlineStyles":null,"tableStyles":null,"tableCellStyles":null}"
>
<div class="flex-layout-item field-richeditor stretch relative" data-richeditor-vue>
<textarea ref="textarea" v-bind:id="editorId" class="editor-element"></textarea>
</div>
</div>



<div
class="component-backend-uploader"
v-show="!hidden"
:class="{'uploader-collapsed': collapsed}"
data-lang-uploading="Uploading Files"
data-lang-complete="Upload Complete"
>
<div class="uploader-header">
<h3 v-text="titleText"></h3>

<backend-component-loading-indicator
indicator-style="bar"
:progress="totalProgress"
></backend-component-loading-indicator>

<button
@click.prevent="onHeaderButtonClick"
type="button"
class="close backend-icon-background-pseudo"
:class="{'collapse': !collapsed && hasFilesInProgress, 'expand': collapsed && hasFilesInProgress}"
tabindex="0"
><span aria-hidden="true">×</span>
</button>
</div>
<div class="uploader-body-container">
<div class="uploader-body">
<backend-component-scrollable-panel
:relative-layout="true"
:relative-layout-max-height="200"
>
<div>
<ul>
<backend-component-uploader-item
v-for="(file, index) in files"
:key="file.key"
:fileName="file.name"
:status="file.status"
:progress="file.progress"
:errorMessage="file.errorMessage"
@removeclick="onRemoveClick(index)"
></backend-component-uploader-item>
</ul>
</div>
</backend-component-scrollable-panel>
</div>
</div>

</div>


<li :class="cssClass">
<span class="item-name" v-text="fileName"></span>
<span class="item-error" v-if="errorMessage" v-text="errorMessage"></span>

<i
class="backend-icon-background"
v-if="status == 'completed'"
></i>

<template
v-if="status == 'uploading'"
>
<backend-component-loading-indicator
indicator-style="bar"
:progress="progress"
></backend-component-loading-indicator>

<button
@click.prevent="$emit('removeclick')"
type="button"
class="close backend-icon-background-pseudo"
tabindex="0"
><span aria-hidden="true">×</span>
</button>
</template>
</li>


<div
class="component-backend-scrollablepanel"
:class="{'scrollablepanel-relative': relativeLayout}"
>
<div class="scrollable-panel-container" ref="container">
<div
class="scrollable"
ref="scrollable"
v-on:scroll.passive="onScroll"
:style="containerStyle"
>
<slot></slot>
</div>
</div>
</div>


<backend-component-inspector-panel
ref="panel"
:controls="dataSchema"
:obj="liveObject"
:parent-obj="parentObject"
:inspector-unique-id="uniqueId"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
>
</backend-component-inspector-panel>


<div
class="component-backend-inspector-panel"
data-validation-alert-title="Error"
>
<backend-component-inspector-grouphost
:controls="untabbedControls"
:obj="obj"
:parent-obj="parentObj"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="0"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
></backend-component-inspector-grouphost>

<backend-component-tabs
v-show="tabs.length > 0"
ref="tabs"
:tabs="tabs"
:closeable="false"
:use-slots="true"
tabs-style="inspector"
@tabselected="onTabSelected"
>
<template v-for="tabInfo in tabs" v-slot:[tabInfo.key]>
<backend-component-inspector-grouphost
:controls="tabbedControls[tabInfo.key]"
:obj="obj"
:parent-obj="parentObj"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="0"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
></backend-component-inspector-grouphost>
</template>
</backend-component-tabs>
</div>


<div class="component-backend-inspector-group">
<div
class="group-name inspector-padding-control-left inspector-padding-control-right"
:class="{expanded: expanded, collapsed: !expanded, loading: loading, 'has-errors': hasErrors, 'hide-bottom-border-collapsed': hideBottomBorder}"
@click.stop="onToggleGroup"
>
<div :style="nameStyle">
<span
v-text="nameAndValue"
class="backend-icon-background-pseudo"
></span>

<backend-component-loading-indicator v-if="loading"
size="tiny"
></backend-component-loading-indicator>
</div>
</div>
<transition name="group-fade-in">
<backend-component-inspector-controlhost
v-show="expanded"
:controls="controls"
:obj="obj"
:parent-obj="parentObj"
:splitter-data="splitterData"
:depth="depth + 1"
:panel-update-data="panelUpdateData"
:inspector-preferences="inspectorPreferences"
:inspector-unique-id="inspectorUniqueId"
@inspectorcommand="$emit('inspectorcommand', $event)"
>
</backend-component-inspector-controlhost>
</transition>
</div>


<div class="component-backend-inspector-grouphost">
<backend-component-inspector-controlhost
:controls="groupedControls.ungrouped"
:obj="obj"
:parent-obj="parentObj"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
>
</backend-component-inspector-controlhost>

<backend-component-inspector-group
v-for="(controls, groupName) in groupedControls"
v-if="groupName != 'ungrouped'"
:key="groupName"
:group-name="groupName"
:obj="obj"
:parent-obj="parentObj"
:controls="controls"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
>
</backend-component-inspector-group>
</div>


<table class="component-backend-inspector-controlhost" @mousedown.stop="onHandleMouseDown">
<backend-component-inspector-controlhost-row
v-for="control in controls"
:obj="obj"
:parent-obj="parentObj"
:key="control.property"
:control-host-unique-id="uniqueId"
:control="control"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
:inspector-unique-id="inspectorUniqueId"
:is-full-width="isFullWidthControl(control)"
@inspectorcommand="$emit('inspectorcommand', $event)"
>
</backend-component-inspector-controlhost-row>
</table>


<tr class="inspector-control-row" :class="{'has-errors': hasErrors, 'hide-bottom-border': bottomBorderHidden}" v-show="rowVisible">
<th v-if="!isFullWidth && !controlLabelHidden" :style="titlePanelStyle">
<div class="inspector-label-container" :class="{'has-description': control.description}">
<label
class="inspector-padding-control-left"
v-text="control.title"
v-bind:for="controlEditorId"
:style="labelStyle"
@click.stop="onLabelClick"
></label>
<span
v-if="control.description"
class="property-description backend-icon-background-pseudo"
v-bind:data-tooltip-text="control.description"
></span>
</div>
</th>

<td v-bind:colspan="controlColspan">
<div class="full-width-control-label" v-if="isFullWidth && (control.title || control.description) && ! controlLabelHidden">
<label
class="inspector-padding-control-left"
v-text="control.title"
v-bind:for="controlEditorId"
:style="labelStyle"
@click.stop="onLabelClick"
></label>
<div
v-if="control.description"
class="inspector-padding-control-left full-width-property-description"
v-text="control.description"
:style="labelStyle"
></div>
</div>

<div :class="{'inspector-control-container': !isFullWidth, 'no-property-title': !control.title && !control.description}">
<div v-if="!isFullWidth" class="inspector-drag-handle"></div>

<backend-component-inspector-control-text
v-if="control.type == 'string' || control.type == 'text'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:splitter-data="splitterData"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="onEditorFocus"
@blur="onEditorBlur"
@invalid="onEditorInvalid"
@valid="onEditorValid"
></backend-component-inspector-control-text>

<backend-component-inspector-control-dropdown
v-if="control.type == 'dropdown'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="onEditorFocus"
@blur="onEditorBlur"
@invalid="onEditorInvalid"
@valid="onEditorValid"
></backend-component-inspector-control-dropdown>

<backend-component-inspector-control-autocomplete
v-if="control.type == 'autocomplete'"
:obj="obj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="onEditorFocus"
@blur="onEditorBlur"
@invalid="onEditorInvalid"
@valid="onEditorValid"
></backend-component-inspector-control-autocomplete>

<backend-component-inspector-control-checkbox
v-if="control.type == 'checkbox'"
:obj="obj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="onEditorFocus"
@blur="onEditorBlur"
@invalid="onEditorInvalid"
@valid="onEditorValid"
></backend-component-inspector-control-checkbox>

<backend-component-inspector-control-table
v-if="control.type == 'table'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
ref="editor"
@hidebottomborder="bottomBorderHidden = true"
@hidefullwidthlabel="controlLabelHidden = true"
></backend-component-inspector-control-table>

<backend-component-inspector-control-object
v-if="control.type == 'object'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
ref="editor"
@hidefullwidthlabel="controlLabelHidden = true"
@hidebottomborder="bottomBorderHidden = true"
></backend-component-inspector-control-object>

<backend-component-inspector-control-set
v-if="control.type == 'set'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
ref="editor"
@hidefullwidthlabel="controlLabelHidden = true"
@hidebottomborder="bottomBorderHidden = true"
></backend-component-inspector-control-set>

<backend-component-inspector-control-objectlist
v-if="control.type == 'objectList'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
ref="editor"
@hidefullwidthlabel="controlLabelHidden = true"
@hidebottomborder="bottomBorderHidden = true"
></backend-component-inspector-control-objectlist>

<backend-component-inspector-control-objectlist-records
v-if="control.type == 'objectListRecords'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
ref="editor"
@hidefullwidthlabel="controlLabelHidden = true"
@hidebottomborder="bottomBorderHidden = true"
@inspectorcommand="$emit('inspectorcommand', $event)"
></backend-component-inspector-control-objectlist-records>

<backend-component-inspector-control-dictionary
v-if="control.type == 'dictionary'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:inspector-preferences="inspectorPreferences"
:splitter-data="splitterData"
:inspector-unique-id="inspectorUniqueId"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
ref="editor"
@hidefullwidthlabel="controlLabelHidden = true"
@hidebottomborder="bottomBorderHidden = true"
></backend-component-inspector-control-dictionary>

<backend-component-inspector-control-mediafinder
v-if="control.type == 'mediafinder'"
:obj="obj"
:parent-obj="parentObj"
:control="control"
:control-id="controlEditorId"
:splitter-data="splitterData"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="onEditorFocus"
@blur="onEditorBlur"
@invalid="onEditorInvalid"
@valid="onEditorValid"
></backend-component-inspector-control-mediafinder> </div>
</td>
</tr>


<div>
<input
v-if="control.type == 'string'"
class="inspector-control"
type="text"
ref="input"
v-bind:value="valueWithPreset"
v-bind:id="controlId"
v-bind:placeholder="control.placeholder"
v-bind:readonly="inspectorPreferences.readOnly"
@input="updateValue"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
/>

<textarea
v-if="control.type == 'text'"
class="component-backend-inspector-textinput inspector-control"
:class="cssClass"
ref="input"
v-bind:value="valueWithPreset"
v-bind:id="controlId"
v-bind:placeholder="control.placeholder"
v-bind:readonly="inspectorPreferences.readOnly"
@keydown.enter.stop
@input="updateValue"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
></textarea>

<div
v-if="control.type == 'text'"
class="inspector-textarea-shadow inspector-control component-backend-inspector-textinput"
ref="textareaShadow"
v-text="valueWithPreset"
></div>
</div>


<div v-bind:tabindex="containerTabIndex" @focus="onContainerFocus">
<backend-component-loading-indicator v-if="loadingDynamicOptions"
size="tiny"
></backend-component-loading-indicator>

<backend-component-dropdown
v-if="!loadingDynamicOptions"
:options="options"
:id="controlId"
:placeholder="control.placeholder"
:tabindex="0"
:disabled="inspectorPreferences.readOnly"
:allow-empty="true"
track-by="code"
label="label"
ref="input"
v-model="selectedValue"
select-label=""
selected-label=""
deselect-label=""
@input="updateValue"
@open="onFocus"
@close="onBlur"
@hook:mounted="onDropdownMounted"
>
<span slot="noResult">No options found</span>
<template v-if="useValuesAsIcons || useValuesAsColors" slot="option" slot-scope="props">
<div class="option-with-icon" v-if="useValuesAsIcons">
<div class="option-icon" :class="props.option.code"></div>
<span>{{ props.option.label }}</span>
</div>

<div class="option-with-color" v-if="useValuesAsColors">
<div class="option-color" :style="{'background-color': props.option.code}"></div>
<span>{{ props.option.label }}</span>
</div>
</template>
</backend-component-dropdown>
</div>


<div class="inspector-control">
<div
class="component-backend-inspector-checkbox"
>
<label
tabindex="0"
@keydown="onLabelKeydown"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
>
<input
type="checkbox"
ref="input"
value="1"
v-bind:checked="isChecked"
v-bind:id="controlId"
v-bind:readonly="inspectorPreferences.readOnly"
v-bind:disabled="inspectorPreferences.readOnly"
@input="updateValue"
/><span class="backend-icon-background-pseudo"></span>
</label>
</div>
</div>


<div
class="component-backend-inspector-table"
data-lang-add-item="Add item"
>
<table>
<backend-component-inspector-control-table-head
:columns="columns"
>
</backend-component-inspector-control-table-head>
<tbody>
<backend-component-inspector-control-table-row
v-for="(row, index) in value"
:row="row"
:key="index"
:columns="columns"
:row-index="index"
:inspector-preferences="inspectorPreferences"
:table-configuration="tableConfiguration"
@removerow="onRemoveRowClick"
>
</backend-component-inspector-control-table-row>
</tbody>
</table>

<div v-if="tableConfiguration.adding" class="inspector-padding-control-left table-control-links">
<a
href="#"
class="add-item-link"
:class="{disabled: inspectorPreferences.readOnly}"
@click.stop.prevent="onAddItemClick"
v-text="control.btnAddRowLabel === undefined ? lang.addItem : control.btnAddRowLabel"
></a>
</div>
</div>


<thead @mousedown.stop="onHandleMouseDown">
<tr>
<backend-component-inspector-control-table-headcell
v-for="(column, index) in columns"
:key="index"
:column="column"
:column-index="index"
:column-width="columnWidth"
>
</backend-component-inspector-control-table-headcell>
</tr>
</thead>


<th v-bind:style="cellStyle">
<div class="header-cell-container">
<div v-if="columnIndex != 0" class="cell-resize-handle"></div>
<span v-text="column.title"></span>
</div>
</th>


<tr :class="{focused: focused, 'has-errors': hasErrors}">
<backend-component-inspector-control-table-cell
v-for="(column, index) in columns"
:key="index"
:column="column"
:row="row"
:cell-index="index"
:inspector-preferences="inspectorPreferences"
:table-configuration="tableConfiguration"
:is-last-cell="index == columns.length-1"
@focus="onCellFocus"
@blur="onCellBlur"
@valid="onValid"
@invalid="onInvalid"
@removerow="$emit('removerow', rowIndex)"
>
</backend-component-inspector-control-table-cell>
</tr>


<td>
<div class="table-cell-container">
<backend-component-inspector-control-table-text
v-if="column.type == 'string'"
:row="row"
:column="column"
:cell-index="cellIndex"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
@valid="$emit('valid', $event)"
@invalid="$emit('invalid', $event)"
>
</backend-component-inspector-control-table-text>

<backend-component-inspector-control-table-dropdown
v-if="column.type == 'dropdown'"
:row="row"
:column="column"
:cell-index="cellIndex"
:inspector-preferences="inspectorPreferences"
ref="editor"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
@valid="$emit('valid', $event)"
@invalid="$emit('invalid', $event)"
>
</backend-component-inspector-control-table-dropdown>

<button v-if="isLastCell && tableConfiguration.deleting && !inspectorPreferences.readOnly" @click.stop="$emit('removerow')" class="remove-row-btn"></button>
</div>
</td>


<input
type="text"
class="inspector-table-control-text"
v-model="row[column.column]"
ref="input"
v-bind:readonly="inspectorPreferences.readOnly"
@focus="$emit('focus', $event)"
@blur="$emit('blur', $event)"
/>


<div
v-bind:tabindex="containerTabIndex"
@focus="onContainerFocus"
class="inspector-table-dropdown-container"
>
<backend-component-dropdown
:options="options"
:placeholder="column.placeholder"
:tabindex="0"
:disabled="inspectorPreferences.readOnly"
:allow-empty="true"
track-by="code"
label="label"
ref="editor"
v-model="selectedValue"
select-label=""
selected-label=""
deselect-label=""
@input="updateValue"
@open="onFocus"
@close="onBlur"
>
<span slot="noResult">No options found</span>
</backend-component-dropdown>

<div class="dropdown-placeholder" v-if="!hasValue" v-text="column.placeholder"></div>
</div>


<div>
<backend-component-inspector-group
:group-name="control.title"
:obj="editedObject"
:controls="control.properties"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
ref="group"
>
</backend-component-inspector-group>
</div>


<div>
<backend-component-inspector-group
:group-name="control.title"
:obj="editedObject"
:controls="nestedControlProperties"
:splitter-data="splitterData"
:depth="depth"
:group-value="groupValue"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
:loading="loadingDynamicOptions"
ref="group"
>
</backend-component-inspector-group>
</div>


<div
data-lang-key-required="The Key field is required"
data-lang-value-required="The Value field is required"
>
<backend-component-inspector-group
:group-name="control.title"
:obj="editedObject"
:controls="nestedControlProperties"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:group-value="groupValue"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
:hide-bottom-border="true"
ref="group"
>
</backend-component-inspector-group>
</div>


<div
data-lang-error="Error"
data-lang-prop-cant-be-empty="Property :property cannot be empty"
data-lang-key-value-exists="Value is already defined: :property_value"
>
<backend-component-inspector-group
:group-name="control.title"
:obj="editedObject"
:parent-obj="obj"
:controls="nestedControlProperties"
:splitter-data="splitterData"
:depth="depth"
:panel-update-data="panelUpdateData"
:layout-update-data="layoutUpdateData"
:inspector-unique-id="inspectorUniqueId"
:inspector-preferences="inspectorPreferences"
ref="group"
@inspectorcommand="onInspectorCommand"
>
</backend-component-inspector-group>
</div>


<div
class="component-backend-inspector-table"
data-lang-add-item="Add item"
>
<table v-if="hasValues">
<tbody>
<tr v-for="(record, key) in obj">
<td class="no-sub-controls" :class="{clickable: !inspectorPreferences.readOnly}" @click.stop="onItemClick(key)">
<div class="clickable-data-container">
<backend-component-inspector-control-objectlist-record-title
:control="control"
:record="record"
:parent-obj="parentObj"
:obj="obj"
></backend-component-inspector-control-objectlist-record-title>
<button v-if="!inspectorPreferences.readOnly" @click.stop.prevent="onRemoveItemClick(key)" class="remove-row-btn"></button>
</div>
</td>
</tr>
</tbody>
</table>

<div class="inspector-padding-control-left table-control-links">
<a
href="#"
class="add-item-link"
:class="{disabled: inspectorPreferences.readOnly || !displayAddItem}"
:disabled="inspectorPreferences.readOnly || !displayAddItem"
@click.stop.prevent="onAddItemClick"
v-text="lang.addItem"
></a>
</div>
</div>


<div class="title-container">
<backend-component-loading-indicator v-if="loadingDynamicTitle"
size="tiny"
></backend-component-loading-indicator>
<template v-else>
<span class="record-color" v-if="recordColor" :style="{'background-color': recordColor}"></span>
<span v-text="recordTitle"></span>
</template>
</div>


<div>
<backend-component-loading-indicator v-if="loadingDynamicOptions"
size="tiny"
></backend-component-loading-indicator>

<backend-component-autocomplete
v-if="!loadingDynamicOptions"
ref="autocomplete"
:search="onSearch"
:getResultValue="getResultValue"
:placeholder="placeholder"
:defaultValue="initialValue"
:readonly="inspectorPreferences.readOnly"
v-bind:id="controlId"
@input="onInput"
@change="onChange"
@update="onUpdate"
@focus="onFocus"
@blur="onBlur"
>
<template #result="{ result, props }">
<li v-bind="props" class="autocomplete-result">
{{ result.value }}
</li>
</template>
</backend-component-autocomplete>
</div>


<div
data-lang-error-not-image="The selected file is not an image"
data-lang-placeholder="Click to select a file"
class="inspector-control-clearable"
>
<div
class="inspector-control clickable act-as-text-input"
:class="cssClass"
:tabindex="0"
@focus="onFocus"
@blur="onBlur"
ref="input"
v-text:value="displayedText"
v-bind:readonly="inspectorPreferences.readOnly"
@click.stop="onClick"
@keydown.stop="onKeyDown"
></div>

<button v-if="this.value && !inspectorPreferences.readOnly" @click.stop="onClearClick" class="clear-value"></button>
</div>


<div
data-default-button-text="OK"
>
<backend-component-modal
ref="modal"
:aria-labeled-by="modalTitleId"
:unique-key="uniqueId"
:size="size"
:store-position="true"
:resizable="resizableWidth ? 'horizontal' : false"
:resize-default-width="600"
:close-by-esc="!readOnly"
:modal-temporary-hidden="layoutUpdateData.modalTemporaryHidden"
@hidden="onHidden"
@resized="onResized"
@shown="onShown"
@enterkey="onEnterKey"
>
<template v-slot:content>
<div class="modal-header">
<h4 class="modal-title" v-bind:id="modalTitleId" v-text="title"></h4>
<button
@click.prevent="onCloseClick"
type="button"
class="btn-close"
v-bind:disabled="readOnly"
aria-label="Zamknij"
tabindex="0"
></button>
</div>
<div class="modal-body inspector-modal-host">
<backend-component-inspector
:data-schema="dataSchema"
:data="data"
:live-mode="liveMode"
:unique-id="uniqueId"
:layout-update-data="layoutUpdateData"
:read-only="readOnly"
ref="inspector"
>
</backend-component-inspector>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-primary btn-default-action"
data-default-focus
@click="onApplyClick"
v-text="primaryButtonText"
v-bind:disabled="readOnly"
></button>
<span class="button-separator">lub</span>
<button
class="btn btn-link text-muted"
:class="{disabled: readOnly}"
@click.prevent="onCancelClick"
>Anuluj</button>
</div>
</template>
</backend-component-modal>
</div>


<div
class="component-backend-splitter" :class="cssClass"
>
<div class="flex-layout-item fix splitter-first-panel" :style="firstPanelStyle" ref="firstPanel">
<slot name="first">
Left panel
</slot>
</div>

<div
class="flex-layout-item fix splitter-handle"
:class="{dragging: dragging}"
ref="handle"
@mousedown.stop="onHandleMouseDown"
></div>

<div class="flex-layout-item stretch relative">
<slot name="second">
Right panel
</slot>
</div>
</div>


<div
class="component-backend-tabs flex-layout-column"
:class="cssClass"
data-lang-close="Close Tab"
data-lang-close-all="Close All"
data-lang-close-others="Close Others"
data-lang-close-saved="Close Saved"
>
<div class="tablist-container flex-layout-item fix" v-show="!hideTabPanel">
<div class="flex-layout-row tablist-scrollable-container" :class="{'has-fixed-panel': supportsFullScreen && hasTabs}" ref="scrollableTabsContainer">
<div class="tabs-scrollable flex-layout-item stretch" ref="scrollable">
<div
class="tablist flex-layout-row"
role="tablist"
ref="tabList"
v-bind:aria-label="ariaLabel"
@keydown="onKeyDown"
>
<button
v-for="tab in tabs"
role="tab"
data-component-backend-tab
class="flex-layout-item"
:class="{
active: currentTabKey == tab.key,
stretch: tabsStyle == 'document',
fix: tabsStyle == 'form',
'has-icon': tab.icon || tab.fatalError,
'has-close-button': closeable
}"
v-bind:id="getTabId(tab, 'tab')"
v-bind:aria-controls="getTabId(tab, 'panel')"
v-bind:aria-selected="currentTabKey == tab.key ? 'true' : 'false'"
v-bind:tabindex="currentTabKey == tab.key ? 0 : -1"
v-bind:data-tooltip-text="getTooltipText(tab)"
@click.ignore="onClick(tab)"
@mouseup.middle="onMiddleClick(tab)"
@contextmenu.stop="onContextMenu($event, tab)"
>
<span
class="tab-icon"
:class="{'tab-error': tab.fatalError}"
v-if="tab.icon"
aria-hidden="true"
>
<span
class="tab-icon-background"
v-bind:style="getTabIconStyle(tab)"
>
<i
:class="tab.icon.cssClass"
></i>
</span>

<i class="backend-icon-background tab-error"></i>
</span>

<span v-text="tab.label" role="text"></span>

<span
class="backend-icon-background-pseudo close-tab"
:class="{'has-changes': tab.hasChanges}"
v-bind:tabindex="currentTabKey == tab.key ? 0 : -1"
v-if="closeable"
role="button"
aria-hidden="true"
aria-label="Close Tab"
v-bind:title="closeTooltip ? '' : 'Close Tab'"
v-bind:data-tooltip-text="closeTooltip"
v-bind:data-tooltip-hotkey="closeTooltipHotkey"
@click.stop.prevent="onCloseClick(tab)"
>✕</span>
</button>
</div>
</div>
<div class="flex-layout-item fix fixed-right tabs-toolbar" v-if="supportsFullScreen && hasTabs">
<div class="toolbar-container">
<button
class="backend-toolbar-button icon-only"
data-tooltip-text="Toggle Full Screen"
@click.stop.prevent="onToggleFullscreen"
>
<i :class="{'icon-fullscreen': !isFullScreen, 'icon-fullscreen-collapse': isFullScreen}"></i>
</button>
</div>
</div>
</div>

</div>

<template v-if="!noPanes">
<div
v-for="tab in tabs"
role="tabpanel"
tabindex="0"
:key="getTabUniqueKey(tab)"
v-show="currentTabKey == tab.key"
v-bind:id="getTabId(tab, 'panel')"
v-bind:aria-labelledby="getTabId(tab, 'tab')"
class="tabpanel flex-layout-item stretch relative"
:class="tabPanelCssClass"
>
<component
v-if="!useSlots"
:ref="getTabComponentRefName(tab)"
v-bind:is="tab.component"
:component-data="tab.componentData"
@tabfatalerror="onTabFatalError(tab)"
@tabkeychanged="onTabkeyChanged"
@tabclose="onHostedComponentTabClose(tab)"
></component>
<slot v-else :name="tab.key"></slot>
</div>
</template>

<slot v-if="!tabs.length" name="noTabsView"></slot>

<backend-component-dropdownmenu
:items="contextMenuItems"
:menu-id="contextMenuId"
:labeled-by-id="contextMenuLabeledById"
ref="contextmenu"
@command="onMenuItemCommand"
></backend-component-dropdownmenu>
</div>








<div
class="flex-layout-column component-backend-monaco-editor"
:class="cssClass"
data-configuration="{"vendorPath":"https:\/\/fun-multisite-ecom.colorland.tech\/modules\/backend\/vuecomponents\/monacoeditor\/assets\/vendor\/monaco","fontSize":"12px","tabSize":4,"useEmmet":true,"yamlSchemas":[{"uri":"https:\/\/fun-multisite-ecom.colorland.tech\/modules\/tailor\/assets\/js\/blueprint-yaml-schema.json","fileMatch":["*-blueprint.yaml"]}],"renderLineHighlight":"all","useTabStops":false,"renderIndentGuides":false,"renderWhitespace":"all","autoClosingBrackets":"languageDefined","autoClosingQuotes":"languageDefined","hover":{"delay":750},"wordWrap":"off","theme":"vs-dark"}"
>
<div class="flex-layout-item fix" v-if="showTabs">
<backend-component-tabs
:tabs="editorTabs"
:closeable="false"
:no-panes="true"
:container-css-class="tabsContainerCssClass"
:tooltips-enabled="false"
tabs-style="monaco-editor"
@tabselected="onTabSelected"
></backend-component-tabs>
</div>

<div class="flex-layout-item stretch position-relative h-100" style="overflow: hidden">
<div
class="flex-layout-column fill-container"
:class="editorContainerCssClass"
ref="editorContainer"
@dragover.capture="onDragOver"
@drop.capture="onDragDrop"
></div>
</div>
</div>



Gramatura papieru ma duże znaczenie dla plakatów reklamowych. Od tego zależy ich trwałość. Najlepszy papier na plakaty firmowe ma minimum 180 g/m2. W Voogo drukujemy plakaty reklamowe na papierze kredowym o grubości 200 g/m2.




Jak przechowywać plakaty firmowe?

Wysokiej jakości papier kredowy jakiego używamy do wydruku plakatów reklamowych należy przechowywać w suchym miejscu. Plakaty firmowe nie powinny być narażane na działanie promieni UV, szkodzi im także nadmierna wilgoć. Firmowa przestrzeń biurowa będzie odpowiednim miejscem.

Jaka czcionka na plakaty reklamowe?

Jeśli chcesz, aby Twoje plakaty reklamowe wyróżniły się w miejskiej przestrzeni, postaw na dużą i wyrazistą czcionkę. W plakatach dla firm możesz zestawić nawet 2 kroje – ozdobny i szeryfowy, by podkreślić najważniejsze informacje. Wykorzystaj czcionki dostępne w kreatorze plakatów Voogo, by urozmaicić swoje plakaty reklamowe.

Ile trwa realizacja plakatów?

Plakaty A3 realizujemy w ciągu 5 dni roboczych, po których następuje natychmiastowa wysyłka produktów do klienta.

Czy mogę wgrać do kreatora plakatów samodzielnie przygotowany projekt?

Możesz stworzyć u nas plakat A3 na podstawie wcześniej przygotowanego projektu. Jak to zrobić? Uruchom program do plakatów i wgraj wybraną przez siebie opcję.

Plakaty – pełna personalizacja produktów

Plakaty stanowią skuteczne narzędzia marketingowe. Umożliwiają przekazanie odbiorcy dowolnej treści o charakterze reklamowym. Są wykorzystywane w wielu różnych branżach, w tym m.in. w branży eventowej, ślubnej, a nawet weterynaryjnej czy medycznej. W naszej ofercie znajdziesz gotowe projekty plakatów do personalizacji, a także możliwość pełnego spersonalizowania elementów poprzez wykorzystanie pustego szablonu.

Plakat A3 – charakterystyka oferowanych produktów

Oferujemy plakat A3, czyli o wymiarach 297 mm x 420 mm. Jest on wykonany z grubego papieru wysokiej jakości. Dzięki temu produkt jest trwały. Może być stosowany wewnątrz pomieszczeń i na otwartych przestrzeniach, a mimo to na długo zachowa pierwotne kolory i strukturę.

 

Stosujemy druk cyfrowy, który pozwala na:

  • doskonałe odwzorowanie kolorów – dzięki temu plakat doskonale się prezentuje i przyciąga uwagę odbiorców;
  • utrwalenie treści nadruku na długo – plakat znakomicie wygląda, jest czytelny i trwały;
  • precyzyjne odwzorowanie kształtów – stosujemy druk oraz tusze, które umożliwiają wyraźne wyznaczenie konturów nawet w przypadku złożonych kształtów i grafik;
  • zrealizowanie plakatów o różnych kolorach – drukujemy plakaty w kolorach pastelowych, imitujących realne fotografie i wielu innych.

 

Każdy plakat A3, który realizujemy, precyzyjnie odzwierciedla projekt przesłany za pomocą naszego kreatora. Dbamy przy tym nie tylko o zastosowanie wysokiej jakości materiałów i sprawdzonych technik druku, ale również o powtarzalność elementów. Dzięki temu każdy zamówiony produkt ma deklarowane właściwości, np. rozmiary, barwy, rodzaj czcionki. 

Jakie plakaty oferujemy? W jaki sposób można je wykorzystać?

Oferujemy następujące rodzaje plakatów:

  • plakaty dla konkretnych branż – sprzedajemy plakaty dla branży muzycznej (reklamujące koncerty i tego typu wydarzenia), dla firm architektonicznych, weterynarzy czy dla branży medycznej;
  • plakaty  kolaże zdjęć – są doskonałym pomysłem na prezent dla bliskiej osoby. Można powiesić je również na ścianie w przedszkolu, przychodni medycznej czy u weterynarza, aby zaaranżować wnętrze w wybrany sposób;
  • plakaty z napisami – oferujemy m.in. plakaty z modlitwą, którą możesz powiesić w pokoju dziecka;
  • plakaty reklamujące miasta – tworzymy je w ramach współpracy z konkretnymi podmiotami rządowymi i samorządowymi, a także na zlecenie np. branży eventowej.

 

Plakat A3 służy przede wszystkim do celów marketingowych. Może reklamować konkretne wydarzenia, ale również firmy, produkty czy usługi. Może stanowić również przestrzeń do umieszczenia dowolnej treści: zdjęć, haseł motywacyjnych, misji danej firmy czy modlitwy, którą chce się mieć zawsze przy sobie.

Program do plakatów, w którym zaprojektujesz swój produkt, pozwala na dopasowanie układu i treści plakatu do swoich potrzeb.

Czy warto wykorzystywać plakaty we współczesnym marketingu?

Plakaty są skuteczną formą reklamy również we współczesnym marketingu. Pozwalają przede wszystkim zwiększyć widoczność w konkretnym obszarze. Za ich pomocą możesz poinformować o otwarciu restauracji, wystawieniu sztuki w teatrze czy poszerzeniu swojej oferty. Wśród lokalnych odbiorców szybko rozejdzie się wieść. Dzięki temu zaprosisz do siebie gości, zainteresujesz ich swoją ofertą, a w dłuższej perspektywie – zwiększysz zyski i zbudujesz bazę zaufanych klientów.

Plakat A3 doskonale wspiera kampanię promocyjną. Przyciąga uwagę odbiorców, oswaja z marką i utrwala przekaz. Może szokować, bawić, informować – w zależności od tego, jaką treść na nim umieścisz, osiągniesz zamierzony efekt. Ważne jest w tym wypadku to, aby dostosować treść na plakacie do kontekstu, a także konkretnej grupy docelowej.

W jakich branżach opłaca się wykorzystywać plakaty?

Plakat A3 sprawdzi się doskonale wszędzie tam, gdzie nadawcy konkretnej wiadomości zależy na dotarciu do lokalnej społeczności. Mogą z niego korzystać m.in. restauratorzy, budowlańcy, architekci, ale także organizatorzy imprez czy usługodawcy tacy jak np. fryzjerzy lub kosmetyczki. Nasz program do plakatów pozwala w każdym wypadku stworzyć projekt na miarę konkretnych potrzeb: pod względem czytelności treści i estetyki konkretnego przekazu.

Jak przygotować projekty plakatów?

Aby przygotować plakaty, wybierz konkretny szablon, np. szablon dla księgowej lub szablon dla psiego stylisty. Następnie w kreatorze uzupełnij treść, która ma się znaleźć na produkcie. Pamiętaj, aby po jej wpisaniu sprawdzić, czy na pewno nie ma literówek lub błędów stylistycznych.  To ważne, aby przekaz był dopracowany, czytelny i poprawny. Po przygotowaniu projektu przekaż nam go do realizacji, a my zajmiemy się resztą.
 
Co zrobić, jeśli żaden plakat A3 dostępny na stronie nie spełnia Twoich oczekiwań? Mamy nie tylko gotowe projekty. Znajdziesz u nas również pusty szablon, który możesz dowolnie zagospodarować i spersonalizować zgodnie z własnymi potrzebami. W trakcie pracy z kreatorem, zarówno w przypadku gotowego szablonu, jak i tego pustego, możesz umieścić na plakacie wybraną treść, zdjęcie i zdecydować o układzie. Cała procedura jest szybka i intuicyjna. Gotowe plakaty warto obejrzeć, aby się upewnić, że są czytelne i przyciągają uwagę.

Przedsiębiorcy tacy jak Ty wybierają Voogo

Sprawdź dlaczego i dołącz do grona zadowolonych Klientów!
Beata 25.05.2016
Zweryfikowana

łatwo i przyjemnie

Czytaj więcej
krzychu 25.05.2016
Zweryfikowana

prosty praktyczny łatwy w obsłudze

Czytaj więcej
Konrad 07.04.2017
Zweryfikowana

Super !

Czytaj więcej
Dorota 16.12.2023
Zweryfikowana

Kubek z własnym nadrukiem. Jest bardzo dobrej jakości, żywe i nasycone kolory , Szybką realizacja zlecenia. Jestem bardzo zadowolona z jakości wykonania. Polecam

Czytaj więcej
Kasia 25.05.2016
Zweryfikowana

bardzo przyjazny w obsłudze

Czytaj więcej
tomczak 25.05.2016
Zweryfikowana

Program jest szybki i intuicyjny

Czytaj więcej
Marek 25.05.2016
Zweryfikowana

Bardzo dobry.

Czytaj więcej
Zbyszek 25.05.2016
Zweryfikowana

Przyjazny kreator. Dzięki.

Czytaj więcej
MBike Michał 12.05.2025
Zweryfikowana

poraz kolejny świetnie skrojone zamówienie, przystępna cena, dobry kontakt i mega szybka wysyłka

Czytaj więcej
dawid 25.05.2016
Zweryfikowana

Wszystko ok

Czytaj więcej
MS 23.09.2024
Zweryfikowana

Fachowa i szybka obsługa. Wizytówki zrobione i wysłane ekspresowo. Bardzo dziękuję Pani z biura, która bardzo szybko rozwiązała problem. Szkoda tylko, że nie można wrócić do starych projektów.

Czytaj więcej
Jacek Osik 25.05.2016
Zweryfikowana

ok........................................

Czytaj więcej
Marek 20.12.2025
Zweryfikowana

Polecam współpracę z tą firmą. Zamówiłem wizytówki już kolejny raz, ale niestety doszło do pomyłki literowej z mojej strony, firma wzięła to na swoją klatę i w zasadzie za koszty materiałów wydrukowali mi kolejną partię 400 wizytówek... profesjonalnie, estetycznie i elegancko :) i szybko... Jestem mega zadowolony... dziękuję :)

Czytaj więcej
Marta 25.05.2016
Zweryfikowana

Super!

Czytaj więcej
Beata 09.06.2024
Zweryfikowana

Od lat zamawiam wizytówki właśnie tu, polecam. Świetna jakość za przystępną cenę oraz błyskawiczne wykonanie i dostawa. Miałam małe trudności z dopasowaniem mojego projektu w ramkę, ale poza tym wszystko bez zarzutu.

Czytaj więcej
Iwona Kłys - Politowska 25.05.2016
Zweryfikowana

Bardzo wygodny i intuicyjny.

Czytaj więcej
Dabek 25.05.2016
Zweryfikowana

wszystko ok

Czytaj więcej
rafsapo 25.05.2016
Zweryfikowana

wygodny w obsłudze

Czytaj więcej
4.7 z 5.0
Wynik podany jest na podstawie 284 opinii.
Dodaj opinie
Zobacz wszystkie
Wszystkie opinie pochodzą od Klientów, którzy dokonali zakupu fotoprezentu.
Najbardziej pomocne oceny, które doradzą Ci najlepiej prezentuję powyżej.