Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 private void TagClicked(jQueryEvent e)
 {
     e.PreventDefault();
     MangaFilter filter = new MangaFilter();
     filter.tag = jQuery.FromElement(e.Target).GetAttribute("data-tag");
     MangasModule.Instance.Refresh(filter);
 }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
 public extern void Refresh(MangaFilter filter);
Ejemplo n.º 5
0
        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);
                }
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }