diff --git a/app/public/static/package_create.js b/app/public/static/package_create.js index 2b992f5..771d0fd 100644 --- a/app/public/static/package_create.js +++ b/app/public/static/package_create.js @@ -26,13 +26,25 @@ $(function() { $(".pkg_wiz_2").show() $(".pkg_repo").hide() + function setSpecial(id, value) { + if (value != "") { + var ele = $(id); + ele.val(value); + ele.trigger("change") + } + } + performTask("/tasks/getmeta/new/?url=" + encodeURI(repoURL)).then(function(result) { $("#name").val(result.name || "") + setSpecial("#provides_str", result.name || "") $("#title").val(result.title || "") $("#repo").val(result.repo || repoURL) $("#issueTracker").val(result.issueTracker || "") $("#desc").val(result.description || "") $("#shortDesc").val(result.short_description || "") + setSpecial("#harddep_str", result.depends || "") + setSpecial("#softdep_str", result.optional_depends || "") + $("#shortDesc").val(result.short_description || "") if (result.forumId) { $("#forums").val(result.forumId) } diff --git a/app/public/static/tagselector.js b/app/public/static/tagselector.js index 32e4882..2c69e6d 100644 --- a/app/public/static/tagselector.js +++ b/app/public/static/tagselector.js @@ -91,14 +91,6 @@ lookup[source[i].id] = source[i]; } - var selected_raw = result.val().split(","); - for (var i = 0; i < selected_raw.length; i++) { - var raw = selected_raw[i].trim(); - if (lookup[raw]) { - selected.push(raw); - } - } - selector.click(function() { input.focus(); }) .delegate('.tag a', 'click', function() { var id = $(this).parent().data("id"); @@ -110,7 +102,6 @@ recreate(); }); - function selectItem(id) { for (var i = 0; i < selected.length; i++) { if (selected[i] == id) { @@ -139,7 +130,22 @@ } result.val(selected.join(",")) } - recreate(); + + function readFromResult() { + selected = []; + var selected_raw = result.val().split(","); + for (var i = 0; i < selected_raw.length; i++) { + var raw = selected_raw[i].trim(); + if (lookup[raw] || raw.match(/^([a-z0-9_]+)$/)) { + selected.push(raw); + } + } + + recreate(); + } + readFromResult(); + + result.change(readFromResult); input.keydown(function(e) { if (e.keyCode === $.ui.keyCode.TAB && $(this).data('ui-autocomplete').menu.active) diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index db992b3..022f9b3 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -55,6 +55,9 @@ class GithubURLMaker: def getDescURL(self): return self.baseUrl + "/description.txt" + def getDependsURL(self): + return self.baseUrl + "/depends.txt" + def getScreenshotURL(self): return self.baseUrl + "/screenshot.png" @@ -161,7 +164,7 @@ def getMeta(urlstr, author): try: contents = urllib.request.urlopen(urlmaker.getModConfURL()).read().decode("utf-8") conf = parseConf(contents) - for key in ["name", "description", "title"]: + for key in ["name", "description", "title", "depends", "optional_depends"]: try: result[key] = conf[key] except KeyError: @@ -179,16 +182,40 @@ def getMeta(urlstr, author): except HTTPError: print("description.txt does not exist!") + import re + pattern = re.compile("^([a-z0-9_]+)\??$") + if not "depends" in result and not "optional_depends" in result: + try: + contents = urllib.request.urlopen(urlmaker.getDependsURL()).read().decode("utf-8") + soft = [] + hard = [] + for line in contents.split("\n"): + line = line.strip() + if pattern.match(line): + if line[len(line) - 1] == "?": + soft.append( line[:-1]) + else: + hard.append(line) + + result["depends"] = ",".join(hard) + result["optional_depends"] = ",".join(soft) + + + except HTTPError: + print("depends.txt does not exist!") + if "description" in result: desc = result["description"] idx = desc.find(".") + 1 cutIdx = min(len(desc), 200 if idx < 5 else idx) result["short_description"] = desc[:cutIdx] + info = findModInfo(author, result.get("name"), result["repo"]) if info is not None: result["forumId"] = info.get("topicId") + print(result) return result