]> BookStack Code Mirror - bookstack/blob - resources/views/components/image-manager.blade.php
Started work on revisions in image manager
[bookstack] / resources / views / components / image-manager.blade.php
1 <div id="image-manager" image-type="{{ $imageType }}" uploaded-to="{{ $uploaded_to or 0 }}">
2     <div overlay v-cloak @click="hide">
3         <div class="popup-body" @click.stop="">
4
5             <div class="popup-header primary-background">
6                 <div class="popup-title">{{ trans('components.image_select') }}</div>
7                 <button class="overlay-close neg corner-button button" @click="hide()">x</button>
8             </div>
9
10             <div class="flex-fill image-manager-body">
11
12                 <div class="image-manager-content">
13                     <div v-if="imageType === 'gallery'" class="container">
14                         <div class="image-manager-header row faded-small nav-tabs">
15                             <div class="col-xs-4 tab-item" title="{{ trans('components.image_all_title') }}" :class="{selected: (view=='all')}" @click="setView('all')">@icon('images') {{ trans('components.image_all') }}</div>
16                             <div class="col-xs-4 tab-item" title="{{ trans('components.image_book_title') }}" :class="{selected: (view=='book')}" @click="setView('book')">@icon('book', ['class' => 'text-book svg-icon']) {{ trans('entities.book') }}</div>
17                             <div class="col-xs-4 tab-item" title="{{ trans('components.image_page_title') }}" :class="{selected: (view=='page')}" @click="setView('page')">@icon('page', ['class' => 'text-page svg-icon']) {{ trans('entities.page') }}</div>
18                         </div>
19                     </div>
20                     <div v-show="view === 'all'" >
21                         <form @submit.prevent="searchImages" class="contained-search-box">
22                             <input placeholder="{{ trans('components.image_search_hint') }}" v-model="searchTerm">
23                             <button :class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" @click="cancelSearch()" class="text-button cancel">@icon('close')</button>
24                             <button title="{{ trans('common.search') }}" class="text-button">@icon('search')</button>
25                         </form>
26                     </div>
27                     <div class="image-manager-list">
28                         <div v-if="images.length > 0" v-for="(image, idx) in images">
29                             <div class="image anim fadeIn" :style="{animationDelay: (idx > 26) ? '160ms' : ((idx * 25) + 'ms')}"
30                                  :class="{selected: (image==selectedImage)}" @click="imageSelect(image)">
31                                 <img :src="image.thumbs.gallery" :alt="image.title" :title="image.name">
32                                 <div class="image-meta">
33                                     <span class="name" v-text="image.name"></span>
34                                     <span class="date">{{ trans('components.image_uploaded', ['uploadedDate' => "{{ getDate(image.created_at) }" . "}"]) }}</span>
35                                 </div>
36                             </div>
37                         </div>
38                         <div class="load-more" v-show="hasMore" @click="fetchData">{{ trans('components.image_load_more') }}</div>
39                     </div>
40                 </div>
41
42                 <div class="image-manager-sidebar">
43
44                     <dropzone ref="dropzone" placeholder="{{ trans('components.image_dropzone') }}" :upload-url="uploadUrl" :uploaded-to="uploadedTo" @success="uploadSuccess"></dropzone>
45
46                     <div class="inner">
47
48                         <div class="image-manager-details anim fadeIn" v-if="selectedImage">
49
50                             <div v-if="selectedRevision" class="image-manager-viewer">
51                                 <a :href="selectedRevision.url" target="_blank" style="display: block;">
52                                     <img :src="selectedRevision.url" :alt="selectedImage.name"
53                                          :title="selectedImage.name">
54                                 </a>
55                             </div>
56
57                             <form @submit.prevent="saveImageDetails" v-if="!selectedRevision">
58                                 <div class="image-manager-viewer">
59                                     <a :href="selectedImage.url" target="_blank" style="display: block;">
60                                         <img :src="selectedImage.thumbs.display" :alt="selectedImage.name"
61                                              :title="selectedImage.name">
62                                     </a>
63                                 </div>
64                                 <div class="form-group">
65                                     <label for="name">{{ trans('components.image_image_name') }}</label>
66                                     <input id="name" class="input-base" name="name" v-model="selectedImage.name">
67                                 </div>
68                             </form>
69
70                             <div  v-if="!selectedRevision" class="clearfix">
71                                 <div class="float left">
72                                     <button type="button" class="button icon outline" @click="deleteImage">@icon('delete')</button>
73
74                                 </div>
75                                 <button class="button anim fadeIn float right" v-show="selectedImage" @click="callbackAndHide(selectedImage)">
76                                     {{ trans('components.image_select_image') }}
77                                 </button>
78                                 <div class="clearfix"></div>
79                                 <div v-show="dependantPages">
80                                     <p class="text-neg text-small">
81                                         {{ trans('components.image_delete_used') }}
82                                     </p>
83                                     <ul class="text-neg">
84                                         <li v-for="page in dependantPages">
85                                             <a :href="page.url" target="_blank" class="text-neg" v-text="page.name"></a>
86                                         </li>
87                                     </ul>
88                                 </div>
89                                 <div v-show="deleteConfirm" class="text-neg text-small">
90                                     {{ trans('components.image_delete_confirm') }}
91                                 </div>
92                             </div>
93
94                             {{--Revisions View--}}
95                             <div v-show="imageType === 'drawio'">
96                                 <hr>
97                                 <h5>Revisions</h5>
98                                 <table v-if="revisions.length > 0" class="table">
99                                     <tr v-for="(revision, index) in revisions" :key="revision.id" :class="{'primary-background-light': selectedRevision === revision}" @click="selectRevision(revision)">
100                                         <td>
101                                             <span v-text="revision.revision"></span>
102                                             <span class="italic text-muted" v-if="index === 0 && revision.path === selectedImage.path">(Current)</span>
103                                         </td>
104                                         <td class="text-small">
105                                             <span v-text="(new Date(revision.created_at + 'Z')).toLocaleTimeString()"></span>
106                                             <br>
107                                             <span v-text="(new Date(revision.created_at + 'Z')).toLocaleDateString()"></span>
108                                         </td>
109                                     </tr>
110                                 </table>
111                                 <p v-if="revisions.length === 0" class="text-muted italic">
112                                     No revisions found
113                                 </p>
114                             </div>
115
116                         </div>
117
118
119
120                     </div>
121                 </div>
122
123             </div>
124
125         </div>
126     </div>
127 </div>