Exemple #1
0
        private PublishedContentListingItem GetProjectForAuthorizedMember(int projectId)
        {
            //TODO: What if this is not found??!
            var project = new PublishedContentListingItem();

            if (projectId != 0)
            {
                var nodeListingProvider = new NodeListingProvider();
                project = (PublishedContentListingItem)nodeListingProvider.GetListing(projectId);

                var member = Members.GetCurrentMember();
                if (member.IsHq())
                {
                    return(project);
                }

                // If the member is not the owner of the project and not a contributor then they can not edit.
                if (project.VendorId != member.Id && Utils.IsProjectContributor(member.Id, projectId) == false)
                {
                    //TODO: Ummm... this is a child action/partial view - you cannot redirect from here
                    Response.Redirect("/member/profile/projects/", true);
                }
            }
            return(project);
        }
Exemple #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (library.IsLoggedOn() && ProjectId != null)
            {
                var          nodeListingProvider = new NodeListingProvider();
                Member       mem     = Member.GetCurrentMember();
                IListingItem project = nodeListingProvider.GetListing((int)ProjectId);
                _defaultFile = project.DefaultScreenshot;


                if ((project.VendorId == mem.Id) ||
                    Utils.IsProjectContributor(mem.Id, (int)ProjectId))
                {
                    holder.Visible = true;
                    RebindFiles();

                    library.RegisterJavaScriptFile("swfUpload", "/scripts/swfupload/SWFUpload.js");
                    library.RegisterJavaScriptFile("swfUpload_cb", "/scripts/swfupload/callbacks.js");
                    library.RegisterJavaScriptFile("swfUpload_progress", "/scripts/swfupload/fileprogress.js");

                    MemberGuid  = mem.UniqueId.ToString();
                    ProjectGuid = project.ProjectGuid.ToString();
                }
            }
        }
Exemple #3
0
        public ActionResult UpdateProjectLive(ProjectCompleteModel model)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = GetProjectForAuthorizedMember(model.Id);

            if (model.ProjectLive == false)
            {
                project.Live = false;
                nodeListingProvider.SaveOrUpdate(project);
            }
            else
            {
                // Special exception
                if (string.Equals(model.Name, _exceptionName, StringComparison.InvariantCultureIgnoreCase))
                {
                    project.Live = true;
                    nodeListingProvider.SaveOrUpdate(project);
                }
                else
                {
                    var packages       = nodeListingProvider.GetMediaForProjectByType(project.Id, FileType.package);
                    var currentPackage = packages.FirstOrDefault(x => x.Current && x.Archived == false);

                    if (currentPackage != null && ZipFileContainsPackageXml(currentPackage))
                    {
                        project.Live = true;
                        nodeListingProvider.SaveOrUpdate(project);
                    }
                }
            }

            return(RedirectToCurrentUmbracoPage(Request.Url.Query));
        }
        public ActionResult SaveDetails(ProjectDetails model)
        {
            if (ModelState.IsValid == false)
            {
                return(CurrentUmbracoPage());
            }

            var nodeListingProvider = new NodeListingProvider();
            var project             = (model.Id != 0) ? nodeListingProvider.GetListing(model.Id) : new PublishedContentListingItem();

            project.Name             = model.Title;
            project.Description      = model.Description;
            project.CurrentVersion   = model.Version;
            project.LicenseName      = model.License;
            project.LicenseUrl       = model.LicenseUrl;
            project.ProjectUrl       = model.ProjectUrl;
            project.SourceCodeUrl    = model.SourceCodeUrl;
            project.DemonstrationUrl = model.DemonstrationUrl;
            project.CategoryId       = int.Parse(model.Category);
            project.OpenForCollab    = model.OpenForCollaboration;
            project.GACode           = model.GoogleAnalyticsCode;
            project.ProjectGuid      = (model.Guid == Guid.Empty) ? Guid.NewGuid() : model.Guid; //this is used as the Unique project ID.
            project.ListingType      = ListingType.free;
            // only set memberId when saving for the first time, else collaborators will cause it to switch the owner of the package
            if (model.Id == 0)
            {
                project.VendorId = Members.GetCurrentMemberId();
            }

            project.TermsAgreementDate = DateTime.Now.ToUniversalTime();

            nodeListingProvider.SaveOrUpdate(project);

            return(Redirect("/member/profile/projects/edit?editorStep=files&id=" + project.Id));
        }
