]> BookStack Code Mirror - bookstack/commitdiff
Added logo selector
authorDan Brown <redacted>
Wed, 7 Oct 2015 22:17:48 +0000 (23:17 +0100)
committerDan Brown <redacted>
Wed, 7 Oct 2015 22:17:48 +0000 (23:17 +0100)
gulpfile.js
package.json
resources/assets/js/global.js
resources/assets/js/pages/book-show.js [moved from resources/assets/js/book-dashboard.js with 96% similarity]
resources/assets/js/templates/image-picker.html [new file with mode: 0644]
resources/assets/sass/_buttons.scss
resources/assets/sass/_header.scss
resources/assets/sass/_text.scss
resources/views/base.blade.php
resources/views/books/show.blade.php
resources/views/settings/index.blade.php

index 1494c2a5b71219b94ac7735419594c4099214ce4..7974350d147c52772f98bc3a87f9db0b186cac08 100644 (file)
@@ -1,19 +1,8 @@
 var elixir = require('laravel-elixir');
 
-/*
- |--------------------------------------------------------------------------
- | Elixir Asset Management
- |--------------------------------------------------------------------------
- |
- | Elixir provides a clean, fluent API for defining some basic Gulp tasks
- | for your Laravel application. By default, we are compiling the Sass
- | file for our application, as well as publishing vendor resources.
- |
- */
 
 elixir(function(mix) {
     mix.sass('styles.scss');
     mix.scripts('image-manager.js', 'public/js/image-manager.js');
-    mix.scripts('book-dashboard.js', 'public/js/book-dashboard.js');
-    mix.scripts(['jquery-extensions.js', 'global.js'], 'public/js/common.js');
+    mix.browserify(['jquery-extensions.js', 'pages/book-show.js' ,'global.js'], 'public/js/common.js');
 });
index e28a44f232b44b89b214c085727ed05e217a9dcc..5106741e3cf514543012b421d27d84a28efddd75 100644 (file)
@@ -2,10 +2,12 @@
   "private": true,
   "devDependencies": {
     "gulp": "^3.8.8",
-    "laravel-elixir-livereload": "0.0.3"
+    "insert-css": "^0.2.0",
+    "laravel-elixir-livereload": "1.1.3"
   },
   "dependencies": {
     "bootstrap-sass": "^3.0.0",
-    "laravel-elixir": "^2.0.0"
+    "laravel-elixir": "^3.3.1",
+    "vue": "^0.12.16"
   }
 }
index a75a4dc7455cfeed800a5abcb76d16da784fd998..66326da2352d9fb0edb2d0e100360f21f9635e4d 100644 (file)
@@ -16,4 +16,36 @@ $(function () {
         $(this).closest('.chapter').find('.inset-list').slideToggle(180);
     });
 
+});
+
+
+// Vue Components
+
+Vue.component('image-picker', {
+    template: require('./templates/image-picker.html'),
+    props: ['currentImage', 'name', 'imageClass'],
+    data: function() {
+        return {
+            image: this.currentImage
+        }
+    },
+    methods: {
+        showImageManager: function(e) {
+            var _this = this;
+            ImageManager.show(function(image) {
+                _this.image = image.url;
+            });
+        },
+        reset: function() {
+            this.image = '';
+        },
+        remove: function() {
+            this.image = 'none';
+        }
+    }
+});
+
+// Global Vue Instance
+var app = new Vue({
+    el: '#app'
 });
