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); }
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(); } } }
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)); }
private void MarkFileAsCurrent(string releaseFile) { var nodeListingProvider = new NodeListingProvider(); IListingItem project = nodeListingProvider.GetListing((int)ProjectId); project.CurrentReleaseFile = releaseFile; nodeListingProvider.SaveOrUpdate(project); _defaultFile = project.CurrentReleaseFile; }
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); }
private void MarkFileAsCurrent(string defaultScreenshot) { var nodeListingProvider = new NodeListingProvider(); IListingItem project = nodeListingProvider.GetListing((int)ProjectId); project.DefaultScreenshot = defaultScreenshot; nodeListingProvider.SaveOrUpdate(project); _defaultFile = project.DefaultScreenshot; }
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)); }
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)); }
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)); }
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)); }
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; } } }
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(); }
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); }
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(); }
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)); }
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(); }
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); }
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)); }