private void BreadcrumbFolderClicked(jQueryEvent e) { e.PreventDefault(); string folder = jQuery.FromElement(e.Target).GetAttribute("data-folder"); if (!String.IsNullOrEmpty(folder)) { MangaFilter filter = new MangaFilter(); filter.folder = folder; Refresh(filter); } }
private void TagClicked(jQueryEvent e) { e.PreventDefault(); MangaFilter filter = new MangaFilter(); filter.tag = jQuery.FromElement(e.Target).GetAttribute("data-tag"); MangasModule.Instance.Refresh(filter); }
public void Refresh(MangaFilter filter, bool suppressShowModule) { if (Script.IsNullOrUndefined(filter)) { filter = new MangaFilter(); if (!String.IsNullOrEmpty(Settings.CurrentFolder)) { filter.folder = Settings.CurrentFolder; } } jQueryObject breadcrumb = jQuery.Select("#mangas-breadcrumb"); breadcrumb.Children().Remove(); if (!String.IsNullOrEmpty(filter.folder)) { int i = 0, j = 0; string separator = Environment.ServerType == ServerType.AspNet ? "\\" : "/"; while ((i = filter.folder.IndexOf(separator, j)) != -1) { jQuery.Select( ".mangas-breadcrumb-btn", Template.Get("client", "mangas-breadcrumb-link", true).AppendTo(breadcrumb)) .Text(filter.folder.Substring(j, i)) .Attribute("data-folder", filter.folder.Substr(0, i)) .Click(BreadcrumbFolderClicked); j = i + 1; breadcrumb.Append(" "); } Template.Get("client", "mangas-breadcrumb-active-folder", true).AppendTo(breadcrumb).Text(filter.folder.Substr(j)); Settings.CurrentFolder = currentFolder = filter.folder; } else if (!String.IsNullOrEmpty(filter.tag)) { jQuery.Select( ".mangas-breadcrumb-tag-name", Template.Get("client", "mangas-breadcrumb-tag", true).AppendTo(breadcrumb)) .Text(filter.tag); } else if (filter.search != null) { Template.Get("client", "mangas-breadcrumb-active-folder", true).AppendTo(breadcrumb).Text(Strings.Get("SearchResult")); } else { Template.Get("client", "mangas-breadcrumb-active-folder", true).AppendTo(breadcrumb).Text(Strings.Get("AllMangas")); Settings.CurrentFolder = currentFolder = ""; } Action onReady = delegate { MangaListRequest request = new MangaListRequest(); lastFilter = request.filter = filter; Request.Send(request, MangaListRequestSuccess); Template.Get("client", "loading-well", true).AppendTo(jQuery.Select("#mangas-loading")); FoldersWidget.ExpandToFolder(currentFolder); }; if (!attachedObject.Is(":visible")) { items = new MangaListItemJson[] { }; jQuery.Select(".mangas-pagination").Children().Remove(); jQuery.Select("#mangas-list").Children().Remove(); if (suppressShowModule) { onReady(); } else { Show(onReady); } } else { onReady(); } }
public extern void Refresh(MangaFilter filter);
private void FolderButtonClick(jQueryEvent e) { e.PreventDefault(); string dataPath = jQuery.FromElement(e.Target).GetAttribute("data-path"); bool emptyFolder = jQuery.FromElement(e.Target).GetAttribute("data-count") == "0"; if (!String.IsNullOrEmpty(dataPath)) { MangaFilter filter = new MangaFilter(); filter.folder = dataPath.Substr(1); MangasModule.Instance.Refresh(filter, emptyFolder); if (emptyFolder) { ExpandCollapseFolder(dataPath, true); } } }
private void SubmitSearchForm(jQueryEvent e) { e.PreventDefault(); MangaFilter filter = new MangaFilter(); MangaSearchFilter search = filter.search = new MangaSearchFilter(); search.title = jQuery.Select("#search-title").GetValue(); search.folderSetting = Settings.SearchFolderSetting = int.Parse(jQuery.Select("#search-folder").GetValue(), 10); search.folder = MangasModule.Instance.CurrentFolder; search.author = jQuery.Select("#search-author").GetValue(); search.series = jQuery.Select("#search-series").GetValue(); search.publisher = jQuery.Select("#search-publisher").GetValue(); search.year = int.Parse(jQuery.Select("#search-year").GetValue(), 10); if (Number.IsNaN(search.year)) { search.year = -1; } MangasModule.Instance.Refresh(filter); }
public static Manga[] GetMangaList(AjaxBase ajax, MangaFilter filter) { string where = "`status`='0'"; User user = User.GetCurrentUser(ajax); string collectionSelect = "FALSE"; if (Settings.AllowGuest || user != null) { collectionSelect += " OR `cid` IN (SELECT `id` FROM `collection` WHERE `public`='1')"; } if (user != null) { collectionSelect += " OR `cid` IN (SELECT `cid` FROM `collectionuser` WHERE `uid`=" + Database.Quote(user.Id.ToString()) + " AND `access`='1')"; where += " AND `cid` NOT IN (SELECT `cid` FROM `collectionuser` WHERE `uid`=" + Database.Quote(user.Id.ToString()) + " AND `access`='0')"; } where += " AND (" + collectionSelect + ")"; if (filter != null) { if (filter.tag != null && filter.tag != "") { where += " AND `id` IN (SELECT `mid` FROM `mangatag` WHERE `tid` IN (SELECT `id` FROM `tag` WHERE `name`=" + Database.Quote(filter.tag) + "))"; } string folder = null; int folderSetting = 2; if (filter.search != null) { string metaSelect = "TRUE"; if (filter.search.title != null && filter.search.title != "") { string title = Database.Quote(filter.search.title); title = Database.Quote(title.Substring(1, title.Length - 2)); title = title.Substring(1, title.Length - 2).Replace("%", "\\%"); where += " AND `title` LIKE '%" + title + "%'"; } if (filter.search.author != null && filter.search.author != "") { metaSelect += " AND `author`=" + Database.Quote(filter.search.author); } if (filter.search.series != null && filter.search.series != "") { metaSelect += " AND `series`=" + Database.Quote(filter.search.series); } if (filter.search.year >= 0) { metaSelect += " AND `year`=" + Database.Quote(filter.search.year.ToString()); } if (filter.search.publisher != null && filter.search.publisher != "") { metaSelect += " AND `publisher`=" + Database.Quote(filter.search.publisher); } if (metaSelect != "TRUE") { where += " AND `id` IN (SELECT `mid` FROM `meta` WHERE " + metaSelect + ")"; } if (filter.search.folderSetting > 0 && filter.search.folder != null && filter.search.folder != "") { folder = filter.search.folder; folderSetting = filter.search.folderSetting; } } if (folder == null && filter.folder != null && filter.folder != "") { folder = filter.folder; } if (folderSetting > 0 && folder != null && folder != "") { int index; string collectionName = (index = folder.IndexOf("\\")) == -1 ? folder : folder.Substring(0, index); string relativePath = folder.Substring(index + 1); Collection collection = Collection.GetByName(collectionName); if (collection == null) { where += " AND FALSE"; } else { string actualPath = Database.Quote(index == -1 ? collection.Path.Substring(0, collection.Path.Length - 1) : collection.Path + relativePath); actualPath = Database.Quote(actualPath.Substring(1, actualPath.Length - 2)); actualPath = actualPath.Substring(1, actualPath.Length - 2).Replace("%", "\\%"); where += " AND `cid`=" + Database.Quote(collection.Id.ToString()); where += " AND `path` LIKE '" + actualPath + "\\\\\\\\%'" + (folderSetting == 2 ? " AND `path` NOT LIKE '" + actualPath + "\\\\\\\\%\\\\\\\\%'" : ""); } } } return GetMangas(where); }