Exemple #5
0
        private void MarkFileAsCurrent(string releaseFile)
        {
            var          nodeListingProvider = new NodeListingProvider();
            IListingItem project             = nodeListingProvider.GetListing((int)ProjectId);

            project.CurrentReleaseFile = releaseFile;
            nodeListingProvider.SaveOrUpdate(project);
            _defaultFile = project.CurrentReleaseFile;
        }
Exemple #6
0
        protected void Complete_Click(object sender, EventArgs e)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = nodeListingProvider.GetListing((int)ProjectId);

            project.Live = Live.Checked;
            nodeListingProvider.SaveOrUpdate(project);
            Response.Redirect(project.NiceUrl);
        }
Exemple #7
0
        private void MarkFileAsCurrent(string defaultScreenshot)
        {
            var          nodeListingProvider = new NodeListingProvider();
            IListingItem project             = nodeListingProvider.GetListing((int)ProjectId);

            project.DefaultScreenshot = defaultScreenshot;
            nodeListingProvider.SaveOrUpdate(project);
            _defaultFile = project.DefaultScreenshot;
        }
Exemple #8
0
        public ActionResult RenderComplete(int id)
        {
            var project             = GetProjectForAuthorizedMember(id);
            var nodeListingProvider = new NodeListingProvider();
            var packages            = nodeListingProvider.GetMediaForProjectByType(project.Id, FileType.package);

            var errorMessage   = string.Empty;
            var currentPackage = packages.FirstOrDefault(x => x.Current && x.Archived == false);
            var contentService = Services.ContentService;
            var content        = contentService.GetById(project.Id);
            var isNuGetFormat  = content.GetValue <bool>("isNuGetFormat");
            var nuGetUrl       = content.GetValue <string>("nuGetPackageUrl");

            // Special exception
            var isExceptionPackage = string.Equals(project.Name, _exceptionName, StringComparison.InvariantCultureIgnoreCase);

            if (isNuGetFormat == false)
            {
                if (isExceptionPackage == false && currentPackage == null)
                {
                    errorMessage =
                        "None of the package files are marked as the current package, please make one current.";
                }

                if (isExceptionPackage == false && currentPackage != null &&
                    ZipFileContainsPackageXml(currentPackage) == false)
                {
                    var projectIsLive = content.GetValue <bool>("projectLive");

                    if (projectIsLive)
                    {
                        content.SetValue("projectLive", false);
                        contentService.SaveAndPublishWithStatus(content);
                    }

                    errorMessage = string.Format(
                        "The current package file {0} is not a valid Umbraco Package, please upload a package",
                        currentPackage.Name);
                }
            }
            else
            {
                // NuGet URL needs to be provided
                if (string.IsNullOrEmpty(nuGetUrl))
                {
                    errorMessage =
                        "Please provide a NuGet URL if your package is in the v9+ NuGet format";
                }
            }

            var model = new ProjectCompleteModel {
                Id = project.Id, Name = project.Name, ProjectLive = project.Live, ErrorMessage = errorMessage
            };

            return(PartialView("~/Views/Partials/Project/Complete.cshtml", model));
        }
Exemple #9
0
        public ActionResult UpdateProjectLive(ProjectCompleteModel model)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = GetProjectForAuthorizedMember(model.Id);

            project.Live = model.ProjectLive;
            nodeListingProvider.SaveOrUpdate(project);

            return(RedirectToCurrentUmbracoPage(Request.Url.Query));
        }
