]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'v0.11'
authorDan Brown <redacted>
Sun, 14 Aug 2016 12:09:44 +0000 (13:09 +0100)
committerDan Brown <redacted>
Sun, 14 Aug 2016 12:09:44 +0000 (13:09 +0100)
1  2 
.travis.yml
app/Repos/PageRepo.php
app/Services/ImageService.php
resources/assets/js/directives.js
resources/assets/js/global.js
resources/assets/js/pages/page-form.js
resources/views/pages/form.blade.php
resources/views/pages/restrictions.blade.php
resources/views/pages/revisions.blade.php
tests/Entity/EntityTest.php

diff --cc .travis.yml
index 83e9e10f5edff887590f9f3d7cbe8217252a4fc8,83e9e10f5edff887590f9f3d7cbe8217252a4fc8..bea8d179597f920b1fa59ebf9249d5faf1e15305
@@@ -25,6 -25,6 +25,7 @@@ before_script
    - composer config -g github-oauth.github.com $GITHUB_ACCESS_TOKEN
    - phpenv config-rm xdebug.ini
    - composer self-update
++  - composer dump-autoload --no-interaction
    - composer install --prefer-dist --no-interaction
    - npm install
    - ./node_modules/.bin/gulp
Simple merge
Simple merge
Simple merge
index eeb1e4ea735c75d6e25e2f4024ee0b2b4186224d,1c300ad26b209a671146bc657e2176308823c2bb..3a107afa8d29584fdf397fadee2fefac1d95135c
@@@ -31,8 -35,9 +39,9 @@@ class Events 
          return this;
      }
  };
 -window.Events = Events;
 +window.Events = new Events();
  
  var services = require('./services')(ngApp, Events);
  var directives = require('./directives')(ngApp, Events);
  var controllers = require('./controllers')(ngApp, Events);
