mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-06-01 22:39:13 +08:00
Added core code-lang-favourites JS, PHP & CSS logic
- Got the functionality now working to favourite items and store that status within the system for the user. - Improved CSS display for usability.
This commit is contained in:
@ -15,12 +15,14 @@ class CodeEditor {
|
||||
this.languageInput = this.$refs.languageInput;
|
||||
this.historyDropDown = this.$refs.historyDropDown;
|
||||
this.historyList = this.$refs.historyList;
|
||||
this.favourites = new Set(this.$opts.favourites.split(','));
|
||||
|
||||
this.callback = null;
|
||||
this.editor = null;
|
||||
this.history = {};
|
||||
this.historyKey = 'code_history';
|
||||
this.setupListeners();
|
||||
this.setupFavourites();
|
||||
}
|
||||
|
||||
setupListeners() {
|
||||
@ -49,6 +51,43 @@ class CodeEditor {
|
||||
});
|
||||
}
|
||||
|
||||
setupFavourites() {
|
||||
for (const button of this.languageLinks) {
|
||||
this.setupFavouritesForButton(button);
|
||||
}
|
||||
|
||||
this.sortLanguageList();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {HTMLButtonElement} button
|
||||
*/
|
||||
setupFavouritesForButton(button) {
|
||||
const language = button.dataset.lang;
|
||||
let isFavorite = this.favourites.has(language);
|
||||
button.setAttribute('data-favourite', isFavorite ? 'true' : 'false');
|
||||
|
||||
onChildEvent(button.parentElement, '.lang-option-favorite-toggle', 'click', () => {
|
||||
isFavorite = !isFavorite;
|
||||
isFavorite ? this.favourites.add(language) : this.favourites.delete(language);
|
||||
button.setAttribute('data-favourite', isFavorite ? 'true' : 'false');
|
||||
|
||||
window.$http.patch('/settings/users/update-code-language-favourite', {
|
||||
language: language,
|
||||
active: isFavorite
|
||||
});
|
||||
|
||||
this.sortLanguageList();
|
||||
if (isFavorite) {
|
||||
button.scrollIntoView({block: "center", behavior: "smooth"});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
sortLanguageList() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
save() {
|
||||
if (this.callback) {
|
||||
this.callback(this.editor.getValue(), this.languageInput.value);
|
||||
|
Reference in New Issue
Block a user