Exemple #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                var nodeListingProvider = new NodeListingProvider();

                var project = nodeListingProvider.GetListing((int)ProjectId);
                ProjectName.Text = project.Name;

                Live.Checked = project.Live;
            }
        }
        public ActionResult Index(int projectId = 0)
        {
            //TODO: What if this is not found??!
            var project = new PublishedContentListingItem();

            if (projectId != 0)
            {
                var nodeListingProvider = new NodeListingProvider();
                project = (PublishedContentListingItem)nodeListingProvider.GetListing(projectId);

                var memberId = Members.GetCurrentMemberId();
                if ((project.VendorId == memberId) == false && Utils.IsProjectContributor(memberId, projectId) == false)
                {
                    //TODO: Ummm... this is a child action/partial view - you cannot redirect from here
                    Response.Redirect("/member/profile/projects/", true);
                }
            }

            var model       = new ProjectDetails();
            var currentPage = Umbraco.TypedContent(UmbracoContext.PageId.Value);
            var rootNode    = currentPage.AncestorOrSelf(1);
            var projects    = rootNode.Children(x => x.ContentType.Alias == "Projects").First();
            var categories  = projects.Children(x => x.ContentType.Alias == "ProjectGroup" && x.GetPropertyValue <bool>("hqOnly") == false);

            model.ProjectCategories = new List <SelectListItem> {
                new SelectListItem {
                    Text = string.Empty, Value = string.Empty
                }
            };
            foreach (var category in categories)
            {
                model.ProjectCategories.Add(new SelectListItem {
                    Text = category.Name, Value = category.Id.ToString(), Selected = project.CategoryId == category.Id
                });
            }

            model.License    = string.IsNullOrWhiteSpace(project.LicenseName) ? "MIT" : project.LicenseName;
            model.LicenseUrl = string.IsNullOrWhiteSpace(project.LicenseUrl) ? "http://www.opensource.org/licenses/mit-license.php" : project.LicenseUrl;

            model.Title                = project.Name;
            model.Description          = project.Description;
            model.Version              = project.CurrentVersion;
            model.SourceCodeUrl        = project.SourceCodeUrl;
            model.DemonstrationUrl     = project.DemonstrationUrl;
            model.OpenForCollaboration = project.OpenForCollab;
            model.GoogleAnalyticsCode  = project.GACode;
            model.Id = projectId;

            return(PartialView("~/Views/Partials/Project/Edit.cshtml", model));
        }
Exemple #12
0
        public ActionResult MarkFileAsCurrent(int id, int releaseFileId)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = GetProjectForAuthorizedMember(id);

            project.CurrentReleaseFile = releaseFileId.ToString();
            var file = new WikiFile(releaseFileId);

            if (file.FileType == "screenshot")
            {
                project.DefaultScreenshot = file.Path;
            }
            nodeListingProvider.SaveOrUpdate(project);
            return(RedirectToCurrentUmbracoPage(Request.Url.Query));
        }
        public ActionResult RenderMyProjects()
        {
            var nodeListingProvider = new NodeListingProvider();
            var memberId            = Members.GetCurrentMemberId();

            var myProjects      = nodeListingProvider.GetListingsByVendor(memberId, false, true).OrderBy(x => x.Name);
            var contribProjects = nodeListingProvider.GetListingsForContributor(memberId).OrderBy(x => x.Name);
            var model           = new MyProjectsModel
            {
                Projects        = myProjects,
                ContribProjects = contribProjects
            };

            return(PartialView("~/Views/Partials/Projects/MyProjects.cshtml", model));
        }
Exemple #14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (library.IsLoggedOn() && ProjectId != null)
            {
                var          nodeListingProvider = new NodeListingProvider();
                Member       mem     = Member.GetCurrentMember();
                IListingItem project = nodeListingProvider.GetListing((int)ProjectId);
                _defaultFile = project.CurrentReleaseFile;



                if ((project.VendorId == mem.Id) ||
                    Utils.IsProjectContributor(mem.Id, (int)ProjectId))
                {
                    holder.Visible = true;
                    RebindFiles();

                    library.RegisterJavaScriptFile("swfUpload", "/scripts/swfupload/SWFUpload.js");
                    library.RegisterJavaScriptFile("swfUpload_cb", "/scripts/swfupload/callbacks.js");
                    library.RegisterJavaScriptFile("swfUpload_progress", "/scripts/swfupload/fileprogress.js");

                    MemberGuid  = mem.UniqueId.ToString();
                    ProjectGuid = project.ProjectGuid.ToString();

                    string umboptions = "";

                    foreach (UmbracoVersion uv in UmbracoVersion.AvailableVersions().Values)
                    {
                        umboptions += string.Format("<input type='checkbox' name='wiki_version' value='{0}' /><span> {1}</span></br>", uv.Version, uv.Name);
                    }

                    lt_versions.Text = umboptions;


                    string[] dotnetversions = { "", "2.0", "3.5", "4.0", "4.5" };
                    string   dotnetoptions  = string.Empty;

                    foreach (var opt in dotnetversions)
                    {
                        dotnetoptions += string.Format("<option value='{0}'>{1}</option>", opt, opt);
                    }

                    lt_dotnetversions.Text = dotnetoptions;
                }
            }
        }