index b2d5f0c5c0bd25c6d5a0a21c3cd366d0d14bd499,f8b314e9cb914e49ddbc214054af04988d086237..86678a1bada517ce3156569b1bf57f5a5ba223f2
@@@ -1,60 -1,3 +1,60 @@@
-             xhr.open('POST', '/images/gallery/upload');
 +"use strict";
 +
 +function editorPaste(e) {
 +    if (!e.clipboardData) return
 +    var items = e.clipboardData.items;
 +    if (!items) return;
 +    for (var i = 0; i < items.length; i++) {
 +        if (items[i].type.indexOf("image") !== -1) {
 +
 +            var file = items[i].getAsFile();
 +            var formData = new FormData();
 +            var ext = 'png';
 +            var xhr = new XMLHttpRequest();
 +
 +            if (file.name) {
 +                var fileNameMatches = file.name.match(/\.(.+)$/);
 +                if (fileNameMatches) {
 +                    ext = fileNameMatches[1];
 +                }
 +            }
 +
 +            var id = "image-" + Math.random().toString(16).slice(2);
 +            editor.execCommand('mceInsertContent', false, '<img src="/loading.gif" id="' + id + '">');
 +
 +            var remoteFilename = "image-" + Date.now() + "." + ext;
 +            formData.append('file', file, remoteFilename);
 +            formData.append('_token', document.querySelector('meta[name="token"]').getAttribute('content'));
 +
++            xhr.open('POST', window.baseUrl('/images/gallery/upload'));
 +            xhr.onload = function () {
 +                if (xhr.status === 200 || xhr.status === 201) {
 +                    var result = JSON.parse(xhr.responseText);
 +                    editor.dom.setAttrib(id, 'src', result.url);
 +                } else {
 +                    console.log('An error occured uploading the image');
 +                    console.log(xhr.responseText);
 +                    editor.dom.remove(id);
 +                }
 +            };
 +            xhr.send(formData);
 +        }
 +    }
 +}
 +
 +function registerEditorShortcuts(editor) {
 +    // Headers
 +    for (let i = 1; i < 5; i++) {
 +        editor.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
 +    }
 +
 +    // Other block shortcuts
 +    editor.addShortcut('ctrl+q', '', ['FormatBlock', false, 'blockquote']);
 +    editor.addShortcut('ctrl+d', '', ['FormatBlock', false, 'p']);
 +    editor.addShortcut('ctrl+e', '', ['FormatBlock', false, 'pre']);
 +    editor.addShortcut('ctrl+s', '', ['FormatBlock', false, 'code']);
 +}
 +
  var mceOptions = module.exports = {
      selector: '#html-editor',
      content_css: [
index a5558f8e435f6178cb3f2de25ab92b954bc9328f,18a9868c7aecd5734acedcb89df35aa8b063cde5..366316b339cf2d472922907dc3a6d93eb553b3c5
                                  <a ng-click="forceDraftSave()" class="text-pos"><i class="zmdi zmdi-save"></i>Save Draft</a>
                              </li>
                              <li ng-if="isNewPageDraft">
-                                 <a href="{{$model->getUrl()}}/delete" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete Draft</a>
+                                 <a href="{{ $model->getUrl('/delete') }}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete Draft</a>
                              </li>
 +                            <li>
 +                                <a type="button" ng-if="isUpdateDraft" ng-click="discardDraft()" class="text-neg"><i class="zmdi zmdi-close-circle"></i>Discard Draft</a>
 +                            </li>
                          </ul>
                      </div>
                  </div>
index 8dccc021eb556d8008c16a294bb004707029d692,8eca486c3d13ca8f5bdc50cc70addc7c9f62cbbf..bd88919dfa83c23571e723dca0bcdd1d74ef99c9
@@@ -16,7 -16,7 +16,7 @@@
                              </a>
                          @endif
                          <span class="sep">&raquo;</span>
-                         <a href="{{$page->getUrl()}}" class="text-page text-button"><i class="zmdi zmdi-file"></i>{{ $page->getShortName() }}</a>
 -                        <a href="{{ $page->getUrl() }}" class="text-book text-button"><i class="zmdi zmdi-file"></i>{{ $page->getShortName() }}</a>
++                        <a href="{{ $page->getUrl() }}" class="text-page text-button"><i class="zmdi zmdi-file"></i>{{ $page->getShortName() }}</a>
                      </div>
                  </div>
              </div>
index d92b97d629234cf64b324d6178f0b708ba4538d5,03fb23673c09f0fd7c935fe48e1d8ce4813ce4f1..926affffc3824d969518ae57383ed19a53726b00
@@@ -5,20 -5,13 +5,20 @@@
      <div class="faded-small toolbar">
          <div class="container">
              <div class="row">
 -                <div class="col-md-6 faded">
 +                <div class="col-sm-12 faded">
                      <div class="breadcrumbs">
-                         <a href="{{$page->book->getUrl()}}" class="text-book text-button"><i class="zmdi zmdi-book"></i>{{ $page->book->getShortName() }}</a>
 -                        <a href="{{ $page->getUrl() }}" class="text-primary text-button"><i class="zmdi zmdi-arrow-left"></i>Back to page</a>
++                        <a href="{{ $page->book->getUrl() }}" class="text-book text-button"><i class="zmdi zmdi-book"></i>{{ $page->book->getShortName() }}</a>
 +                        @if($page->hasChapter())
 +                            <span class="sep">&raquo;</span>
 +                            <a href="{{ $page->chapter->getUrl() }}" class="text-chapter text-button">
 +                                <i class="zmdi zmdi-collection-bookmark"></i>
-                                 {{$page->chapter->getShortName()}}
++                                {{ $page->chapter->getShortName() }}
 +                            </a>
 +                        @endif
 +                        <span class="sep">&raquo;</span>
-                         <a href="{{$page->getUrl()}}" class="text-page text-button"><i class="zmdi zmdi-file"></i>{{ $page->getShortName() }}</a>
++                        <a href="{{ $page->getUrl() }}" class="text-page text-button"><i class="zmdi zmdi-file"></i>{{ $page->getShortName() }}</a>
                      </div>
                  </div>
 -                <div class="col-md-6 faded">
 -                </div>
              </div>
          </div>
      </div>
  
              <table class="table">
                  <tr>
 -                    <th width="40%">Name</th>
 -                    <th colspan="2" width="20%">Created By</th>
 -                    <th width="20%">Revision Date</th>
 -                    <th width="20%">Actions</th>
 +                    <th width="25%">Name</th>
 +                    <th colspan="2" width="10%">Created By</th>
 +                    <th width="15%">Revision Date</th>
 +                    <th width="25%">Changelog</th>
 +                    <th width="15%">Actions</th>
                  </tr>
 -                @foreach($page->revisions as $revision)
 +                @foreach($page->revisions as $index => $revision)
                      <tr>
--                        <td>{{$revision->name}}</td>
++                        <td>{{ $revision->name }}</td>
                          <td style="line-height: 0;">
                              @if($revision->createdBy)
--                                <img class="avatar" src="{{ $revision->createdBy->getAvatar(30) }}" alt="{{$revision->createdBy->name}}">
++                                <img class="avatar" src="{{ $revision->createdBy->getAvatar(30) }}" alt="{{ $revision->createdBy->name }}">
                              @endif
                          </td>
--                        <td> @if($revision->createdBy) {{$revision->createdBy->name}} @else Deleted User @endif</td>
--                        <td><small>{{$revision->created_at->format('jS F, Y H:i:s')}} <br> ({{$revision->created_at->diffForHumans()}})</small></td>
-                         <td>{{$revision->summary}}</td>
 -                        <td>
 -                            <a href="{{ $revision->getUrl() }}" target="_blank">Preview</a>
 -                            <span class="text-muted">&nbsp;|&nbsp;</span>
 -                            <a href="{{ $revision->getUrl('/restore') }}">Restore</a>
 -                        </td>
++                        <td> @if($revision->createdBy) {{ $revision->createdBy->name }} @else Deleted User @endif</td>
++                        <td><small>{{ $revision->created_at->format('jS F, Y H:i:s') }} <br> ({{ $revision->created_at->diffForHumans() }})</small></td>
++                        <td>{{ $revision->summary }}</td>
 +                        @if ($index !== 0)
 +                            <td>
-                                 <a href="{{$revision->getUrl()}}" target="_blank">Preview</a>
++                                <a href="{{ $revision->getUrl() }}" target="_blank">Preview</a>
 +                                <span class="text-muted">&nbsp;|&nbsp;</span>
-                                 <a href="{{$revision->getUrl()}}/restore">Restore</a>
++                                <a href="{{ $revision->getUrl() }}/restore">Restore</a>
 +                            </td>
 +                        @else
 +                            <td><a target="_blank" href="{{ $page->getUrl() }}"><i>Current Version</i></a></td>
 +                        @endif
                      </tr>
                  @endforeach
              </table>
Simple merge