Bugfix Day 1
* Fixed attachments being displayed that were on archived or deleted notes * Added options to show attachments on archived or trashed notes * Showing note files will show all attachments for note even if its archived or trashed with mixed file types * Fixed text about "Flux" theme which was removed * Fixed bug when opening metric tracking that would prevent default fields from being shown
This commit is contained in:
		| @@ -20,7 +20,7 @@ | ||||
| 		.image-placeholder { | ||||
| 			width: 100%; | ||||
| 			height: 100%; | ||||
| 			max-height: 100px; | ||||
| 			max-height: 75px; | ||||
| 		} | ||||
| 		.image-placeholder:after { | ||||
| 			content: 'No Image'; | ||||
| @@ -89,7 +89,14 @@ | ||||
| 			<!-- image and text --> | ||||
| 			<div class="six wide center aligned middle aligned column"> | ||||
| 				<a :href="linkUrl" target="_blank" > | ||||
| 					<img v-if="item.file_location" class="attachment-image" :src="`/api/static/thumb_${item.file_location}`"> | ||||
| 					<img v-if="item.file_location" class="attachment-image"  | ||||
| 						onerror=" | ||||
| 							this.onerror=null; | ||||
| 							this.src='/api/static/assets/marketing/void.svg'; | ||||
| 							this.classList.add('image-placeholder'); | ||||
| 							this.insertAdjacentText('afterend', 'Image not found'); | ||||
| 						" | ||||
| 						:src="`/api/static/thumb_${item.file_location}`"> | ||||
| 					<span v-else> | ||||
| 						<img class="image-placeholder" loading="lazy" src="/api/static/assets/marketing/void.svg"> | ||||
| 						No Image | ||||
| @@ -171,6 +178,9 @@ | ||||
| 				this.checkKeyup() | ||||
| 			}) | ||||
| 		}, | ||||
| 		updated: function(){ | ||||
| 			this.checkKeyup() | ||||
| 		}, | ||||
| 		methods: { | ||||
| 			checkKeyup(){ | ||||
| 				let elm = this.$refs.edit | ||||
|   | ||||
| @@ -108,7 +108,14 @@ | ||||
|  | ||||
| 				<div v-if="getThumbs.length > 0"> | ||||
| 					<div class="tiny-thumb-box" v-on:click="openEditAttachment"> | ||||
| 						<img v-for="thumb in getThumbs" class="tiny-thumb" :src="`/api/static/thumb_${thumb}`"> | ||||
| 						<img v-for="thumb in getThumbs"  | ||||
| 							class="tiny-thumb"  | ||||
| 							:src="`/api/static/thumb_${thumb}`" | ||||
| 							onerror=" | ||||
| 								this.onerror=null; | ||||
| 								this.src='/api/static/assets/marketing/void.svg'; | ||||
| 							" | ||||
| 						/> | ||||
| 					</div> | ||||
| 				</div> | ||||
|  | ||||
|   | ||||
| @@ -35,6 +35,23 @@ | ||||
| 					<i class="copy icon"></i> | ||||
| 					Other Files | ||||
| 				</router-link> | ||||
|  | ||||
| 				<router-link | ||||
| 					v-if="$store.getters.totals && $store.getters.totals['archivedNotes']" | ||||
| 					exact-active-class="green" | ||||
| 					class="ui basic button shrinking" | ||||
| 					to="/attachments/type/archived"> | ||||
| 					<i class="archive icon"></i> | ||||
| 					Archived | ||||
| 				</router-link> | ||||
|  				<router-link  | ||||
|  					v-if="$store.getters.totals && $store.getters.totals['trashedNotes']" | ||||
| 					exact-active-class="green" | ||||
| 					class="ui basic button shrinking" | ||||
| 					to="/attachments/type/trashed"> | ||||
| 					<i class="trash icon"></i> | ||||
| 					Trashed | ||||
| 				</router-link> | ||||
| 			 | ||||
| 				<router-link  | ||||
| 					v-if="$store.getters.totals && $store.getters.totals['sharedToNotes']" | ||||
|   | ||||
| @@ -1229,7 +1229,11 @@ | ||||
| 						this.setApplicationStateJson(appData) | ||||
| 					} | ||||
| 				}) | ||||
| 				.catch(error => { this.$bus.$emit('notification', error) }) | ||||
| 				.catch(error => {  | ||||
| 					this.$bus.$emit('notification', error)  | ||||
|  | ||||
| 					this.setApplicationStateJson(null) | ||||
| 				}) | ||||
|  | ||||
| 			}, | ||||
| 			setApplicationStateJson(json){ | ||||
| @@ -1238,7 +1242,7 @@ | ||||
| 				// Can be called via import or Ajax on load | ||||
|  | ||||
| 				this.cycleData = json?.cycleData || this.cycleData | ||||
| 				this.fields = [...new Set(json.fields)] || this.fields | ||||
| 				this.fields = [...new Set(json?.fields)] || this.fields | ||||
| 				this.userFields = json?.userFields || this.userFields | ||||
| 				// this.graphs = json?.graphs || this.graphs | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -23,6 +23,8 @@ | ||||
| 						</div> | ||||
|  | ||||
| 						<tag-display  | ||||
| 							v-if="$store.getters.totals && Object.keys($store.getters.totals['tags'] || {}).length" | ||||
| 							:user-tags="$store.getters.totals['tags']" | ||||
| 							:active-tags="searchTags" | ||||
| 							v-on:tagClick="tagId => toggleTagFilter(tagId)" | ||||
| 						/> | ||||
|   | ||||
| @@ -56,16 +56,28 @@ Attachment.search = (userId, noteId, attachmentType, offset, setSize, includeSha | ||||
| 			WHERE attachment.user_id = ? AND visible = 1 ` | ||||
|  | ||||
| 		if(noteId && noteId > 0){ | ||||
| 			// | ||||
| 			// Show everything if note ID is present | ||||
| 			// | ||||
| 			query += 'AND attachment.note_id = ? ' | ||||
| 			params.push(noteId) | ||||
| 		} | ||||
|  | ||||
| 		if(attachmentType == 'links'){ | ||||
| 			query += 'AND attachment_type = 1 ' | ||||
| 		} | ||||
| 		if(attachmentType == 'files'){ | ||||
| 			query += 'AND attachment_type > 1 ' | ||||
| 		} else { | ||||
| 			// | ||||
| 			// Other filters if NO note id | ||||
| 			// | ||||
|  | ||||
| 			if(attachmentType == 'links'){ | ||||
| 				query += 'AND attachment_type = 1 ' | ||||
| 			} | ||||
| 			if(attachmentType == 'files'){ | ||||
| 				query += 'AND attachment_type > 1 ' | ||||
| 			} | ||||
|  | ||||
| 			query += `AND note.archived = ${ attachmentType == 'archived' ? '1':'0' } ` | ||||
| 			query += `AND note.trashed = ${ attachmentType == 'trashed' ? '1':'0' } ` | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		if(!noteId){ | ||||
| 			const sharedOrNot = includeShared ? ' NOT ':' '  | ||||
| @@ -79,6 +91,8 @@ Attachment.search = (userId, noteId, attachmentType, offset, setSize, includeSha | ||||
| 		const parsedSetSize = parseInt(setSize, 10) || 20 | ||||
| 		query += ` LIMIT ${limitOffset}, ${parsedSetSize}` | ||||
|  | ||||
| 		console.log(query) | ||||
|  | ||||
| 		db.promise() | ||||
| 			.query(query, params) | ||||
| 			.then((rows, fields) => { | ||||
| @@ -434,8 +448,10 @@ Attachment.processUrl = (userId, noteId, url) => { | ||||
| 			const keywords = SiteScrape.getKeywords($) | ||||
|  | ||||
| 			var desiredSearchText = '' | ||||
| 			desiredSearchText += pageTitle + "\n" | ||||
| 			desiredSearchText += keywords | ||||
| 			desiredSearchText += pageTitle | ||||
| 			if(keywords){ | ||||
| 				desiredSearchText += "\n" + keywords | ||||
| 			} | ||||
|  | ||||
| 			console.log({ | ||||
| 				pageTitle, | ||||
|   | ||||
| @@ -205,7 +205,7 @@ User.getCounts = (userId) => { | ||||
| 			`SELECT | ||||
| 				SUM(archived = 1 && share_user_id IS NULL && trashed = 0) AS archivedNotes, | ||||
| 				SUM(trashed = 1) AS trashedNotes, | ||||
| 				SUM(share_user_id IS NULL && trashed = 0) AS totalNotes, | ||||
| 				SUM(share_user_id IS NULL && trashed = 0 AND quick_note < 2) AS totalNotes, | ||||
| 				SUM(share_user_id IS NOT null && opened IS null && trashed = 0) AS youGotMailCount, | ||||
| 				SUM(share_user_id != ? && trashed = 0) AS sharedToNotes | ||||
| 			FROM note  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user