Exemple #15
0
        public ActionResult DeleteScreenshot(int id, int releaseFileId)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = GetProjectForAuthorizedMember(id);

            var file = new WikiFile(releaseFileId);

            if (file.Path == project.DefaultScreenshot)
            {
                project.DefaultScreenshot = string.Empty;
                nodeListingProvider.SaveOrUpdate(project);
            }

            var mediaProvider = new MediaProvider();

            mediaProvider.Remove(file);

            return(RedirectToCurrentUmbracoPage(Request.Url.Query));
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            editUrl    = umbraco.library.NiceUrl(edit);
            forumUrl   = umbraco.library.NiceUrl(forum);
            licenseUrl = umbraco.library.NiceUrl(licenses);
            teamUrl    = umbraco.library.NiceUrl(team);

            var nodeListingProvider = new NodeListingProvider();
            var memberId            = Members.GetCurrentMemberId();

            var projects = nodeListingProvider.GetListingsByVendor(memberId, true, true).OrderBy(x => x.Name);

            myProjects.DataSource = projects;
            myProjects.DataBind();

            var contribProjects = nodeListingProvider.GetListingsForContributor(memberId);

            myTeamProjects.DataSource = contribProjects;
            myTeamProjects.DataBind();
        }
Exemple #17
0
        public ActionResult RenderMyProjects()
        {
            var nodeListingProvider = new NodeListingProvider();
            var memberId            = Members.GetCurrentMemberId();

            var myProjects      = nodeListingProvider.GetListingsByVendor(memberId, false, true).OrderBy(x => x.Name);
            var contribProjects = nodeListingProvider.GetListingsForContributor(memberId).OrderBy(x => x.Name);

            var model = new MyProjectsModel
            {
                MyLiveProjects         = myProjects.Where(project => project.Live && !project.IsRetired),
                MyRetiredProjects      = myProjects.Where(project => project.Live && project.IsRetired),
                MyDraftProjects        = myProjects.Where(project => !project.Live),
                ContribLiveProjects    = contribProjects.Where(project => project.Live && !project.IsRetired),
                ContribRetiredProjects = contribProjects.Where(project => project.Live && project.IsRetired),
                ContribDraftProjects   = contribProjects.Where(project => !project.Live),
            };

            return(PartialView("~/Views/Partials/Projects/MyProjects.cshtml", model));
        }
        public IEnumerable <IProjectTag> GetAllTags(bool liveOnly = false)
        {
            if (!liveOnly)
            {
                return(Tag.GetTags("project").Where(x => x.NodeCount > 2).Select(x => new ProjectTag()
                {
                    Id = x.Id,
                    Text = x.TagCaption,
                    LiveCount = x.NodeCount
                }));
            }

            var tagList = new List <IProjectTag>();

            var nodeListingProvider = new NodeListingProvider();

            var projects = nodeListingProvider.GetAllListings(true);

            foreach (var p in projects)
            {
                foreach (var t in p.Tags)
                {
                    if (tagList.Contains(t))
                    {
                        tagList.Find(delegate(IProjectTag tag)
                        {
                            return(tag.Id == t.Id);
                        }).LiveCount++;
                    }
                    else
                    {
                        t.LiveCount++;
                        tagList.Add(t);
                    }
                }
            }


            return(tagList);
        }
Exemple #19
0
        protected void DeleteFile(object sender, CommandEventArgs e)
        {
            var mediaProvider = new MediaProvider();
            var f             = mediaProvider.GetFileById(int.Parse(e.CommandArgument.ToString()));

            _defaultFile = string.Empty;

            //update the project
            var          nodeListingProvider = new NodeListingProvider();
            IListingItem project             = nodeListingProvider.GetListing((int)ProjectId);

            project.DefaultScreenshot = _defaultFile;
            nodeListingProvider.SaveOrUpdate(project);

            var mem = Member.GetCurrentMember();

            if (f.CreatedBy == mem.Id || Utils.IsProjectContributor(mem.Id, (int)ProjectId))
            {
                mediaProvider.Remove(f);
            }

            RebindFiles();
        }
