diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js index 94e281512..4e1bb0dfd 100644 --- a/resources/assets/js/directives.js +++ b/resources/assets/js/directives.js @@ -271,8 +271,6 @@ module.exports = function (ngApp, events) { scope.mdModel = content; scope.mdChange(markdown(content)); - console.log('test'); - element.on('change input', (event) => { content = element.val(); $timeout(() => { @@ -304,6 +302,7 @@ module.exports = function (ngApp, events) { const input = element.find('[markdown-input] textarea').first(); const display = element.find('.markdown-display').first(); const insertImage = element.find('button[data-action="insertImage"]'); + const insertEntityLink = element.find('button[data-action="insertEntityLink"]') let currentCaretPos = 0; @@ -355,6 +354,13 @@ module.exports = function (ngApp, events) { input[0].selectionEnd = caretPos + ('; return; } + + // Insert entity link shortcut + if (event.which === 75 && event.ctrlKey && event.shiftKey) { + showLinkSelector(); + return; + } + // Pass key presses to controller via event scope.$emit('editor-keydown', event); }); @@ -370,6 +376,26 @@ module.exports = function (ngApp, events) { }); }); + function showLinkSelector() { + window.showEntityLinkSelector((entity) => { + let selectionStart = currentCaretPos; + let selectionEnd = input[0].selectionEnd; + let textSelected = (selectionEnd !== selectionStart); + let currentContent = input.val(); + + if (textSelected) { + let selectedText = currentContent.substring(selectionStart, selectionEnd); + let linkText = `[${selectedText}](${entity.link})`; + input.val(currentContent.substring(0, selectionStart) + linkText + currentContent.substring(selectionEnd)); + } else { + let linkText = ` [${entity.name}](${entity.link}) `; + input.val(currentContent.substring(0, selectionStart) + linkText + currentContent.substring(selectionStart)) + } + input.change(); + }); + } + insertEntityLink.click(showLinkSelector); + } } }]); diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index eb2750965..ace0dcdd2 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -140,6 +140,11 @@ $(function () { $(this).fadeOut(240); }); + $('.markdown-display').on('click', 'a', function(event) { + event.preventDefault(); + window.open($(this).attr('href')); + }); + }); // Page specific items diff --git a/resources/views/pages/edit.blade.php b/resources/views/pages/edit.blade.php index ad569a327..58df580a5 100644 --- a/resources/views/pages/edit.blade.php +++ b/resources/views/pages/edit.blade.php @@ -19,22 +19,9 @@ </div> + @include('partials/image-manager', ['imageType' => 'gallery', 'uploaded_to' => $page->id]) - - <div id="entity-selector-wrap"> - <div class="overlay" entity-link-selector> - <div class="popup-body small flex-child"> - <div class="popup-header primary-background"> - <div class="popup-title">Entity Select</div> - <button type="button" class="corner-button neg button">x</button> - </div> - @include('partials/entity-selector', ['name' => 'entity-selector']) - <div class="popup-footer"> - <button type="button" disabled="true" class="button entity-link-selector-confirm pos corner-button">Select</button> - </div> - </div> - </div> - </div> + @include('partials/entity-selector-popup') <script> (function() { diff --git a/resources/views/pages/form.blade.php b/resources/views/pages/form.blade.php index 366316b33..e3c145aa2 100644 --- a/resources/views/pages/form.blade.php +++ b/resources/views/pages/form.blade.php @@ -73,6 +73,8 @@ <span class="float left">Editor</span> <div class="float right buttons"> <button class="text-button" type="button" data-action="insertImage"><i class="zmdi zmdi-image"></i>Insert Image</button> + | + <button class="text-button" type="button" data-action="insertEntityLink"><i class="zmdi zmdi-link"></i>Insert Entity Link</button> </div> </div> diff --git a/resources/views/partials/entity-selector-popup.blade.php b/resources/views/partials/entity-selector-popup.blade.php new file mode 100644 index 000000000..b9166896a --- /dev/null +++ b/resources/views/partials/entity-selector-popup.blade.php @@ -0,0 +1,14 @@ +<div id="entity-selector-wrap"> + <div class="overlay" entity-link-selector> + <div class="popup-body small flex-child"> + <div class="popup-header primary-background"> + <div class="popup-title">Entity Select</div> + <button type="button" class="corner-button neg button popup-close">x</button> + </div> + @include('partials/entity-selector', ['name' => 'entity-selector']) + <div class="popup-footer"> + <button type="button" disabled="true" class="button entity-link-selector-confirm pos corner-button">Select</button> + </div> + </div> + </div> +</div> \ No newline at end of file