\ No newline at end of file
similarity index 96%
rename from resources/assets/js/book-dashboard.js
rename to resources/assets/js/pages/book-show.js
index 1315843abe6ccb27736ebd90028f3752c216d62c..3d5d352555ca68c98d2149ea0944048b16c39340 100644 (file)
@@ -1,4 +1,5 @@
-var bookDashboard = new Vue({
+
+new Vue({
     el: '#book-dashboard',
     data: {
         searching: false,
diff --git a/resources/assets/js/templates/image-picker.html b/resources/assets/js/templates/image-picker.html
new file mode 100644 (file)
index 0000000..82f0ef7
--- /dev/null
@@ -0,0 +1,10 @@
+
+<div class="image-picker">
+    <div>
+        <img v-if="image && image !== 'none'" v-attr="src: image, class: imageClass" alt="Image Preview">
+    </div>
+    <button class="button" type="button" v-on="click: showImageManager">Select Image</button>
+    <br>
+    <button class="text-button" v-on="click: reset" type="button">Reset</button> <span class="sep">|</span> <button class="text-button neg" v-on="click: remove" type="button">Remove</button>
+    <input type="hidden" v-attr="name: name, id: name" v-model="image">
+</div>
\ No newline at end of file
index 19c7b84e4b8d8daf2147d3de87e10ae104025898..bafb68165d05d464ae5660f842efd8740fcc389f 100644 (file)
@@ -59,6 +59,9 @@ $button-border-radius: 2px;
   &:focus, &:active {
     outline: 0;
   }
+  &.neg {
+    color: $negative;
+  }
 }
 
 .button-group {
index adc1df1971d53a6a019113348a15edc66d156b52..60a14fde80faa4da7b370f1a45bae1769b76b905 100644 (file)
@@ -91,9 +91,9 @@ form.search-box {
   line-height: 1;
 }
 .logo-image {
-  padding: $-m $-s $-m 0;
+  margin: $-m $-s $-m 0;
   vertical-align: top;
-  height: 75px;
+  height: 43px;
 }
 
 .dropdown-container {
index 3dc48efc87604dc0a160857dd46baee45cac5065..d50134522d4b38ba1c0ef02e1dacd4298616cbd3 100644 (file)
@@ -256,6 +256,11 @@ ul {
   }
 }
 
+span.sep {
+  color: #BBB;
+  padding: 0 $-xs;
+}
+
 .list > * {
   display: block;
 }
@@ -265,4 +270,5 @@ ul {
   */
 i {
   padding-right: $-xs;
-}
\ No newline at end of file
+}
+
index 39bbfee321bb8ad75863ffad9a5c594d449b2817..de774042ac6e170854fc325400a9ab8b245b8775 100644 (file)
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
     <script src="/bower/jquery-sortable/source/js/jquery-sortable.js"></script>
     <script src="/bower/dropzone/dist/min/dropzone.min.js"></script>
-    <script src="/js/common.js"></script>
     <script src="/bower/vue/dist/vue.min.js"></script>
     <script src="/bower/vue-resource/dist/vue-resource.min.js"></script>
 
     @yield('head')
 </head>
-<body class="@yield('body-class')">
+<body class="@yield('body-class')" id="app">
 
     @if(Session::has('success'))
         <div class="notification anim pos">
@@ -41,7 +40,9 @@
             <div class="row">
                 <div class="col-md-4 col-sm-3">
                     <a href="/" class="logo">
-                        <img class="logo-image" src="/logo.png" alt="Logo">
+                        @if(Setting::get('app-logo', '') !== 'none')
+                            <img class="logo-image" src="{{ Setting::get('app-logo', '') === '' ? '/logo.png' : Setting::get('app-logo', '') }}" alt="Logo">
+                        @endif
                         <span class="logo-text">{{ Setting::get('app-name', 'BookStack') }}</span>
                     </a>
                 </div>
@@ -90,5 +91,6 @@
     </section>
 
 @yield('bottom')
+<script src="/js/common.js"></script>
 </body>
 </html>
index d8001b19a8e5f1062a97d625df2235aba4459e1a..edd8a9b47a07abd0af0773f9a0d57c845cf5bb40 100644 (file)
@@ -91,6 +91,4 @@
         </div>
     </div>
 
-    <script src="/js/book-dashboard.js"></script>
-
 @stop
\ No newline at end of file
index 5e484be65ed570b6dfb7d9b54ee5fd7603f8541b..f6ecadce0abcc43320d27784c8f50cc6da2629a7 100644 (file)
         {!! csrf_field() !!}
 
         <h3>App Settings</h3>
-        <div class="form-group">
-            <label for="setting-app-name">Application name</label>
-            <input type="text" value="{{ Setting::get('app-name', 'BookStack') }}" name="setting-app-name" id="setting-app-name">
-        </div>
-        <div class="form-group">
-            <label for="setting-app-public">Allow public viewing?</label>
-            <label><input type="radio" name="setting-app-public" @if(Setting::get('app-public')) checked @endif value="true"> Yes</label>
-            <label><input type="radio" name="setting-app-public" @if(!Setting::get('app-public')) checked @endif value="false"> No</label>
+
+        <div class="row">
+            <div class="col-md-6">
+                <div class="form-group">
+                    <label for="setting-app-name">Application name</label>
+                    <input type="text" value="{{ Setting::get('app-name', 'BookStack') }}" name="setting-app-name" id="setting-app-name">
+                </div>
+                <div class="form-group">
+                    <label for="setting-app-public">Allow public viewing?</label>
+                    <label><input type="radio" name="setting-app-public" @if(Setting::get('app-public')) checked @endif value="true"> Yes</label>
+                    <label><input type="radio" name="setting-app-public" @if(!Setting::get('app-public')) checked @endif value="false"> No</label>
+                </div>
+            </div>
+            <div class="col-md-6">
+                <div class="form-group" id="logo-control">
+                    <label for="setting-app-logo">Application Logo</label>
+                    <p class="small">This image should be 43px in height. </p>
+                    <image-picker current-image="{{ Setting::get('app-logo', '') }}" name="setting-app-logo" image-class="logo-image"></image-picker>
+                </div>
+            </div>
         </div>
 
+
+
         <hr class="margin-top">
 
         <h3>Registration Settings</h3>
@@ -70,4 +84,9 @@
 
 </div>
 
+@stop
+
+@section('bottom')
+    @include('pages/image-manager')
+    <script src="/js/image-manager.js"></script>
 @stop
\ No newline at end of file