Exemple #20
0
        public ActionResult UpdateProjectLive(ProjectCompleteModel model)
        {
            var nodeListingProvider = new NodeListingProvider();
            var project             = GetProjectForAuthorizedMember(model.Id);

            if (model.ProjectLive == false)
            {
                project.Live = false;
                nodeListingProvider.SaveOrUpdate(project);
            }
            else
            {
                var packages       = nodeListingProvider.GetMediaForProjectByType(project.Id, FileType.package);
                var currentPackage = packages.FirstOrDefault(x => x.Current && x.Archived == false);

                if (currentPackage != null && ZipFileContainsPackageXml(IOHelper.MapPath(currentPackage.Path)))
                {
                    project.Live = true;
                    nodeListingProvider.SaveOrUpdate(project);
                }
            }

            return(RedirectToCurrentUmbracoPage(Request.Url.Query));
        }
Exemple #21
0
        protected void DeleteFile(object sender, CommandEventArgs e)
        {
            var mediaProvider = new MediaProvider();
            var f             = mediaProvider.GetFileById(int.Parse(e.CommandArgument.ToString()));

            var mem = Member.GetCurrentMember();

            if (f.CreatedBy == mem.Id || Utils.IsProjectContributor(mem.Id, (int)ProjectId))
            {
                //if the file is the default file we need to clear it out of the system to stop it showing as the default download
                if (f.Id.ToString() == _defaultFile)
                {
                    _defaultFile = string.Empty;
                    var nodeListingProvider = new NodeListingProvider();
                    var project             = nodeListingProvider.GetListing((int)ProjectId);
                    project.CurrentReleaseFile = _defaultFile;
                    nodeListingProvider.SaveOrUpdate(project);
                }
            }

            mediaProvider.Remove(f);

            RebindFiles();
        }
Exemple #22
0
        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);

            if (_projectId != null)
            {
                var nodeListingProvider = new NodeListingProvider();
                _project = nodeListingProvider.GetListing((int)_projectId);

                //check security to make sure the project belongs to the vendor
                var currentMemberId       = Members.GetCurrentMemberId();
                var vendorIsCurrentMember = (_project.VendorId == currentMemberId);
                var isProjectContributor  = Utils.IsProjectContributor(currentMemberId, (int)_projectId);
                if ((vendorIsCurrentMember || isProjectContributor) == false)
                {
                    //this project does not belong to this member so kick them back to the project list in their profile.
                    Response.Redirect("~/member/profile/projects/");
                }
            }

            _currentStep = umbraco.helper.Request("editorStep");

            ListingCreatorStep _s;

            if (string.IsNullOrEmpty(_currentStep))
            {
                _s = ListingSteps()["details"];
            }
            else
            {
                _s = ListingSteps()[_currentStep];
            }

            loadContent(_s);
        }
Exemple #23
0
        public ActionResult RenderComplete(int id)
        {
            var project             = GetProjectForAuthorizedMember(id);
            var nodeListingProvider = new NodeListingProvider();
            var packages            = nodeListingProvider.GetMediaForProjectByType(project.Id, FileType.package);

            var errorMessage   = string.Empty;
            var currentPackage = packages.FirstOrDefault(x => x.Current && x.Archived == false);

            if (currentPackage == null)
            {
                errorMessage = "None of the package files are marked as the current package, please make one current.";
            }

            if (currentPackage != null && ZipFileContainsPackageXml(IOHelper.MapPath(currentPackage.Path)) == false)
            {
                LogHelper.Info <ProjectController>($"Checking if {currentPackage.Path} has a package.xml zipped up in there.");

                var contentService = Services.ContentService;
                var content        = contentService.GetById(project.Id);
                var projectIsLive  = content.GetValue <bool>("projectLive");

                if (projectIsLive)
                {
                    content.SetValue("projectLive", false);
                    contentService.SaveAndPublishWithStatus(content);
                }
                errorMessage = $"The current package file {currentPackage.Name} is not a valid Umbraco Package, please upload a package";
            }

            var model = new ProjectCompleteModel {
                Id = project.Id, Name = project.Name, ProjectLive = project.Live, ErrorMessage = errorMessage
            };

            return(PartialView("~/Views/Partials/Project/Complete.cshtml", model));
        }