This commit is contained in:
Per Ploug
2015-02-24 00:28:11 +01:00
243 changed files with 26208 additions and 339 deletions
+1
View File
@@ -50,3 +50,4 @@ OurUmbraco.Site/App_Data/cache/
*.sln.ide/
NuGetBackup
OurUmbraco.Site/web.config
OurUmbraco.Site/usercontrols/Deli/
+56
View File
@@ -0,0 +1,56 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Web;
using System.Linq;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Globalization;
namespace Marketplace.Controls
{
public class CountryDropDownList : DropDownList
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
GetCountries();
}
private void GetCountries()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
List<string> col = new List<string>();
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
RegionInfo ri = new RegionInfo(ci.LCID);
if (!dic.ContainsKey(ri.EnglishName))
dic.Add(ri.EnglishName, ri.TwoLetterISORegionName.ToLowerInvariant());
if (!col.Contains(ri.EnglishName))
col.Add(ri.EnglishName);
}
col.Sort();
this.Items.Add(new ListItem("", ""));
foreach (var i in dic.OrderBy(x => x.Key))
{
this.Items.Add(new ListItem(i.Key, i.Value));
}
}
}
}
+522
View File
@@ -0,0 +1,522 @@
/* THIS STYLESHEET CONTAINS ALL THE THINGS WE'VE ADDED TO THE DESIGN */
/* adjusting the header if there is no promoted content */
.Class-VideoTutorial h1{display: none !Important;}
.class-empty #wrapper{padding-top: 150px !Important;}
.class-emtpy #header{height: 150px !Important;}
.class-shopFlow #wrapper{padding-top: 200px !Important;}
.class-shopFlow #header{padding-left: 0px; height: 200px !Important;}
.class-shopFlow .breadcrumb{display: none !Important;}
#panes div.tabPanel{display: none;}
.get-started-table td {vertical-align: top; width: 33%;}
.get-started-table li {margin-bottom: 5px;}
.get-started-table ul {margin: 0;}
td {vertical-align: top;}
.no-margin {margin:0;}
.boxLeft {
float: left;
width: 48%
}
.boxRight {
float: right;
width: 48%
}
/* SUBMITTED SITES */
#tagSelector{height: 130px; display: block; list-style: none;
margin-bottom: 20px; padding: 0px;}
#tagSelector li{float: left; margin: 0px; display: block; width: 180px; padding: 5px;}
#tagSelector li a{padding: 3px;}
#tagSelector li a.current{font-weight: bold;}
#tagSelector li.header{width: 100%; float: none; color: #444444; font-weight: bold; text-size: 12px;}
#viewToggle{text-align: center; display: block; width: 120px; padding: 6px; border: solid 1px #e7e7e7; text-decoration: none; clear: both; margin-bottom: 20px; }
#featuredSites{display: block; margin: 0px; padding: 0px;}
#featuredSites li{display: block; text-align: center; width: 297px; height: 270px; float: left; margin: 0px 10px 14px 0px; padding: 7px;
border-top: 1px solid #E7E7E7;
border-left: 1px solid #E7E7E7;
border-right: 2px solid #E7E7E7;
border-bottom: 2px solid #E7E7E7;
overflow: hidden
}
#sites.grid{display: block; margin: 0px; padding: 0px;}
#sites.grid li{opacity:0.2; display: block; text-align: center; width: 135px; height: 145px; float: left; margin: 0px 20px 20px 0px; padding: 0px;
background: #252525; color: #fff;
overflow: hidden
}
#sites.grid li.last{margin-right: 0px; clear: right;}
#sites.grid li a.thumb{color: #fff; display: block; margin: auto; background: #fff no-repeat top center; width: 136px; padding-top: 101px; height: 1px; overflow: hidden;}
#sites.grid li h5{margin-top: 3px; padding: 5px; font-size: 11px; font-weight: normal; color: #fff;}
#sites.grid li h5 a{color: #fff;}
#sites.grid li p{display: none;}
#sites.grid li.show{opacity: 0.99;}
#sites.list{background: none !Important; display: block; margin: 0px; padding: 0px; width: auto; list-style: none;}
#sites.list li{background: none !Important; opacity: 0.99 !Important; display: none; border-bottom: 1px solid #ccc; text-align: left;
padding: 10px 10px 10px 150px; position: relative; min-height: 90px; height: auto !Important; height: 90px;}
#sites.list li a.thumb{display: block; border: 1px solid #999; background: no-repeat top center; width: 115px; padding-top: 81px; height: 1px;
overflow: hidden; position: absolute; top: 15px; left: 10px;}
#sites.list li h5{margin: 2px 0px 5px 0px; padding: 2px; font-size: 16px;}
#sites.list li p{}
#sites.list li.show{opacity: 0.99 !Important; display: block;}
div#showcase{width: 750px; height: 470px; overflow: auto; padding: 5px;}
div#showcase div.image{margin: 0px 0px 20px 20px; width: 450px; height: 280px; overflow: hidden; border: 1px solid #ccc; text-align: center;
position: absolute; top: 20px; right:0px;
}
div#showcase h1{float: left; color: #575757; width: 280px;}
div#showcase div.desc{overflow: auto; position: absolute; bottom: 0px; height: 125px;
padding: 7px; border-top: #e7e7e7 1px solid; margin-top: 35px; width: 745px;}
div#showcase div.desc p{font-size: 12px !Important; line-height: 20px;}
div#showcase dl{clear: left;}
div#showcase dt{font-weight: bold;}
div#showcase dd{margin-bottom: 10px;}
/* FAQ */
.faqGroup{list-style: none; margin: 0; padding: 0px;}
.faqGroup li{display: block; width: 350px; height: 100px; float: left; margin:0px 20px 30px 0px;}
.faqGroup li h3{margin: 5px 0 0 0; padding: 0px;}
.faqGroup li p{padding-top: 10px; margin: 0px; }
.faqGroup li.alt{float: right; }
.faqGroup h3 a{color: #000 !Important; text-decoration: none !Important;}
.faqGroup a:hover h3{color: #000; text-decoration: underline !Important;}
.faqGroupFeatureLink li{display: block; width: 150px; float: left; margin:0px 10px 15px 0px;}
.faqGroupFeatureLink a{color: #000 !Important; text-decoration: none !Important;}
.faqGroupFeatureLink a:hover{color: #000; text-decoration: underline !Important;}
/* Partners */
.solutionProvider img{float: right; margin-top: 10px}
.solutionProvider .meta{margin-bottom: 15px}
.solutionProvider .meta p{font-size: 13px; margin-bottom: 0px}
.solutionProvider{border-bottom: 1px solid #efefef; padding: 10px; margin-bottom: 10px}
.goldProvider{border: 1px solid #efefef; background: #f7f7f7;}
/* GOLD PARTNERS */
ul.goldPartners, ul.standardPartners{margin: 0px; padding: 0px;}
li.partner{display: block; float: left; padding: 10px; margin: 7px; width: 225px; border: 1px solid #efefef}
li.partner a, li.partner a *{text-decoration: none !Important; color: #000}
li.partner h3{color: #000; font-size: 18px; font-weight: bold; margin: 0px;}
li.partner span.location{line-height: 15px; display: block; padding: 7px 0px 7px 0px; margin-bottom: 10px; border-bottom: #dbdbdb 1px solid; color: #666 !Important; font-size: 12px;}
li.partner div.providerLogo{height: 160px; display: block; overflow: hidden;}
li.partner span.abstract{border: 1px solid #efefef; line-height: 17px; display: none; font-size: 12px; color: #666; padding: 10px; background: #f9f9f9; height: 138px;}
ul.goldPartners li.partner a:hover img{display: none;}
ul.goldPartners li.partner a:hover span.abstract{display: block;}
li.partner a:hover h3{text-decoration: underline !Important;}
li.partner img{margin: auto;}
ul.standardPartners li.partner h3{height: 18px; overflow: hidden}
ul.standardPartners li.partner{width: 135px; padding: 3px; margin: 7px;}
ul.standardPartners li.partner h3{font-size: 12px;}
ul.standardPartners li.partner div.providerLogo{height: 90px;}
ul.standardPartners li.partner span.location{line-height: 10px; font-size: 12px;}
/*Licenses */
.licenseTable td{padding: 7px; border-bottom: 1px solid #efefef;}
.licenseTable{margin-bottom: 30px;}
/* PRODUCTS */
div.product{padding-left: 70px; padding-bottom: 20px; background: url(/images/bg-ico2.gif) no-repeat 10px 0px; }
/* ABOUT US */
.class-team img {margin: 0 15px 15px 15px;}
/* TEST YOUR NEEDS */
#test-your-needs-container p {
margin-bottom: 2px;
}
.need-cost {
font-weight: bold;
margin-bottom: 8px;
}
.need-result{
padding-left: 60px;
background: url(/images/custom/need-result-selected.png) no-repeat;
}
.need-result-summary{
padding-left: 60px;
}
.needs-total {
font-weight: bold;
font-size: 130%;
padding-bottom: 10px;
}
.btn-add-to-cart {
display:block;
text-indent:-9999px;
overflow:hidden;
background:url(/images/custom/btn-order-inline.png) no-repeat;
width:152px;
height:50px;
margin-top: 25px;
}
.btn-add-to-cart:hover {
background:url(/images/custom/btn-order-inline-hover.png) no-repeat;
}
.btn-calculate-my-price {
display:block;
text-indent:-9999px;
overflow:hidden;
background:url(/images/custom/btn-calculate-price.png) no-repeat;
width:152px;
height:50px;
margin-top: 25px;
}
.btn-calculate-my-price:hover {
background:url(/images/custom/btn-calculate-price-hover.png) no-repeat;
}
.test-your-needs-questions{list-style: none; margin-left: 0; padding-left: 0;}
.test-your-needs-questions li{display: block; margin: 0; padding: 10px 0;}
.test-your-needs-questions input {margin-top: 0px; padding-top: 0px;}
.test-your-needs-questions label{padding-left: 5px; font-size: 20px;}
#test-your-needs-container h2 {
line-height: 125%;
}
/* 2 column pages */
.two-column .left-column{width: 380px;}
.two-column .right-column{width: 380px;}
.noSidebar .left-column, .noSidebar .right-column{width: 450px;}
/* 3 column pages */
.three-column .left-column{width: 310px; margin: 0px;}
.three-column .center-column{width: 310px; float: left; margin: 0px 15px 0px 15px;}
.three-column .right-column{width: 310px; margin: 0px;}
/* SHOP FLOW UL */
ul.shop-flow{display: block; list-style: none; height: 50px; padding: 0px; margin: 0px; margin-left: -10px;}
ul.shop-flow li{ display: block; padding: 0px; margin: 0px; border-bottom: 3px solid #000; float: left; height: 40px; margin-right: 2px;}
ul.shop-flow li span{display: block; padding: 20px;}
ul.shop-flow li.active{border-color: #ff6e00;}
ul.shop-flow li.done{border-color: #7a7a7a;}
/* SHOP FLOW BUTTONS */
#umbracoFormNavigation a{
display: block;
width: 93px;
height: 22px;
padding-top: 6px;
font-size: 14px;
text-decoration: none;
color: white;
background: url(/images/custom/btn_sqr_blank.png) no-repeat top left;
text-align: center;
}
/* Shop flow Checkout */
.checkOut #couponCode{display: none;}
/*BREADCRUMB */
ul.breadcrumb{z-index: 99; position: relative; list-style: none; margin: 0; padding: 0; margin-bottom: 20px;}
ul.breadcrumb li{color: #999 !Important; list-style: none; margin: 0; padding: 0; display: inline;}
ul.breadcrumb li a{color: #999 !Important;}
/* BIRD */
#bird{z-index: 999; position: relative; background: no-repeat url(/images/custom/bird0.gif) bottom left; height: 100px; width: 100px;}
/* EXTRA HEADER BUTTONS */
a.support{
width:108px;
height:108px;
text-indent:-9999px;
overflow:hidden;
float:right;
background:url(../images/btn-support.png) no-repeat;
}
a.support:hover{background:url(../images/btn-support-hover.png) no-repeat;}
/* VIDEO PAGE*/
div.videoChapter, div.videoChapter *{text-decoration: none !Important; color: #000 !Important;}
.video-list a{text-decoration: none !Important; color: #000 !Important; font-weight: normal; font-size: 10px}
/* New list of videos... */
.video-list2{list-style: none; display: block; padding: 0px; marging: 0px;}
.video-list2 li{width: 140px; overflow: hidden; display: block; float: left; margin: 7px; height: 145px; background: #252525;}
.video-list2 li .image{overflow: hidden; display: block; height: 100px;}
.video-list2 li a{font-size: 11px; font-weight: normal; line-height: 13px; color: #fff !Important; text-decoration: none !Important; display: block; text-align: center;}
.video-list2 li a:hover{text-decoration: underline !Important;}
.video-list2 span.text2{display: block; padding: 4px;}
.video-list2 span.image{display: block; background: #efefef}
/*Video Tutorial Page*/
#VideoPlayer{margin-top: 0px; border-bottom: 2px solid #000; padding-bottom: 10px; margin-bottom: 20px;}
ul#VideoRelatedVideos{height: 555px; overflow: auto; float: right; width: 220px; list-style: none; padding: 0px; margin: 0px; }
ul#VideoRelatedVideos li{display: block; border-bottom: 1px solid #efefef; padding: 10px; height: 50px;}
ul#VideoRelatedVideos li.header{padding: 0px 10px 0px 10px; height: 25px}
ul#VideoRelatedVideos li img{float: left; margin: 0px 10px 10px 0px; border: 1px solid #efefef; background: #fff}
ul#VideoRelatedVideos li h5{padding: 0px; font-weight: normal; margin: 0; font-size: 12px; line-height: 16px}
ul#VideoRelatedVideos li h3{padding: 0px; margin: 0px; line-height: 20px}
ul#VideoRelatedVideos li.playing{background: #efefef;}
/*Featured video */
#tutorialFeature{border-bottom: 2px solid #EFF2F2; padding: 10px; margin-bottom: 10px; color: #666;}
#tutorialFeature h2, #tutorialFeature p, #tutorialFeature li{color: #666;}
#tutorialFeature a.preview{margin: 10px; margin-right: 35px; width: 350px; height: 190px; float: left; border: 1px solid #666}
#tutorialFeature ul{padding: 0px; list-style: none;}
#tutorialFeature ul li{padding-left: 20px; display: block; }
#tutorialFeature img{margin-bottom: 20px;}
/*developer page */
.ajax ul{list-style: none; padding: 0px; margin: 0px; margin-bottom: 4px}
.ajax ul li{display: block; padding: 5px; border-bottom: 1px solid #efefef; height: 50px}
.ajax ul li small{display: block; padding: 2px; color: #999}
.ajax ul li img{width: 48px; height: 48px; float: left; margin: 0px 7px 5px 0px;}
/* Training */
table.reservations{}
table.reservations td, table.reservations th{padding: 7px; text-align: left; border-bottom: 1px solid #efefef}
table.reservations tbody th{width: 120px;}
table.reservations tbody td{padding-right: 10px;}
table.reservations tbody input{padding: 2px; width: 200px; font-size: 16px;}
.center{display: block; padding: 2px; text-align: center}
.eventList{margin: 0px; padding: 0px; list-style: none;}
.eventList li{margin: 0px; padding: 3px; border-bottom: 1px solid #efefef; display: block;}
.eventList h4{padding: 0px; margin: 0}
.eventList small{ color: #666;}
/*RELEASES*/
.releases-list a{color: black !Important; text-decoration: none !Important;}
.releases-list .summary{
padding: 10px; background: #efefef; margin: 7px 7px 7px 20px; display: none;
}
/* BLOG */
p.postmetadata{color: #666; margin-bottom: 30px}
.post small{color: #666; margin-top: -10px; padding-bottom: 15px; display: block;}
#commentform{
padding-left: 10px;
padding-top: 10px;
padding-bottom: 10px;
}
#commentform #gravatar{
float:right;
margin-right: 190px;
margin-top: 20px;
}
#commentform label
{
float:none;
}
#commentform .form-input{
margin-top: 5px;
margin-bottom: 5px;
}
#commentform .form-input textarea{
width: 400px;
}
#commentform .error{
padding:0 0em;
}
#commentform label.error{
border:none;
padding:0 0.8em;
}
#commentform label.error {
background:#FFF;
border-color:#FBC2C4;
color:#8A1F11;
}
#commentPosted {
border:1px solid #DDDDDD;
margin-bottom:0.5em;
padding:0 0.8em;
padding:10px;
}
#commentPosted {
background:#FFF6BF none repeat scroll 0 0;
border-color:#FFD324;
color:#514721;
}
ol.commentlist{margin-left: 0px; padding: 0px; list-style: none;}
ol.commentlist li{
margin-bottom: 10px;
padding: 10px;
background: #FAFAFA;
}
ol.commentlist li small.commentmetadata{display: block; font-size: 10px; padding-bottom: 5px;}
ol.commentlist li small.commentmetadata a{color: #999;}
ol.commentlist li img.gravatar{float: right; margin: 0px 0xp 10px 10px; border: 1px solid #ccc; padding: 1px;}
/* Twitter */
#twitterUpdates{padding: 0px; margin: 0px; list-style: none}
#twitterUpdates li{display: block; padding: 5px; margin-bottom: 20px;}
#twitterUpdates li img{float: left; clear: left; margin: 0px 20px 20px 0px;}
/* SEARCH */
.searchResults{list-style: none; padding: 0px; margin: 0px;}
.searchResults li{display: block; padding-left: 60px; background: url(/images/custom/search_text.gif) no-repeat 15px 7px;}
.searchResults li.videochapter, .searchResults li.videotutorial{background-image: url(/images/custom/search_video.gif);}
.searchResults li.umbracoblogpost{background-image: url(/images/custom/search_blog.gif);}
.searchResults li small{color: #666; display: block; font-size: 11px}
.searchResults li h3{margin-bottom: 2px;}
.searchResults li p{margin-top: 2px;}
/* Paypal redirect */
body.redirecting{
margin-top: 100px;
text-align: center;
}
body.redirecting h1{display: block !Important; font-size: 22px}
body.redirecting div{
margin: auto;
text-align: center;
width: 600px;
padding: 30px;
font-size: 18px;
color: #666;
background-color: #fff;
border: 5px solid #CCDDFF
}
/* -- 23Videos (List for 23videos - used on CG11 ticket page) -- */
#video23List { margin:0; padding:0; }
#video23List li { display:inline-block; height:140px; list-style-type:none; margin:0 2px; overflow:hidden; position:relative; width:170px;}
#video23List li a { color:#fff; display:block; text-decoration:none; }
#video23List li img { position:absolute; z-index:10; }
#video23List li span { background:#000; background:rgba(0,0,0,0.8); bottom:0; color:#fff; font-size:11px; height:30px; /*40-5-5=30*/ line-height:12px; padding:5px; position:absolute; width:160px; /*170-5-5=160*/ z-index:11; }
/* -- Image Cover for Convince your boss pdf -- */
.convinceCover { -moz-box-shadow:1px 1px 5px #666; -o-box-shadow:1px 1px 5px #666; -webkit-box-shadow:1px 1px 5px #666; box-shadow:1px 1px 5px #666; float:left; margin-right:20px; }
/* -- CodeGarden homepage panel & button text --*/
.tabset li a span.codegarden { background:url(../images/custom/text-codegarden-panel-label.png) no-repeat 0 0; width:92px; }
.promo-box .cyan-alt .container { background:url(../images/custom/bg-container-cyan-alt.jpg) no-repeat scroll 50% 0 transparent; }
.cgPanelHeader { background:url(../images/custom/text-codegarden-panel-header.png) no-repeat; height:89px; overflow:hidden; text-indent:-9999px; width:459px;}
.cgPanelText { width:470px; }
.cgBuyTicketBtn { background:url(../images/custom/btn_get-your-ticket.png) no-repeat 0 0; cursor: pointer; float: right; height: 108px; margin:20px 0 0 15px; overflow: hidden; text-indent: -9999px; width: 108px; }
.cgBuyTicketBtn:hover { background-position:0 -108px; }
/* -- Nivio Slider styles --*/
#slider {
position:relative;
width:692px;
height:461px;
background:url(../images/nivio-slider-2.4/loading.gif) no-repeat 50% 50%;
/*margin-bottom:50px;*/
}
#slider img {
position:absolute;
top:0px;
left:0px;
display:none;
}
#slider a {
border:0;
display:block;
}
.nivo-controlNav {
position:absolute;
left:260px;
bottom:-42px;
}
.nivo-controlNav a {
display:block;
width:22px;
height:22px;
background:url(../images/nivio-slider-2.4/bullets.png) no-repeat;
text-indent:-9999px;
border:0;
margin-right:3px;
float:left;
}
.nivo-controlNav a.active {
background-position:0 -22px;
}
.nivo-directionNav a {
display:block;
width:30px;
height:30px;
background:url(../images/nivio-slider-2.4/arrows.png) no-repeat;
text-indent:-9999px;
border:0;
}
a.nivo-nextNav {
background-position:-30px 0;
right:15px;
}
a.nivo-prevNav {
left:15px;
}
.nivo-caption
{
color:#fff;
}
.nivo-caption p { color:#fff; }
.nivo-caption a {
text-decoration:underline;
}
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
.dataTable
{
width:100% !important;
table-layout: auto;
border-collapse: collapse;
border:#ccc 1px solid;
}
/*Header and Pager styles*/
.dataTable thead tr
{
background-image: url(../images/HeaderWhiteChrome.jpg);
background-position:center;
background-repeat:repeat-x;
background-color:#fff;
border-bottom:solid 1px #ccc;
}
.dataTable th
{
padding: 5px;
color: #333;
text-align:left;
}
/*RowStyles*/
.dataTable td
{
padding: 5px;
border-right: solid 1px #ccc;
}
.dataTable .borderTop
{
border-bottom: solid 1px #ccc;
}
.dataTable .right{
text-align:right;
}
+761
View File
@@ -0,0 +1,761 @@
/*OVERALL LAYOUT*/
html, body{padding: 0px; margin: 0px; border: none; height: 100%;}
body{font-size: 12px; background: #f5f5f5 url(img/body_bg.gif) repeat-y top center;
font-family: Trebuchet MS,Arial,sans-serif; color: #2d2c2e; padding-bottom: 0px;}
body#tinymce{background-image: none !Important; text-align: left !Important; padding: 10px !Important;}
#main{text-align: center;
min-height: 100%; height: auto !Important; height: 100%;
}
.wrapper, #contentArea{margin: auto; text-align: center; width: 980px; position: relative}
.divider{padding: 5px; border-bottom: 1px #999 dotted; clear: both; margin-bottom: 10px;}
#body, .subpage{text-align: left; }
body a{color: #2244BB }
/*TOP + TOPNavi */
#top{
background: url(img/top_bg_green2.gif) repeat-x top #8ECA56;
position:relative; margin-bottom: 0px; height: 83px;}
#top #memberInfo{background: #82b84f; height: 20px; padding: 5px;}
#top a#logo{display: block; top: 9px; left: 0px; padding: 36px 161px 0px 0px; width: 1px; height: 1px; overflow: hidden;
background: url(img/top_logo.png) no-repeat left top; position: absolute;
}
#top ul{float: right; list-style: none; margin: 12px 0 0 18px; padding: 0px; height: 29px; display: block;}
#top ul li{display: block; float: left; padding: 0; padding-left: 5px; height: 29px;}
#top ul li a{
color:#FFFFFF; display:block;
font-size:1.2em; font-variant:normal; font-weight:bold;
padding: 7px; text-decoration: none; height: 27px}
#top ul li a:hover{text-decoration: underline;}
#top ul li.current a{background: url(img/top_nav_a_bg.png) no-repeat bottom center;}
#top #memberHeaderProfile{position: absolute; top: 5px; right: 7px; font-size: 11px; color: #fff; text-align: right; width: 700px;}
#top #memberHeaderProfile a{color: #fff; margin-left: 5px;}
#top #memberHeaderProfile div{display: inline !Important;}
#searchBar{background: #f4f4f2; border-bottom: 1px solid #dadad9; position: relative; padding: 0px; font-weight: bold; padding: 5px;}
#searchBar input.field{clear: both; margin: 0px; font-size: 1.3em; border: 1px solid #ccc; background: #fff; width: 260px}
#searchBar #bt_search{position: absolute; right: 0px; margin: 0px; font-size: 1.3em;}
#searchBar .ui{text-align: left; width: 350px; position: relative; margin: auto;}
#searchBarOptions{display: none; padding-top: 10px;}
#searchBarOptions label{padding-right: 15px; padding-left 5px;}
/* Box Elemenet */
.box {
background:#F6F7F7;
border:1px solid #F2F2F2;
display:block;
list-style-image:none;
list-style-position:outside;
list-style-type:none;
margin:0 0 20px;
padding:0 0 6px;}
.box h4{color:#444444; font-size:12px; font-weight:bold; line-height:12px; padding: 10px !Important; background: #F0F2F2;
margin-top: 0px; margin-bottom: 0px; position: relative;
}
.rounded{
-webkit-border-radius: 10px; /* Safari prototype */
-moz-border-radius: 10px; /* Gecko browsers */
border-radius: 10px; /* Everything else - limited support at the moment */
}
.infoBox{padding: 7px 7px 7px 50px; height: auto !Important; min-height: 35px; height: 35px; background: #DDF8CC no-repeat 10px 7px; font-size: 11px;}
#forumTools{position: absolute; top: 5px; right: 0px; width: 270px; background-image: url(img/icons/info.png); }
#projectsInfo{position: absolute; top: 5px; right: 0px; width: 270px; background-image: url(img/icons/add.png); }
#newTopic{position: absolute; top: 5px; right: 0px; width: 270px; background-image: url(img/icons/add.png); }
#solutionBox{position: absolute; top: 5px; right: 0px; width: 270px; background-image: url(img/icons/add.png); }
.infoBox ul{list-style: none; margin: 0px; padding: 0px;}
.infoBox ul li{padding: 0px 0px 3px 0px;}
.infoBox a{padding: 2px; font-size: 12px;}
.infoBox small{color: #999; display: block; padding-top: 2px;}
div.buttons{padding: 20px; background: #F0F2F2; font-size: 18px;}
a.button{padding: 10px 0px 10px 0px; border: 1px solid #EFEFEF; text-decoration: none;}
a.button em{border: 5px solid #fff; padding: 5px; color: #fff; background: #F5366D; }
/*Breadcrumb*/
#breadcrumb{margin: 0px; margin-top: -10px !Important; padding: 4px; list-style: none; font-size: 10px; color: #999; display: block; margin-bottom: 10px;}
#breadcrumb li{display: inline; padding-right: 5px; margin: 0px;}
#breadcrumb li a{color: #999; padding-right: 3px;}
/*Footer*/
.push{height: 60px; clear: both;}
#footer{font-size: 10px; background: #252525; color: #fff; padding: 20px; height: 19px; text-align: center;
border-top: 1px dotted #999; margin-top: -60px; clear: both; position: relative;}
#footer a{color: #fff !Important}
/* FORM ELEMENTS */
label.inputLabel {font-weight:bold; width: 10em; display: block; float: left; padding: 1.5em 1.5em 1em 0; text-align: right; }
fieldset {padding:0em;margin:1.5em 0 0 0;border:none; border-bottom:1px solid #ccc;}
fieldset small{display: block;}
legend {font-weight:bold;font-size:1.2em;}
input.text, input.title, textarea, select {margin:0.5em 0;border:1px solid #bbb;}
input.text:focus, input.title:focus, textarea:focus, select:focus {border:1px solid #666;}
input.text, input.title, select.title {width:300px;padding:5px;}
input.title, select.title {font-size:1.5em;}
.buttons input{font-size: 18px;}
textarea {width:300px;height:250px;padding:5px;}
.error, .notice, .success, .focus {padding:.2em;margin-bottom:1em;border:2px solid #ddd;}
.error {background:#FBE3E4 !Important;color:#8a1f11;border-color:#FBC2C4 !Important;}
.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
.error * {color:#8a1f11 !Important;}
.notice * {color:#514721;}
.success * {color:#264409;}
.focus{border: none; border-top: 1px solid; border-bottom: 1px solid; border-color: #999; background: #F0F0F0;}
.spotlight{padding: 0px; margin-bottom: 20px; border: none; background: none;}
.spotlight h3, .spotlight h4, .spotlight h2{position: relative; font-size: 14px; margin-bottom: 0px; margin-top: 0px; color: #333; border-bottom: 3px solid #efefef; padding-bottom: 4px;}
.spotlight h2{font-size: 18px;}
.spotlight ul{list-style: none; margin: 0px; padding-left: 10px;}
.spotlight ul.pager{padding-left: 0px;}
.spotlight li{padding: 3px;}
.spotlight a{font-size: 12px;}
.spotlight ul.summary{padding: 5px 0px;}
.spotlight ul.summary li{padding-bottom: 12px !Important; border: none !Important}
.spotlight a.rss_small{top: 3px;}
dt{font-style: italic;}
dd{padding-bottom: 5px;}
label.error, label.notice, label.success {background: none; border: none; padding-left: 1em;}
input.wikiheadline{display: block; background: white; border: 1px solid #DEE4EF; color: #46484B; width: 100%;}
/* SEARCH RESULTS */
#search .result{padding: 10px 10px 25px 80px; background: 20px 10px no-repeat url(search/forum.gif);}
#search .result h3{padding: 0px; font-weight: normal; margin: 0px;}
#search .result h3 a{font-size: 14px; font-weight: bold; display: block; color: #333; text-decoration: none;}
#search .result a:hover{text-decoration: underline;}
#search .result a *{color: inherit}
#search .result p{color: #000; font-size: 12px; padding: 0px; margin: 0px;}
#search .result cite{color: #666; font-size: 11px;}
#search .result em{font-weight: bold !Important;}
#search .wiki{background-image: url(search/wiki.gif);}
#search .project{background-image: url(search/project.gif);}
#search .forum{background-image: url(search/forum.gif);}
#search .solution{background-image: url(search/solved.gif);}
/* Member Badge */
div.memberBadge{background: #f0f0f0; padding: 10px 0px 10px 0px; text-align: center;}
div.memberBadge *{color: #333;}
div.memberBadge img{display: block; margin: auto; border: 1px solid #999;}
div.memberBadge span{padding-top: 8px; display: block; font-weight: bold; font-size: 12px}
div.memberBadge small{display: block; font-weight: normal; margin-top: -6px; color: #999}
/* FRONTPAGE */
#dashboard{width: 980px; position: relative}
#sidebar{text-align: left; width: 300px; float: right; margin:20px 0px 20px 0px;}
.callToAction h1{font-size: 20px;}
.callToAction p{font-size: 12px;}
.callToAction h1 a{color: #066808; text-decoration: none;}
ul.summary{list-style: none; padding: 7px; margin: 0px; }
ul.summary li{display: block; border-bottom: #e7e7e7 1px dotted; padding: 3px;}
ul.summary li a{display: block; font-size: 11px;}
ul.summary li small a{display: inline;}
ul.summary img{float: left; height: 32px; width: 32px; margin-right: 10px; overflow: hidden; font-size: 1px;}
ul.forumTopics li{height: auto !Important; height: 37px; min-height: 37px;}
ul.wiki li{padding-left: 42px; background: url(img/doc.png) no-repeat left top;}
ul.projects li{padding-left: 42px; background: url(img/package.png) no-repeat left top;}
a.rss_small{font-size: 9px; position: absolute; right: 10px; top: 8px; font-weight: normal; display: block;
padding: 14px 14px 0px 0px; overflow: hidden; height: 0px; width: 0px; background: url(img/rss.png) no-repeat top left;
}
a.more{display: block; font-size: 11px; color: #999; text-align: center}
/* PROJECTS */
a.projectDownload{background: #ddf8cc url(img/down.png) no-repeat 5px 10px; padding: 10px 10px 10px 50px; display: block; margin-bottom: 10px; text-decoration: none;}
a.projectDownload span{color: #999; text-decoration: none !Important; display: block; font-size: 80%;}
a.projectPurchase{background: #cce2f8 url(img/piggybank.png) no-repeat 5px 10px; padding: 10px 10px 10px 50px; display: block; margin-bottom: 10px; text-decoration: none;}
a.projectPurchase span{color: #999; text-decoration: none !Important; display: block; font-size: 80%;}
.openForCollab{background: #cce2f8 url(img/group.png) no-repeat 5px 10px; padding: 10px 10px 10px 50px; display: block; margin-bottom: 10px; text-decoration: none;}
.openForCollab span{color: #999; text-decoration: none !Important; display: block; font-size: 80%;}
.projectGroups{margin: 0; padding: 0; list-style: none;}
.projectGroups li{margin: 0; float: left;}
.projectGroups li div{width: 380px; margin: 15px; margin-right: 30px; background: top left no-repeat; padding-left: 50px; height: 80px}
.projectGroups h3{padding: 0px; font-weight: normal; margin: 0px;}
.projectGroups h3 a{font-size: 14px; font-weight: bold; display: block; color: #333; text-decoration: none;}
.projectGroups a:hover{text-decoration: underline;}
.projectGroups a *{color: inherit}
.projectGroups p{color: #000; font-size: 12px; padding: 0px; margin: 0px;}
/* Options */
#body .options{text-align: right; padding: 4px; font-size: 11px; margin-top:0px; margin-bottom: 10px;}
/*#body .options ul{list-style: none; margin: 0px; padding: 0px; display: block; height: 25px;}
#body .options ul li{float: left; padding-right: 15px;}
#body .options ul li a{font-size: 11px;}*/
#body .options ul li.create{float: right!important;}
dl.summary{padding: 7px; font-size: 11px;}
#divFileProgressContainer{width: 300px; margin-top: 10px;}
#divFileProgressContainer .progressContainer{border: 1px solid #ccc; padding: 3px;}
#divFileProgressContainer .progressBarStatus{font-size: 10px; color: #999; }
#divFileProgressContainer .progressBarInProgress{background: green; height: 2px; overflow: hidden;}
/* Member Profile */
#profileNavigation{background: #F0F0F0; padding: 10px; border-bottom: 1px solid #ccc}
#profileNavigation #memberInfo{height: 70px; float: right; width: 300px; background: no-repeat right top; text-align: right; padding-right: 10px;}
#profileNavigation #memberInfo h3{color: #999; font-size: 18px; margin-bottom: 0px; margin-top: 5px;}
#profileNavigation #memberInfo h4{color: #999; font-size: 13px; margin: 0px;}
#profileNavigation #memberAvatar {float: right;}
#profileNavigation #memberAvatar img {height: 50px;}
#profileNavigation ul{padding: 17px; display: block; list-style: none; margin: 0px; font-size: 13px; font-weight: bold; color: #999;}
#profileNavigation ul li{display: inline;}
#profileNavigation ul a{padding: 10px;}
#memberProfile #avatar{float: left; margin: 20px 25px 0px 0px; width: 55px}
#memberProfile #details{float: left; width: 800px;}
#memberProfile .badge{margin: auto; margin-top: 10px;}
.yourProjects
{
list-style-type:none;
margin-left:0;
}
.yourProjects .projectImage
{
float:left;
margin-right: 10px;
}
.yourProjects .projectActions
{
float:left;
}
.yourProjects h2
{
font-weight: normal;
}
.yourProjects p a
{
color: #999999;
}
/* Buddy Icon Form */
#buddyIconForm {padding: 10px; display: block;}
#buddyIconForm .iconOption{width: 320px; display: block; text-align: center; float: left; font-size: 18px; font-weight: bold; color: #999;}
#buddyIconForm .iconOption img{display: block; margin: auto; border: none;}
#webcamHolder{width: 320px; float: right; margin: 0px 0px 20px 20px;}
/* VOTING */
.voting{text-align: center; background: #FFF6BF; border: 2px solid #FFD324; padding: 10px 0px 10px 0px;}
.voting span{font-size: 25px; font-weight: bold;
color: #514721; display: block; text-align: center; margin-bottom: 7px;}
.voting span a{color: #514721; text-decoration: none; border-bottom: 1px dotted #999}
.voting a.vote, .voting a.noVote{border: 1px solid #eacf5c; background: #fff; color: #514721; padding: 2px; font-size: 9px; text-decoration: none;}
.voting a.noVote{border: 1px solid #eacf5c; background: #FFF6BF; color: #eacf5c;}
.voting span.good a{color: green;}
.voting span.bad a{color: red;}
.voting a img{border: none;}
.voting .like, .voting .dislike, .voting .kill{font-size: 11px; color: #066808;}
.voting .TopicSolver{border: 1px solid #066808; padding: 2px; display: block; margin-top: 3px }
#moveList{ z-index: 99999; text-align: right; display: none; margin: 7px 0px 0px 20px; padding: 7px; border: 1px solid #ccc; background: #fff; position: absolute; width: 250px;}
#moveList li{text-align: left !Important; padding: 0px; list-style: none; display: block !Important; float: none !Important;}
#moveList li a{padding: 3px; display: block !Important; float: none;}
.voting .kill, .voting #ToggleMoveList{background: #fff !Important; color: #680708; border: 1px solid #680708; padding: 3px; display: block; font-size: 11px; margin-top: 10px;}
#ToggleMoveList{border-color: #ccc !Important; color: blue !Important;}
/* Pager */
.pager{margin: 0px; padding: 10px 0px 0px 0px; list-style: none;}
.pager li{display: block; padding-right: 2px; margin: 0px; margin-bottom: 9px;float:left;}
.pager li a{font-size: 11px; padding: 3px 6px; border: 1px solid #ccc; text-decoration: none;}
.pager li.current a{border: none;}
.pager li a:hover{color: white; background: #2244BB;}
.pager li.current a{font-weight: bold;}
#memberLoader span, #memberLoader_weeks span, #memberLoader_year span{display: block; background: url(img/ajax-loadercircle.gif) no-repeat center left;
font-size: 11px; color: #999; margin: 10px; padding: 5px 30px 10px 40px; width: 200px;}
/* Member Locator */
#memlocresults{
margin-top: 10px;
}
#memlocradius{
width: 470px;
}
#memlocslider{
float:right;
margin-top: 10px;
}
/* SIMPLE MODAL */
#simplemodal-container{background:#FFF6BF; color:#514721; width: 520px; border: 4px solid #FFD324; padding: 20px;}
#simplemodal-container h3, #simplemodal-container p{color:#514721; margin: 0px; padding: 0px;}
#simplemodal-container h3{font-size: 20px}
#simplemodal-container textarea{display: block; padding: 5px; width: 510px; height: 50px;}
#modalCloseButton{position: absolute; top: 10px; right: 10px; color: #514721; font-size: 11px;}
/* Voting history */
ul.votingHistory{display: block; padding: 5px; margin: 0px; margin-bottom: 10px; list-style: none; overflow: auto; height: 400px;}
ul.votingHistory li{display: block; padding: 10px 10px 10px 35px; margin: 0px; border-top: 1px dotted #ccc; font-size: 11px; background: 5px 12px no-repeat;}
ul.votingHistory li.up{background-image: url(img/icons/thumb_up.png); color: #118B00}
ul.votingHistory li.down{background-image: url(img/icons/thumb_down.png); color: #8B0006}
/* NOTIFICATION BANNER */
#notification{text-align: center; background:#FFF6BF; color:#514721; font-size: 14px; font-weight: bold;
border-bottom: 1px solid #FFD324; padding: 10px;
}
/*Project Tagger*/
.tagger { float:left; }
.tagAdd { margin:0 0 0 6px;}
.tagList { list-style:none; padding:0; margin:0; clear:both; border-left:3px solid #ddd; padding-left:4px; float:left; margin:5px 10px;}
.tagName { cursor:pointer; float:left; clear:both; padding:0.1em 1.5em 0.1em 0.4em;}
.tagName:hover { background:#efefef url(img/bullet_toggle_minus.png) right 2px no-repeat; }
/* TAGGER AUTOCOMPLETE */
.ac_results {
padding: 0px;
border: 1px solid black;
background-color: white;
overflow: hidden;
z-index: 99999;
}
.ac_results ul {
width: 100%;
list-style-position: outside;
list-style: none;
padding: 0;
margin: 0;
}
.ac_results li {
margin: 0px;
padding: 2px 5px;
cursor: default;
display: block;
/*
if width will be 100% horizontal scrollbar will apear
when scroll mode will be used
*/
/*width: 100%;*/
font: menu;
font-size: 12px;
/*
it is very important, if line-height not setted or setted
in relative units scroll will be broken in firefox
*/
line-height: 16px;
overflow: hidden;
}
.ac_loading {
background: white url('img/indicator.gif') right center no-repeat;
}
.ac_odd {
background-color: #eee;
}
.ac_over {
background-color: #0A246A;
color: white;
}
/*TAGCLOUD*/
#tagCloud
{
margin-top: 10px;
padding:10px;
margin-bottom:10px;
text-align:justify;
}
#tagCloud A
{
text-decoration:none;
margin-left:5px;
margin-right:5px;
font-family:Verdana, Arial;
text-transform:lowercase;
color: #8a8a8a;
}
#tagCloud A:hover, #tagCloud a.current
{
color:#000;
text-decoration:underline;
}
#tagCloud A.weight1
{
font-size: 2em;
font-weight:bolder;
}
#tagCloud A.weight2
{
font-size:1.7em;
font-weight:bolder;
}
#tagCloud A.weight3
{
font-size: 1.4em;
font-weight:bolder;
}
#tagCloud A.weight4
{
font-size: 1.1em;
}
#tagCloud A.weight5
{
font-size: 0.8em;
}
#tagCloud span
{
font-size: 10px !Important;
color: #595a5a!Important;
font-weight: normal !Important;
}
.spotlight ul.projectsTagged li{border-bottom:1px solid #EFEFEF !important;}
ul.projectsTagged li h5 a, .projectsTagged h5{text-decoration: none; font-weight: bold; font-size: 14px; margin-bottom: 0px; margin-top: 10px; color: #000;}
ul.projectsTagged li h5 a:hover{text-decoration: underline;}
.projectsTagged p{#search .result p{color: #000; font-size: 12px; padding: 0px; margin: 0px;}}
.hLabel{
font-size: 10px;
color: #adc251;
}
/* Project Page */
#project{position: relative;}
#projectOwner{float: left; width: 55px; text-align: center; margin: 10px 20px 0px 0px;}
#projectDescription{float: left;}
#projectvoting{position: absolute; top: 10px; right: 0px;}
#project .options{border-top: #efefef 1px solid; font-size: 11px; padding: 2px 0px 25px 0px; margin-right: 80px }
#project .badge{margin: auto; margin-top: 10px;}
/* Project Screenshots */
.projectscreenshot{
display:block;
float:left;
padding:10px;
background-color: #F6F7F7;
margin-right: 5px;
margin-bottom: 5px;
}
.projectscreenshot:hover{
background-color: #F0F2F2;
}
a.badge{display: block; background: no-repeat center center; width: 40px; height: 40px; text-decoration: none; border: none; overflow: hidden; text-indent: -9999px;}
a.mvp{background-image: url(badges/mvp.png);}
a.core{background-image: url(badges/core.png);}
a.hq{background-image: url(badges/hq.png);}
a.vendor{background-image: url(badges/vendor.png);}
a.admin{background-image: url(badges/admin.png);}
a.mvpcandidate {background-image: url(badges/mvp_nominee.png);}
/* Options */
#options{display: block; height: 20px; padding: 5px; border-top: #efefef 1px solid; margin: 10px 0 0px 0;}
#options ul{list-style: none; margin: 0px; padding: 0px; display: block; height: 20px;}
#options ul li{float: left; padding-right: 15px; margin: 0px;}
#options ul li a{font-size: 11px; margin: 0px;}
#options ul li.right{float: right}
/* Alert */
.alert{
background:#FFF6BF;
color:#514721;
font-size: 14px;
border: 1px solid #FFD324;
padding: 5px;
margin-bottom:5px;
}
.confirm{
background:#8ECA56;
font-size: 14px;
border: 1px solid #6AAE30;
padding: 5px;
margin-bottom:5px;
}
/* Top Notifications */
#topNotificationContainer
{
display:none;
}
.topNotification
{
background-color: #FFF6BF;
padding: 7px 0px;
border-bottom:1px solid #FFD324;
color: #735005;
font-weight:bold;
}
.notifyClose
{
display:block;
float:right;
cursor:pointer;
border: 2px solid #FFD324;
background-color: #FFF6BF;
color: #735005;
padding: 0px 4px;
margin-right: 20px;
font-family: Arial;
text-align:center;
font-weight: 700;
line-height: 1;
}
.notifyClose a
{
color: ##514721;
}
/* General */
a.remove
{
color:#680708;
}
/* Project mark verified */
.verifyWikiFile
{
cursor:pointer;
color:green;
margin-top: 5px;
padding-left:18px;
background: url('img/verify.png') no-repeat bottom left;
font-size:100% !Important;
}
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
+109
View File
@@ -0,0 +1,109 @@
/*FONTS */
body{font-family: Arial, Helvetica, sans-serif; font-size: 13px;}
h1, h2, h3, h4, h5, p{font-family: Arial, Helvetica, sans-serif; color: #333;}
a{color: #1A6AB3;}
p{font-size: 13px; margin-top: 7px; margin-bottom: 15px; color: #333; line-height: 18px}
small{font-size: 11px; color: #5b5b5b;}
em{color: #332e2e; font-style: normal; font-weight: bold;}
h1{font-size: 28px; font-weight: bold; margin-bottom: 7px;}
h2{font-size: 18px; font-weight: bold; margin-top: 0px; margin-bottom: 3px;}
h3{font-size: 14px; font-weight: bold;}
h4{font-size: 12px; font-weight: bold; }
h5{font-size: 11px; font-weight: bold; }
code, pre {
background-color:#F2F2F2;
border:1px solid #E3E3E3;
border-left: 4px solid #e3e3e3;
display:block !Important;
font-family:monospace;
font-size:12px;
line-height:1.4em;
margin:0 6em 1em 1em;
padding: 0.5em;
max-width: 650px;
overflow: auto;
}
code pre{padding: 0px; border: none}
a.act{padding: 2px; padding-left: 20px; color: #252525; background: no-repeat center left;}
a.topics{background-image: url(img/ico/balloons.png);}
a.yourtopics{background-image: url(img/ico/balloon-smiley.png);}
a.edit{background-image: url(img/ico/pencil-small.png);}
a.delete{background-image: url(img/ico/cross-small.png);}
a.move{background-image: url(img/ico/document-tree.png);}
a.subscribe{background-image: url(img/ico/mail--plus.png);}
a.UnSubscribeTopic, a.UnSubscribeForum{background-image: url(img/ico/mail--delete.png);}
a.upload{background-image: url(img/ico/document--plus.png);}
#options a.history{background-image: url(img/ico/clock-history.png);}
.options{padding: 3px !Important;}
a.add{background: #8ECA56 2px 2px url(img/ico/plus-button.png) no-repeat; padding: 3px 3px 3px 25px;
border: 1px solid #618A3B; color: #fff; text-decoration: none; margin-top: 2px;
-webkit-border-radius: 3px; /* Safari prototype */
-moz-border-radius: 3px; /* Gecko browsers */
border-radius: 3px; /* Everything else - limited support at the moment */
}
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
+181
View File
@@ -0,0 +1,181 @@
/* GENERAL STYLES */
body,html{padding: 10px !Important; margin: 0px !Important; padding: 10px; background: white; background-image: none !Important;}
#closeHandle{display: none !Important;}
#header{font-size: 14px; font-weight: bold; color: rgb(153, 153, 153); margin-bottom: 7px;}
#header img{display: none !Important;}
img.gradient{display: none !Important;}
#theForm{margin-top: -15px; width: 100%; position: relative;}
#Table1{width: auto !Important; width: 100%; display: block; margin: 0px;}
#profileInfo{font-size: 10px; position: absolute; right: 10px; top: 10px; color: #999;}
.propertyPane{padding: 10px; background-repeat: repeat-x}
a{color: black;}
body {
margin: 2px
}
#body{margin-top: 50px;}
.repoBox{display: block; clear: both; padding: 10px; border-bottom: 1px solid #ccc; margin-bottom: 15px;}
.noborder{border: none !Important;}
h4{margin-top: 0px; margin-bottom: 15px; font-size: 15px;}
.gradient{background-repeat: no-repeat;}
#header{position: absolute; top: 10px; right: 15px;}
#profile{text-align: right; font-size: 10px;}
#profile input{width: 200px; margin-left: 15px;}
.deliLeft{
width: 200px; /*Width of left column*/
position: absolute;
}
.deliRight
{
float: none !Important;
margin-left: 230px !Important;
width: auto !Important;
}
a.viewAll{top: 14px !Important;}
.deliNav{background: none !Important; padding-left: 0;}
.deliNav a:hover{text-decoration: underline !Important;}
/* Project page */
/*MOVE STUFF */
#breadcrumb{position: absolute; top: 20px; left: 10px; margin: 0px; margin-top: -10px !Important; padding: 4px; list-style: none; font-size: 11px; color: #333; display: block; margin-bottom: 10px;}
#breadcrumb li{display: inline; padding-right: 5px; margin: 0px;}
#breadcrumb li a{color: #999; padding-right: 3px;}
/*HIDE STUFF*/
h1{display: none !Important;}
.options{display: none !Important;}
.deliFeatureBox{display: none !Important;}
#projectOwner{display: none !Important;}
/*TAGCLOUD*/
#tagCloud
{
margin-top: 10px;
padding:10px;
margin-bottom:10px;
text-align:justify;
}
#tagCloud A
{
text-decoration:none;
margin-left:5px;
margin-right:5px;
font-family:Verdana, Arial;
text-transform:lowercase;
color: #8a8a8a;
}
#tagCloud A:hover, #tagCloud a.current
{
color:#000;
text-decoration:underline;
}
#tagCloud A.weight1
{
font-size: 2em;
font-weight:bolder;
}
#tagCloud A.weight2
{
font-size:1.7em;
font-weight:bolder;
}
#tagCloud A.weight3
{
font-size: 1.4em;
font-weight:bolder;
}
#tagCloud A.weight4
{
font-size: 1.1em;
}
#tagCloud A.weight5
{
font-size: 0.8em;
}
#tagCloud span
{
font-size: 10px !Important;
color: #595a5a!Important;
font-weight: normal !Important;
}
/* CLEAR FIX */
clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.clearfix {
display: inline-block;
}
html[xmlns] .clearfix {
display: block;
}
* html .clearfix {
height: 1%;
}
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NotificationsCore;
using NotificationsWeb;
using umbraco.BusinessLogic;
using umbraco;
using umbraco.cms.businesslogic.member;
using Marketplace.Interfaces;
namespace Marketplace.Events
{
public class DeliNotificationEvents : ApplicationBase
{
protected void NewMemberNotification()
{
//memberTasks.NewMember += new memberTasks.NewUIMemberEventHandler(memberTasks_NewMember);
}
void memberTasks_NewMember(Member sender, string unencryptedPassword, NewMemberUIEventArgs e)
{
if ((bool)sender.getProperty("createdByDeli").Value)
{
InstantNotification not = new InstantNotification();
not.Invoke(Config.ConfigurationFile, Config.AssemblyDir, "DeliNewMember", sender, unencryptedPassword);
}
}
}
}
+75
View File
@@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Marketplace.Interfaces;
namespace Marketplace.Helpers
{
public static class ExtensionMethods
{
public static string ListingTypeAsString(this ListingType listingType)
{
switch (listingType)
{
case ListingType.free:
return "free";
break;
case ListingType.commercial:
return "commercial";
break;
case ListingType.promoted:
return "promoted";
break;
default:
return "free";
break;
}
}
public static string FileTypeAsString(this FileType fileType)
{
switch (fileType)
{
case FileType.screenshot:
return "screenshot";
break;
case FileType.package:
return "package";
break;
case FileType.docs:
return "docs";
break;
case FileType.source:
return "source";
break;
default:
return "package";
break;
}
}
public static string LicenseTypeAsString(this LicenseType licenseType)
{
switch (licenseType)
{
case LicenseType.Domain:
return "Domain";
break;
case LicenseType.IP:
return "IP";
break;
case LicenseType.Unlimited:
return "Unlimited";
break;
case LicenseType.SourceCode:
return "Source Code";
break;
default:
return "Domain";
break;
}
}
}
}
+29
View File
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using Marketplace.usercontrols.Deli.Package;
namespace Marketplace.Helpers
{
public static class ProjectCreatorHelper
{
public static void MoveToNextStep(UserControl control, int projectId)
{
Editor c = (Editor)control.Parent.Parent;
c.GotoNextStep(c.Step.Value, projectId);
}
public static void MoveToPreviousStep(UserControl control, int projectId)
{
Editor c = (Editor)control.Parent.Parent;
c.GoToPreviousStep(c.Step.Value, projectId);
}
}
}
+568
View File
@@ -0,0 +1,568 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Text;
using System.Collections.Specialized;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Providers.Orders;
using Marketplace.Providers.OrderNote;
using Marketplace.Providers.MemberLicense;
using Marketplace.Providers.Listing;
using Umbraco.Ecommerce.BusinessLogic;
using Umbraco.Ecommerce.PaymentMethods;
using umbraco.BusinessLogic;
using System.Configuration;
using NotificationsCore;
using System.Globalization;
namespace Marketplace.HttpHandlers
{
public class PayPalIPN
{
#region properties
private UmbracoEcommerceOrderProvider _orderProvider;
public UmbracoEcommerceOrderProvider OrderProvider
{
get
{
if (_orderProvider != null)
return _orderProvider;
else
{
_orderProvider = (UmbracoEcommerceOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
return _orderProvider;
}
}
}
public IOrder dOrder;
private IDeliOrderItemProvider _orderItemProvider;
public IDeliOrderItemProvider OrderItemProvider
{
get
{
if (_orderItemProvider != null)
return _orderItemProvider;
else
{
_orderItemProvider = (IDeliOrderItemProvider)MarketplaceProviderManager.Providers["OrderItemProvider"];
return _orderItemProvider;
}
}
}
private NodeListingProvider _listingProvider;
public NodeListingProvider ListingProvider
{
get
{
if (_listingProvider != null)
return _listingProvider;
else
{
_listingProvider = (NodeListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
return _listingProvider;
}
}
}
private OrderNoteProvider _orderNoteProvider;
public OrderNoteProvider OrderNoteProvider
{
get
{
if (_orderNoteProvider != null)
return _orderNoteProvider;
else
{
_orderNoteProvider = (OrderNoteProvider)MarketplaceProviderManager.Providers["OrderNoteProvider"];
return _orderNoteProvider;
}
}
}
private ILicenseProvider _licenseProvider;
public ILicenseProvider LicenseProvider
{
get
{
if (_licenseProvider != null)
return _licenseProvider;
else
{
_licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
return _licenseProvider;
}
}
}
public MemberLicense mLicense;
private IMemberLicenseProvider _memberLicenseProvider;
public IMemberLicenseProvider MemberLicenseProvider
{
get
{
if (_memberLicenseProvider != null)
return _memberLicenseProvider;
else
{
_memberLicenseProvider = (IMemberLicenseProvider)MarketplaceProviderManager.Providers["memberLicenseProvider"];
return _memberLicenseProvider;
}
}
}
private IMemberProvider _memberProvider;
public IMemberProvider MemberProvider
{
get
{
if (_memberProvider != null)
return _memberProvider;
else
{
_memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
return _memberProvider;
}
}
}
#endregion
public void Process(HttpContext context, bool TestMode)
{
try
{
if (VerifiedByPaypal(context, TestMode))
{
NameValueCollection form = context.Request.Form;
HandleOrder(form, TestMode);
}
else
{
string formStr = "";
foreach (string key in context.Request.Form.AllKeys)
formStr += key + ": " + context.Request.Form[key] + "...";
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "PAYPAL IPN: Response:" + formStr);
}
}
catch (Exception ex)
{
string formStr = "";
foreach (string key in context.Request.Form.AllKeys)
formStr += key + ": " + context.Request.Form[key] + "...";
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "PAYPAL IPN: Response: " + ex.ToString() + formStr);
}
}
public bool VerifiedByPaypal(HttpContext context, bool TestMode)
{
try
{
string _url = "https://www.paypal.com/cgi-bin/webscr";
if (TestMode)
{
_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = context.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = Encoding.UTF8.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;
// Modify the POST string.
string formPostData = "cmd = _notify-validate";
foreach (String postKey in context.Request.Form)
{
string postValue = Encode(context.Request.Form[postKey]);
formPostData += string.Format("&{0}={1}", postKey, postValue);
}
// POST the verification response back to PayPal.
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] postByteArray = Encoding.UTF8.GetBytes(formPostData);
byte[] responseArray = client.UploadData(_url, "POST", postByteArray);
string response = Encoding.UTF8.GetString(responseArray);
// check the response, return 'true' if its "VERIFIED"
return (response == "VERIFIED");
}
catch
{
return false;
}
}
public void TESTHandleOrder(NameValueCollection form, bool testMode)
{
try
{
string amount = form["amount"];
int invoice = int.Parse(form["invoice"]);
string status = form["payment_status"];
string txt_id = form["txn_id"];
// log the IPN response in the umbracoLog
string formStr = "";
foreach (string key in form.AllKeys)
formStr += key + ": " + form[key] + "....";
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN: - " + formStr);
}
catch (Exception ex)
{
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN ERROR: " + ex.ToString());
}
}
public void HandleOrder(NameValueCollection form, bool testMode)
{
try
{
string amount = form["mc_gross"];
int invoice = int.Parse(form["invoice"]);
string status = form["payment_status"];
string txt_id = form["txn_id"];
string NoteText = "";
// log the IPN response in the umbracoLog before anything else
string formStr = "";
foreach (string key in form.AllKeys)
formStr += key + ": " + form[key] + "....";
// getDeli Order
dOrder = OrderProvider.GetOrder(invoice);
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN: Order: " + dOrder.Id.ToString() + " - " + formStr);
switch (status)
{
case "Completed":
// make sure this isn't a duplicate from paypal
if (dOrder.Status != OrderStatus.Confirmed)
{
if (!testMode) // production!
{
NoteText = "order status changed from " + dOrder.Status.ToString() + " to " + OrderStatus.Confirmed.ToString() + "with transaction id: " + txt_id;
dOrder.Status = OrderStatus.Confirmed;
dOrder.TransactionId = txt_id;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, NoteText);
dOrder.PaymentDate = DateTime.Now.ToUniversalTime();
dOrder.ProcessedTotal = Convert.ToDouble(amount);
// create a MemberLicense for each OrderItem
foreach (IOrderItem item in dOrder.Items)
{
// create licenses for multiple quantity
for (int i = 0; i < item.Quantity; i++)
{
mLicense = new MemberLicense();
mLicense.LicenseId = LicenseProvider.GetLicense(item.LicenseId).Id;
mLicense.Member = dOrder.Member;
mLicense.OrderItemId = item.Id;
mLicense.ListingItemId = item.ListingItemId;
mLicense.CreateDate = DateTime.Now.ToUniversalTime();
mLicense.IsActive = true;
MemberLicenseProvider.SaveOrUpdate(mLicense);
}
}
OrderProvider.SaveOrUpdate(dOrder);
// webservice call to create order on umbraco.com
string invoicePath;
try
{
invoicePath = CreateDotComOrder(dOrder, txt_id);
}
catch (Exception e)
{
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN ERROR: " + e.Message + " :: " + e.InnerException + " :: " + e.StackTrace);
invoicePath = string.Empty;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, "Deli Error: invoice generation failed");
}
if (invoicePath.Length > 0)
{
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, "Deli invoice: " + invoicePath);
}
// send order complete mail
InstantNotification not = new InstantNotification();
not.Invoke(NotificationsWeb.Config.ConfigurationFile, NotificationsWeb.Config.AssemblyDir, "DeliOrderComplete", dOrder, dOrder.Member, txt_id);
foreach(var oi in dOrder.Items)
{
var listing = ListingProvider.GetListing(oi.ListingItemId,false);
var body = "<p>Hi " + listing.Vendor.Member.Name + ",</p><br/>" +
"<p>The following order has just been received for the following product on the Umbraco Deli</p><br/>" +
"<p><strong>" + listing.Name + " " + LicenseProvider.GetLicense(oi.LicenseId).LicenseType.ToString() + "</strong><br/>" +
"ordered by" + dOrder.Member.Name + " email " + dOrder.Member.Email + "</p>" +
"<br/><p>Best,<br/>The Umbraco Deli Robot</p>";
umbraco.library.SendMail("robot@umbraco.org", listing.Vendor.Member.Email, "New Deli Order", body, true);
}
}
else // test!
{
NoteText = "DEV order status changed from " + dOrder.Status.ToString() + " to " + OrderStatus.Confirmed.ToString() + "with transaction id: " + txt_id;
dOrder.Status = OrderStatus.Confirmed;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, NoteText);
dOrder.PaymentDate = DateTime.Now.ToUniversalTime();
dOrder.ProcessedTotal = Convert.ToDouble(amount);
// create a MemberLicense for each OrderItem
foreach (IOrderItem item in dOrder.Items)
{
// create licenses for multiple quantity
for (int i = 0; i < item.Quantity; i++)
{
mLicense = new MemberLicense();
mLicense.LicenseId = LicenseProvider.GetLicense(item.LicenseId).Id;
mLicense.Member = dOrder.Member;
mLicense.OrderItemId = item.Id;
mLicense.ListingItemId = item.ListingItemId;
mLicense.CreateDate = DateTime.Now.ToUniversalTime();
mLicense.IsActive = true;
MemberLicenseProvider.SaveOrUpdate(mLicense);
}
}
OrderProvider.SaveOrUpdate(dOrder);
// webservice call to create order on umbraco.com
string invoicePath;
try
{
invoicePath = CreateDotComOrder(dOrder, txt_id);
}
catch (Exception e)
{
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN ERROR: " + e.Message + " :: " + e.InnerException + " :: " + e.StackTrace);
invoicePath = string.Empty;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, "Deli Error: invoice generation failed - Error:" + e.Message + " :: " + e.InnerException + " :: " + e.StackTrace);
}
if (invoicePath.Length > 0)
{
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, "Deli invoice: " + invoicePath);
}
// send order complete mail
InstantNotification not = new InstantNotification();
not.Invoke(NotificationsWeb.Config.ConfigurationFile, NotificationsWeb.Config.AssemblyDir, "DeliOrderComplete", dOrder, dOrder.Member, txt_id);
foreach (var oi in dOrder.Items)
{
not.Invoke(NotificationsWeb.Config.ConfigurationFile, NotificationsWeb.Config.AssemblyDir, "DeliNotifyVendor", oi, dOrder.Member, oi.Id);
}
}
}
break;
case "Pending":
NoteText = "order status changed from " + dOrder.Status.ToString() + " to " + OrderStatus.Pending.ToString() + "with transaction id: " + txt_id;
dOrder.Status = OrderStatus.Pending;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, NoteText);
OrderProvider.SaveOrUpdate(dOrder);
break;
case "Failed":
NoteText = "order status changed from " + dOrder.Status.ToString() + " to " + OrderStatus.Rejected.ToString() + "with transaction id: " + txt_id;
dOrder.Status = OrderStatus.Rejected;
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, NoteText);
OrderProvider.SaveOrUpdate(dOrder);
break;
case "Refunded":
NoteText = "order status changed from " + dOrder.Status.ToString() + " to " + OrderStatus.Refunded.ToString() + "with transaction id: " + txt_id;
dOrder.Status = OrderStatus.Refunded;
dOrder.IsRefunded = true;
dOrder.RefundDate = DateTime.Now.ToUniversalTime();
OrderNoteProvider.AddOrderNote((int)dOrder.Id, (int)dOrder.Member.Id, NoteText);
// todo: revoke license here
// todo: mark specific OrderItems as Refunded
OrderProvider.SaveOrUpdate(dOrder);
break;
default:
break;
}
}
catch (Exception ex)
{
Log.Add(LogTypes.Debug, -1, "DELI PAYPAL IPN " + ex.Message + " :: " + ex.InnerException+ " :: " +ex.StackTrace);
}
}
public int CreateEcomOrder(IOrder o, bool TestMode)
{
try
{
// Create customer information
CustomerInfo ci = new CustomerInfo();
ci.AddData("id", o.Member.Id.ToString());
ci.AddData("email", o.Member.Email);
Guid payment = new CreditCard().Id;
// create order
Order providerOrder = Order.MakeNew(ci.ToXml(), o.Id.ToString(), payment, "deli order", o.Member.Email);
providerOrder.CustomerReference = o.Id.ToString();
providerOrder.ChangeStatus(Order.Status.Confirmed);
providerOrder.Comment = "deli order";
if(TestMode)
providerOrder.TestMode = true;
foreach(IOrderItem item in dOrder.Items)
{
OrderLine l = new OrderLine();
l.Quantity = item.Quantity;
l.ProductName = ListingProvider.GetListing(item.ListingItemId, false).Name + ", License: " + LicenseProvider.GetLicense(item.LicenseId).LicenseType.ToString();
l.Price = (decimal)item.NetPrice;
l.ProductId = item.ListingItemId.ToString();
l.Note = "deli order id: " + o.Id.ToString();
providerOrder.AddOrderLine(l);
}
// generate invoice
if(!TestMode)
providerOrder.GenerateInvoice(false);
else
providerOrder.GenerateInvoice(true);
return providerOrder.OrderId;
}
catch
{
return 0;
}
}
protected string CreateDotComOrder(IOrder dOrder, string transactionId)
{
com.umbraco.orders.Orders orderService = new com.umbraco.orders.Orders();
com.umbraco.orders.OrderProxy orderProxy = new com.umbraco.orders.OrderProxy();
com.umbraco.orders.BuyerProxy buyerProxy = new com.umbraco.orders.BuyerProxy();
// set up Ecomm Order
orderProxy.DeliOrderID = dOrder.Id;
orderProxy.PurchaseOrder = "";
orderProxy.TransactionID = transactionId;
// buyer
buyerProxy.ourMemberId = dOrder.Member.Id;
buyerProxy.ourMemberGuid = dOrder.Member.UniqueId;
buyerProxy.IP = dOrder.IP;
buyerProxy.Name = dOrder.Member.Name;
buyerProxy.Login = dOrder.Member.Name;
buyerProxy.Address = dOrder.Member.CompanyAddress;
buyerProxy.Company = dOrder.Member.Company;
buyerProxy.Country = Marketplace.library.GetCountry(dOrder.Member.CompanyCountry);
buyerProxy.Email = dOrder.CompanyInvoiceEmail;
buyerProxy.VAT = !dOrder.Member.VatInvalid ? dOrder.Member.CompanyVATNumber : "";
buyerProxy.Phone = "";
//order lines
var orderLineProxyList = new List<com.umbraco.orders.OrderLineProxy>();
foreach (IOrderItem item in dOrder.Items)
{
com.umbraco.orders.OrderLineProxy lineProxy = new com.umbraco.orders.OrderLineProxy();
IListingItem listingItem = ListingProvider.GetListing(item.ListingItemId);
lineProxy.VendorEconomicID = listingItem.Vendor.EconomicId;
lineProxy.Amount = (decimal)item.NetPrice;
lineProxy.Quantity = item.Quantity;
lineProxy.description = ListingProvider.GetListing(item.ListingItemId, false).Name + ", License Type: " + LicenseProvider.GetLicense(item.LicenseId).LicenseType.ToString();
// add order line to order
orderLineProxyList.Add(lineProxy);
}
orderProxy.OrderLines = orderLineProxyList.ToArray();
orderProxy.Buyer = buyerProxy;
bool isTestMode = bool.Parse(ConfigurationManager.AppSettings["deliPayPalTest"]);
com.umbraco.orders.OrderProxy returnOrderProxy = orderService.Create(orderProxy, isTestMode, ConfigurationManager.AppSettings["deliWebServiceUser"], ConfigurationManager.AppSettings["deliWebServicePass"]);
// set Ecomm order id
dOrder.OrderId = returnOrderProxy.EcommerceOrderID;
OrderProvider.SaveOrUpdate(dOrder);
return returnOrderProxy.InvoicePath;
}
#region Utilities
private string Encode(string oldValue)
{
string newValue = oldValue.Replace("\"", "'");
newValue = System.Web.HttpUtility.UrlEncode(newValue);
newValue = newValue.Replace("%2f", "/");
return newValue;
}
#endregion
}
}
@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Marketplace.HttpHandlers
{
public class PayPalIPNHandler : IHttpHandler
{
#region IHttpHandler Members
bool IHttpHandler.IsReusable
{
get { return true; }
}
void IHttpHandler.ProcessRequest(HttpContext context)
{
PayPalIPN ipn = new PayPalIPN();
ipn.Process(context, false);
}
#endregion
}
public class PayPalIPNHandlerTEST : IHttpHandler
{
#region IHttpHandlerTEST Members
bool IHttpHandler.IsReusable
{
get { return true; }
}
void IHttpHandler.ProcessRequest(HttpContext context)
{
PayPalIPN ipn = new PayPalIPN();
ipn.Process(context, true);
}
#endregion
}
}
+771
View File
@@ -0,0 +1,771 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6A2B659E-8BAE-4CD5-8764-851DFBE95FBF}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Marketplace</RootNamespace>
<AssemblyName>Marketplace</AssemblyName>
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
<UseIISExpress>false</UseIISExpress>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>4.0</OldToolsVersion>
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoMapper">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll</HintPath>
</Reference>
<Reference Include="AutoMapper.Net4">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath>
</Reference>
<Reference Include="businesslogic, Version=1.0.5350.25716, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\businesslogic.dll</HintPath>
</Reference>
<Reference Include="ClientDependency.Core">
<HintPath>..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll</HintPath>
</Reference>
<Reference Include="ClientDependency.Core.Mvc">
<HintPath>..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll</HintPath>
</Reference>
<Reference Include="cms, Version=1.0.5350.25716, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\cms.dll</HintPath>
</Reference>
<Reference Include="controls">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\controls.dll</HintPath>
</Reference>
<Reference Include="CookComputing.XmlRpcV2">
<HintPath>..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll</HintPath>
</Reference>
<Reference Include="Examine">
<HintPath>..\packages\Examine.0.1.57.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="HtmlAgilityPack">
<HintPath>..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="ImageProcessor">
<HintPath>..\packages\ImageProcessor.1.9.5.0\lib\ImageProcessor.dll</HintPath>
</Reference>
<Reference Include="ImageProcessor.Web">
<HintPath>..\packages\ImageProcessor.Web.3.3.0.0\lib\net45\ImageProcessor.Web.dll</HintPath>
</Reference>
<Reference Include="interfaces, Version=1.0.5350.25713, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\interfaces.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\log4net.dll</HintPath>
</Reference>
<Reference Include="Lucene.Net">
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
</Reference>
<Reference Include="Marketplace.BusinessLogic, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.BusinessLogic.dll</HintPath>
</Reference>
<Reference Include="Marketplace.Data, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.Data.dll</HintPath>
</Reference>
<Reference Include="Marketplace.Interfaces, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.Interfaces.dll</HintPath>
</Reference>
<Reference Include="Marketplace.Presentation">
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.Presentation.dll</HintPath>
</Reference>
<Reference Include="Marketplace.Providers, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.Providers.dll</HintPath>
</Reference>
<Reference Include="Marketplace.Umbraco, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Our\dependencies\MarketPlace\Marketplace.Umbraco.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationBlocks.Data">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Helpers">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\Microsoft.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Mvc.FixedDisplayModes">
<HintPath>..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.1\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll</HintPath>
</Reference>
<Reference Include="MiniProfiler">
<HintPath>..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NotificationsCore">
<HintPath>..\forigndlls\NotificationsCore.dll</HintPath>
</Reference>
<Reference Include="NotificationsWeb">
<HintPath>..\forigndlls\NotificationsWeb.dll</HintPath>
</Reference>
<Reference Include="our.umbraco.org, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\forigndlls\our.umbraco.org.dll</HintPath>
</Reference>
<Reference Include="SQLCE4Umbraco">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\SQLCE4Umbraco.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\System.Data.SqlServerCe.dll</HintPath>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20710.0\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TidyNet">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\TidyNet.dll</HintPath>
</Reference>
<Reference Include="uComponents.Core, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\forigndlls\uComponents.Core.dll</HintPath>
</Reference>
<Reference Include="uForum, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\forigndlls\uForum.dll</HintPath>
</Reference>
<Reference Include="umbraco, Version=1.0.5350.25719, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.dll</HintPath>
</Reference>
<Reference Include="Umbraco.Core">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\Umbraco.Core.dll</HintPath>
</Reference>
<Reference Include="umbraco.DataLayer">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.DataLayer.dll</HintPath>
</Reference>
<Reference Include="Umbraco.Ecommerce, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\forigndlls\Umbraco.Ecommerce.dll</HintPath>
</Reference>
<Reference Include="umbraco.editorControls, Version=1.0.5350.25721, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.editorControls.dll</HintPath>
</Reference>
<Reference Include="umbraco.MacroEngines">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.MacroEngines.dll</HintPath>
</Reference>
<Reference Include="umbraco.providers">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.providers.dll</HintPath>
</Reference>
<Reference Include="Umbraco.Support">
<HintPath>..\forigndlls\Umbraco.Support.dll</HintPath>
</Reference>
<Reference Include="Umbraco.Web.UI">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\Umbraco.Web.UI.dll</HintPath>
</Reference>
<Reference Include="umbraco.XmlSerializers">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\umbraco.XmlSerializers.dll</HintPath>
</Reference>
<Reference Include="UmbracoExamine">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\UmbracoExamine.dll</HintPath>
</Reference>
<Reference Include="umbracoMemberControls, Version=1.0.2259.24439, Culture=neutral">
<HintPath>..\forigndlls\umbracoMemberControls.dll</HintPath>
</Reference>
<Reference Include="uPowers, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\forigndlls\uPowers.dll</HintPath>
</Reference>
<Reference Include="UrlRewritingNet.UrlRewriter">
<HintPath>..\packages\UmbracoCms.Core.7.1.6\lib\UrlRewritingNet.UrlRewriter.dll</HintPath>
</Reference>
<Reference Include="uVersion">
<HintPath>..\forigndlls\uVersion.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="adhoc\setalllive.aspx.cs">
<DependentUpon>setalllive.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="adhoc\setalllive.aspx.designer.cs">
<DependentUpon>setalllive.aspx</DependentUpon>
</Compile>
<Compile Include="Controls\CountryDropDown.cs" />
<Compile Include="Events\DeliNotificationEvents.cs" />
<Compile Include="Helpers\ExtensionMethods.cs" />
<Compile Include="Helpers\Helper.cs" />
<Compile Include="HttpHandlers\PayPalIPN.cs" />
<Compile Include="HttpHandlers\PayPalIPNHandler.cs" />
<Compile Include="library.cs" />
<Compile Include="NotificationTypes\DeliNotifyVendor.cs" />
<Compile Include="NotificationTypes\DeliNewMember.cs" />
<Compile Include="NotificationTypes\DeliOrderComplete.cs" />
<Compile Include="NotificationTypes\DeliPayoutRequest.cs" />
<Compile Include="ProjectFileUploadHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
<Compile Include="Razor\VersionCompatibilityReport.cs" />
<Compile Include="Rest.cs" />
<Compile Include="usercontrols\Deli\Admin\OrderReview.ascx.cs">
<DependentUpon>OrderReview.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Admin\OrderReview.ascx.designer.cs">
<DependentUpon>OrderReview.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Admin\ProcessRefund.ascx.cs">
<DependentUpon>ProcessRefund.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Admin\ProcessRefund.ascx.designer.cs">
<DependentUpon>ProcessRefund.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Admin\VendorPayout.ascx.cs">
<DependentUpon>VendorPayout.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Admin\VendorPayout.ascx.designer.cs">
<DependentUpon>VendorPayout.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Admin\VendorPayoutReport.ascx.cs">
<DependentUpon>VendorPayoutReport.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Admin\VendorPayoutReport.ascx.designer.cs">
<DependentUpon>VendorPayoutReport.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Cart\Cart.ascx.cs">
<DependentUpon>Cart.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Cart\Cart.ascx.designer.cs">
<DependentUpon>Cart.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartDetails.ascx.cs">
<DependentUpon>CartDetails.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartDetails.ascx.designer.cs">
<DependentUpon>CartDetails.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartProgress.ascx.cs">
<DependentUpon>CartProgress.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartProgress.ascx.designer.cs">
<DependentUpon>CartProgress.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartReview.ascx.cs">
<DependentUpon>CartReview.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Cart\CartReview.ascx.designer.cs">
<DependentUpon>CartReview.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Cart\MicroCart.ascx.cs">
<DependentUpon>MicroCart.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Cart\MicroCart.ascx.designer.cs">
<DependentUpon>MicroCart.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Customers\VendorCustomers.ascx.cs">
<DependentUpon>VendorCustomers.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Customers\VendorCustomers.ascx.designer.cs">
<DependentUpon>VendorCustomers.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Dashboard\VendorBIOverview.ascx.cs">
<DependentUpon>VendorBIOverview.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Dashboard\VendorBIOverview.ascx.designer.cs">
<DependentUpon>VendorBIOverview.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Dashboard\VendorProjectBI.ascx.cs">
<DependentUpon>VendorProjectBI.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Dashboard\VendorProjectBI.ascx.designer.cs">
<DependentUpon>VendorProjectBI.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\FeaturedProject.ascx.cs">
<DependentUpon>FeaturedProject.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\FeaturedProject.ascx.designer.cs">
<DependentUpon>FeaturedProject.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\HQStaffPickProjects.ascx.cs">
<DependentUpon>HQStaffPickProjects.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\HQStaffPickProjects.ascx.designer.cs">
<DependentUpon>HQStaffPickProjects.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\License\Member\MyLicenses.ascx.cs">
<DependentUpon>MyLicenses.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\License\Member\MyLicenses.ascx.designer.cs">
<DependentUpon>MyLicenses.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\License\Vendor\ProjectLicenses.ascx.cs">
<DependentUpon>ProjectLicenses.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\License\Vendor\ProjectLicenses.ascx.designer.cs">
<DependentUpon>ProjectLicenses.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\ListPagination.ascx.cs">
<DependentUpon>ListPagination.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\ListPagination.ascx.designer.cs">
<DependentUpon>ListPagination.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\NewestProjects.ascx.cs">
<DependentUpon>NewestProjects.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\NewestProjects.ascx.designer.cs">
<DependentUpon>NewestProjects.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Complete.ascx.cs">
<DependentUpon>Complete.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Complete.ascx.designer.cs">
<DependentUpon>Complete.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Licenses.ascx.cs">
<DependentUpon>Licenses.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Licenses.ascx.designer.cs">
<DependentUpon>Licenses.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Screenshots.ascx.cs">
<DependentUpon>Screenshots.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Screenshots.ascx.designer.cs">
<DependentUpon>Screenshots.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Details.ascx.cs">
<DependentUpon>Details.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Details.ascx.designer.cs">
<DependentUpon>Details.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Editor.ascx.cs">
<DependentUpon>Editor.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Editor.ascx.designer.cs">
<DependentUpon>Editor.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Files.ascx.cs">
<DependentUpon>Files.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Package\Steps\Files.ascx.designer.cs">
<DependentUpon>Files.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Payout\VendorPayout.ascx.cs">
<DependentUpon>VendorPayout.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Payout\VendorPayout.ascx.designer.cs">
<DependentUpon>VendorPayout.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Payout\VendorPayoutHistory.ascx.cs">
<DependentUpon>VendorPayoutHistory.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Payout\VendorPayoutHistory.ascx.designer.cs">
<DependentUpon>VendorPayoutHistory.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\PopularProjects.ascx.cs">
<DependentUpon>PopularProjects.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\PopularProjects.ascx.designer.cs">
<DependentUpon>PopularProjects.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Profile\MemberDataLookup.ascx.cs">
<DependentUpon>MemberDataLookup.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Profile\MemberDataLookup.ascx.designer.cs">
<DependentUpon>MemberDataLookup.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Profile\MyProjects.ascx.cs">
<DependentUpon>MyProjects.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Profile\MyProjects.ascx.designer.cs">
<DependentUpon>MyProjects.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Profile\Signup.ascx.cs">
<DependentUpon>Signup.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Profile\Signup.ascx.designer.cs">
<DependentUpon>Signup.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\ProjectsList.ascx.cs">
<DependentUpon>ProjectsList.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\ProjectsList.ascx.designer.cs">
<DependentUpon>ProjectsList.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\ProjectView.ascx.cs">
<DependentUpon>ProjectView.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\ProjectView.ascx.designer.cs">
<DependentUpon>ProjectView.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Purchase\PayPalConfirm.ascx.cs">
<DependentUpon>PayPalConfirm.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Purchase\PayPalConfirm.ascx.designer.cs">
<DependentUpon>PayPalConfirm.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Purchase\PayPalPayment.ascx.cs">
<DependentUpon>PayPalPayment.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Purchase\PayPalPayment.ascx.designer.cs">
<DependentUpon>PayPalPayment.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Repository\RepoProjectView.ascx.cs">
<DependentUpon>RepoProjectView.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Repository\RepoProjectView.ascx.designer.cs">
<DependentUpon>RepoProjectView.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Support\Member\RefundRequest.ascx.cs">
<DependentUpon>RefundRequest.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Support\Member\RefundRequest.ascx.designer.cs">
<DependentUpon>RefundRequest.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\Support\Vendor\VendorSupportRequest.ascx.cs">
<DependentUpon>VendorSupportRequest.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\Support\Vendor\VendorSupportRequest.ascx.designer.cs">
<DependentUpon>VendorSupportRequest.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\Deli\TopPaidProjectsList.ascx.cs">
<DependentUpon>TopPaidProjectsList.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\Deli\TopPaidProjectsList.ascx.designer.cs">
<DependentUpon>TopPaidProjectsList.ascx</DependentUpon>
</Compile>
<Compile Include="usercontrols\our.umbraco.org\Login_novalidationscript.ascx.cs">
<DependentUpon>Login_novalidationscript.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="usercontrols\our.umbraco.org\Login_novalidationscript.ascx.designer.cs">
<DependentUpon>Login_novalidationscript.ascx</DependentUpon>
</Compile>
<Compile Include="uVersion\config.cs" />
<Compile Include="uVersion\uVersion.cs" />
<Compile Include="Web References\com.umbraco.orders\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
<Compile Include="Web References\com.umbraco\Reference.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Reference.map</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="adhoc\setalllive.aspx" />
<Content Include="Css\Deli.css" />
<Content Include="Css\DeliAdmin.css" />
<Content Include="Razor\versionCompatibilityReport.cshtml" />
<Content Include="packages.config" />
<None Include="Razor\versionCompatibility.cshtml" />
<Content Include="usercontrols\Deli\Admin\OrderReview.ascx" />
<Content Include="usercontrols\Deli\Admin\ProcessRefund.ascx" />
<Content Include="usercontrols\Deli\Admin\VendorPayout.ascx" />
<Content Include="usercontrols\Deli\Admin\VendorPayoutReport.ascx" />
<Content Include="usercontrols\Deli\Cart\Cart.ascx" />
<Content Include="usercontrols\Deli\Cart\CartDetails.ascx" />
<Content Include="usercontrols\Deli\Cart\CartProgress.ascx" />
<Content Include="usercontrols\Deli\Cart\CartReview.ascx" />
<Content Include="usercontrols\Deli\Cart\MicroCart.ascx" />
<Content Include="usercontrols\Deli\Customers\VendorCustomers.ascx" />
<Content Include="usercontrols\Deli\Dashboard\VendorBIOverview.ascx" />
<Content Include="usercontrols\Deli\Dashboard\VendorProjectBI.ascx" />
<Content Include="usercontrols\Deli\FeaturedProject.ascx" />
<Content Include="usercontrols\Deli\HQStaffPickProjects.ascx" />
<Content Include="usercontrols\Deli\License\Member\MyLicenses.ascx" />
<Content Include="usercontrols\Deli\License\Vendor\ProjectLicenses.ascx" />
<Content Include="usercontrols\Deli\ListPagination.ascx" />
<Content Include="usercontrols\Deli\NewestProjects.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Complete.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Licenses.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Screenshots.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Details.ascx" />
<Content Include="usercontrols\Deli\Package\Editor.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Files.ascx" />
<Content Include="usercontrols\Deli\Payout\VendorPayout.ascx" />
<Content Include="usercontrols\Deli\Payout\VendorPayoutHistory.ascx" />
<Content Include="usercontrols\Deli\PopularProjects.ascx" />
<Content Include="usercontrols\Deli\Profile\MemberDataLookup.ascx" />
<Content Include="usercontrols\Deli\Profile\MyProjects.ascx" />
<Content Include="usercontrols\Deli\Profile\Signup.ascx" />
<Content Include="usercontrols\Deli\ProjectsList.ascx" />
<Content Include="usercontrols\our.umbraco.org\Login_novalidationscript.ascx" />
<Content Include="xslt\Deli-repository.xslt" />
</ItemGroup>
<ItemGroup>
<Content Include="usercontrols\Deli\ProjectView.ascx" />
<Content Include="usercontrols\Deli\Purchase\PayPalConfirm.ascx" />
<Content Include="usercontrols\Deli\Purchase\PayPalPayment.ascx" />
<Content Include="usercontrols\Deli\Repository\RepoProjectView.ascx" />
<Content Include="usercontrols\Deli\Support\Member\RefundRequest.ascx" />
<Content Include="usercontrols\Deli\Support\Vendor\VendorSupportRequest.ascx" />
<Content Include="usercontrols\Deli\TopPaidProjectsList.ascx" />
<Content Include="usercontrols\our.umbraco.org\HeaderLogin.ascx" />
<Content Include="usercontrols\umbracoMemberControls\umbLogin.ascx" />
<Content Include="MasterPages\newest.master" />
<Content Include="MasterPages\popular.master" />
<Content Include="MasterPages\Deli.master" />
<Content Include="MasterPages\Repository\Community.master" />
<Content Include="MasterPages\Repository\Master.master" />
<Content Include="MasterPages\Repository\Nothing.master" />
<Content Include="MasterPages\Repository\Project.master" />
<Content Include="MasterPages\Repository\ProjectGroup.master" />
<Content Include="MasterPages\Repository\Projects.master" />
<Content Include="MasterPages\Repository\ProjectsTags.master" />
<Content Include="MasterPages\Repository\Textpage.master" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<None Include="Web References\com.umbraco.orders\BuyerProxy.datasource">
<DependentUpon>Reference.map</DependentUpon>
</None>
<None Include="Web References\com.umbraco.orders\OrderProxy.datasource">
<DependentUpon>Reference.map</DependentUpon>
</None>
<None Include="Web References\com.umbraco.orders\orders.wsdl" />
<None Include="Web References\com.umbraco.orders\Reference.map">
<Generator>MSDiscoCodeGenerator</Generator>
<LastGenOutput>Reference.cs</LastGenOutput>
</None>
<None Include="Web References\com.umbraco\MemberData.datasource">
<DependentUpon>Reference.map</DependentUpon>
</None>
<None Include="Web References\com.umbraco\memberlookup.disco" />
<None Include="Web References\com.umbraco.orders\orders.disco" />
<Content Include="Web.config">
<SubType>Designer</SubType>
</Content>
<None Include="Web References\com.umbraco\memberlookup.wsdl" />
<None Include="Web References\com.umbraco\Reference.map">
<Generator>MSDiscoCodeGenerator</Generator>
<LastGenOutput>Reference.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Razor\Deli-TagCloud.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Razor\Deli-ProjectCategories.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="MasterPages\ConfigureProjectLicenses.master" />
<Content Include="MasterPages\DeliCart.master" />
<Content Include="MasterPages\DeliCartDetails.master" />
<Content Include="MasterPages\EditProject.master" />
<Content Include="MasterPages\Master.master" />
<Content Include="MasterPages\PayPalRedirect.master" />
<Content Include="MasterPages\Project.master" />
<Content Include="MasterPages\ProjectGroup.master" />
<Content Include="MasterPages\Projects.master" />
<Content Include="MasterPages\ProjectsTags.master" />
</ItemGroup>
<ItemGroup>
<Content Include="Razor\Deli-MyProjects.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="NotificationTypes\Notification.config">
<SubType>Designer</SubType>
</Content>
</ItemGroup>
<ItemGroup>
<WebReferences Include="Web References\" />
</ItemGroup>
<ItemGroup>
<WebReferenceUrl Include="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx">
<UrlBehavior>Dynamic</UrlBehavior>
<RelPath>Web References\com.umbraco\</RelPath>
<UpdateFromURL>http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx</UpdateFromURL>
<ServiceLocationURL>
</ServiceLocationURL>
<CachedDynamicPropName>
</CachedDynamicPropName>
<CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
<CachedSettingsPropName>Marketplace_com_umbraco_MemberLookUp</CachedSettingsPropName>
</WebReferenceUrl>
<WebReferenceUrl Include="http://umbraco.com/webservices/orders.asmx">
<UrlBehavior>Dynamic</UrlBehavior>
<RelPath>Web References\com.umbraco.orders\</RelPath>
<UpdateFromURL>http://umbraco.com/webservices/orders.asmx</UpdateFromURL>
<ServiceLocationURL>
</ServiceLocationURL>
<CachedDynamicPropName>
</CachedDynamicPropName>
<CachedAppSettingsObjectName>Settings</CachedAppSettingsObjectName>
<CachedSettingsPropName>Marketplace_com_umbraco_orders_Orders</CachedSettingsPropName>
</WebReferenceUrl>
</ItemGroup>
<ItemGroup />
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>54542</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>
</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<PropertyGroup>
<PostBuildEvent>xcopy /s /y "$(TargetDir)marketplace*.*" "$(SolutionDir)OurUmbraco.Site\bin\"
xcopy /s /y "$(ProjectDir)*.ascx" "$(SolutionDir)OurUmbraco.Site\"
xcopy /s /y "$(ProjectDir)razor\*.cshtml" "$(SolutionDir)OurUmbraco.Site\macroscripts\"
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -0,0 +1,13 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Head" runat="server">
</asp:Content>
<asp:content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage wrapper">
<umbraco:Macro Alias="Deli-ProjectLicenseConfiguration" runat="server"></umbraco:Macro>
</div>
</asp:content>
+40
View File
@@ -0,0 +1,40 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<asp:ContentPlaceHolder Id="TitleArea" runat="server">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<umbraco:Item field="pageName" runat="server"></umbraco:Item>
</asp:ContentPlaceHolder>
<div class="options">
<%if(umbraco.library.IsLoggedOn()){ %>
<a class="act add" href="/member/profile/projects">Create a new project</a>
<% } %>
</div>
<div class="deliLeft">
<div class="deliNav">
<umbraco:Macro ID="Macro1" Alias="Deli-ProjectCategories" runat="server"></umbraco:Macro>
</div>
<div class="deliNav paid">
<h3>Top Paid Packages</h3>
<umbraco:Macro Alias="Deli-TopPaid" runat="server"></umbraco:Macro>
</div>
<div class="deliNav hqPicks">
<h3>HQ Picks</h3>
<umbraco:Macro PickedProjects="[$hQPicks]" Alias="Deli-HQPickedProjects" runat="server"></umbraco:Macro>
</div>
</div>
<div class="deliRight">
<asp:ContentPlaceHolder Id="DeliRight" runat="server" />
</div>
</div>
</asp:Content>
+20
View File
@@ -0,0 +1,20 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:content ContentPlaceHolderId="Head" runat="server">
</asp:content>
<asp:content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div style="margin-top: 25px;">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="pageName" runat="server"></umbraco:Item></h1>
<umbraco:Macro CurrentStepIndex="[#stepIndex]" Alias="Deli-CartProgress" runat="server"></umbraco:Macro>
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
</div>
</asp:content>
@@ -0,0 +1,19 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:content ContentPlaceHolderId="Head" runat="server">
</asp:content>
<asp:content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div style="margin-top: 25px;">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
</div>
</asp:content>
@@ -0,0 +1,25 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Head" runat="server">
<script type="text/javascript" src="/scripts/projects/jquery.tagger.js"></script>
<script type="text/javascript" src="/scripts/projects/jquery.autocomplete.js"></script>
</asp:Content>
<asp:content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage wrapper">
<div style="margin-top: 25px;">
<umbraco:Macro Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="pageName" runat="server"></umbraco:Item></h1>
<div class="options">
<umbraco:Macro source="1057" Alias="Member-ProfileNavigation" runat="server"></umbraco:Macro>
</div>
<umbraco:Macro Alias="Deli-CreateProject" runat="server"></umbraco:Macro>
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
</div>
</asp:content>
+146
View File
@@ -0,0 +1,146 @@
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head runat="server">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="alternate" type="application/rss+xml" title="Latest packages" href="http://our.umbraco.org/rss/projects" />
<link rel="alternate" type="application/rss+xml" title="Package updates" href="http://our.umbraco.org/rss/projectsupdate" />
<link rel="alternate" type="application/rss+xml" title="Latest documentation" href="http://our.umbraco.org/rss/wiki" />
<link rel="alternate" type="application/rss+xml" title="Documentation updates" href="http://our.umbraco.org/rss/wikiupdate" />
<link rel="alternate" type="application/rss+xml" title="Active forum topics" href="http://our.umbraco.org/rss/activetopics" />
<link rel="alternate" type="application/rss+xml" title="Community blogs" href="http://pipes.yahoo.com/pipes/pipe.run?_id=8llM7pvk3RGFfPy4pgt1Yg&_render=rss" />
<link rel="search" type="application/opensearchdescription+xml" title="our.umbraco.org" href="/scripts/OpenSearch.xml">
<link rel="shortcut icon" type="image/x-icon" href="/css/img/our.favicon.png"/>
<title><umbraco:Macro Alias="Title" runat="server"></umbraco:Macro></title>
<link rel="stylesheet" type="text/css" href="/css/community.css?v=4&update=yes" />
<link rel="stylesheet" type="text/css" href="/css/forum.css?v=2" />
<link rel="stylesheet" type="text/css" href="/css/wiki.css?v=4" />
<link rel="stylesheet" type="text/css" href="/css/deli.css?v=2" />
<link rel="stylesheet" type="text/css" href="/css/fonts.css?v=2" />
<link rel="stylesheet" type="text/css" href="/css/jquery.tabs.css?v=2" />
<link rel="stylesheet" type="text/css" href="/css/events.css?v=2" />
<link rel="stylesheet" type="text/css" href="/css/notifications.css?u=yes" />
<script type="text/javascript" src="/scripts/libs/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/scripts/community.js?v=2"></script>
<script type="text/javascript" src="/scripts/powers/uPowers.js?v=2.5"></script>
<script type="text/javascript" src="/scripts/jquery.validation.js"></script>
<script type="text/javascript" src="/scripts/notifications/notifications.js?ay=y"></script>
<script src="/scripts/libs/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/scripts/libs/SimpleModal.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages: ['corechart']});
</script>
<umbraco:Macro Alias="Member-JsValues" runat="server"></umbraco:Macro>
<asp:ContentPlaceHolder Id="Head" runat="server"></asp:ContentPlaceHolder>
</head>
<body>
<div id="main">
<form runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<div id="topNotificationContainer">
<div class="topNotification">
<span class="notifyClose">
x
</span>
First time here? Check out the <a href="#">FAQ</a>
</div>
</div>
<asp:ContentPlaceHolder Id="Top" runat="server">
<div id="top">
<div id="memberInfo">
<div class="wrapper">
<div id="memberHeaderProfile">
<umbraco:Macro ProfilePage="1057" LoginPage="1056" CreatePage="1071" BlockedPage="5571" Alias="MemberTopProfile" runat="server"></umbraco:Macro>
<umbraco:Macro Alias="Deli-MicroCart" runat="server"></umbraco:Macro>
</div>
</div>
</div>
<div class="wrapper">
<a href="/" id="logo" title="Our umbraco dot org">our.umbraco.org</a>
<umbraco:Macro Alias="TopNavigation" runat="server"></umbraco:Macro>
</div>
</div>
<umbraco:Macro Alias="SearchField" runat="server"></umbraco:Macro>
</asp:ContentPlaceHolder>
<umbraco:Item field="mainNotification" insertTextBefore="&lt;div id=&quot;notification&quot;&gt;" insertTextAfter="&lt;/div&gt;" recursive="true" runat="server"></umbraco:Item>
<div id="contentArea">
<asp:ContentPlaceHolder Id="SpecialContent" runat="server"/>
<asp:ContentPlaceHolder Id="Main" runat="server">
<div id="body" class="subpage wrapper">
<div style="margin-top: 25px;">
<umbraco:Macro Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="alternativeHeadline" useIfEmpty="pageName" runat="server"></umbraco:Item></h1>
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
</div>
</asp:ContentPlaceHolder>
</div>
<div class="push"></div>
</form>
</div>
<div id="footer">
Our.umbraco.org is the community mothership for <a href="http://umbraco.org" title="Go to umbraco.org">Umbraco, the open source asp.net cms</a>.
With a <a href="/forum">friendly forum</a> for all your questions, a comprehensive <a href="/wiki">documentation wiki</a> and the a ton of <a href="/projects">packages, extensions and extras</a> from the community.
</div>
<div id="votingModal" style="display: none;">
<h3></h3><p></p>
<textarea rows="4" cols="10"></textarea>
<small>Please enter atleast 50 characters (<em class="counter">50</em> remaining)
<input type="button" value="submit" /> <em> or </em> <a href="#" class="simplemodal-close">cancel</a>
</small>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-120590-4");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
</asp:Content>
@@ -0,0 +1,38 @@
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><umbraco:Item ID="Item1" field="pageName" runat="server"></umbraco:Item> - Umbraco.org - the friendly CMS</title>
<link media="screen" type="text/css" rel="stylesheet" href="/css/screen.css" />
<link media="screen" type="text/css" rel="stylesheet" href="/css/custom.css" />
<script type="text/javascript" src="/scripts/libs/jquery-1.3.2.min.js"></script>
</head>
<body class='redirecting'>
<div>
<h1>Please wait...</h1>
<p>
We are redirecting you to paypal.com, where you can pay your order securely. Please do not hit the "back" or "forward"
navigation buttons on your browser.
</p>
<p>
Thank you for your patience
</p>
<img src="/images/custom/loadanim.gif" />
</div>
<umbraco:Macro ID="Macro1" Alias="Deli-CartPayment" runat="server"></umbraco:Macro>
</body>
</html>
</asp:Content>
+44
View File
@@ -0,0 +1,44 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Head" runat="server">
<script type="text/javascript" src="/scripts/projects/projects.js?v=2"></script>
<script type="text/javascript" src="/scripts/projects/jquery.tagger.js"></script>
<script type="text/javascript" src="/scripts/projects/jquery.autocomplete.js"></script>
<link rel="stylesheet" type="text/css" href="/css/shadowbox.css" />
<script type="text/javascript" src="/scripts/shadowbox/shadowbox.js"></script>
<script type="text/javascript">
Shadowbox.init({overlayColor:'#ffffff',overlayOpacity: '0.01',onFinish:addClickClose});
function addClickClose(){
$('#sb-content').unbind('click').click(function(){ Shadowbox.close(); });
}
</script>
</asp:Content>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div style="margin-top: 25px;">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<umbraco:Macro Alias="Deli-ProjectView" runat="server"></umbraco:Macro>
<div id="forum" style="width:620px; margin-left: 75px">
<% if( umbraco.presentation.nodeFactory.Node.GetCurrent().Children.Count > 0 ){ %>
<h3>Package discussions</h3>
<umbraco:Macro Alias="Forum-overview" runat="server"></umbraco:Macro>
<%
}
%>
</div>
</div>
</asp:Content>
@@ -0,0 +1,38 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="pageName" runat="server"></umbraco:Item></h1>
<div class="options">
<%if(umbraco.library.IsLoggedOn()){ %>
<a class="act add" href="/member/profile/projects">Create a new project</a>
<% } %>
</div>
<div class="deliLeft">
<div class="deliNav">
<umbraco:Macro ID="Macro1" Alias="Deli-ProjectCategories" runat="server"></umbraco:Macro>
</div>
<div class="deliNav paid">
<h3>Top Paid Packages</h3>
<umbraco:Macro Alias="Deli-TopPaid" runat="server"></umbraco:Macro>
</div>
<div class="deliNav hqPicks">
<h3>HQ Picks</h3>
<umbraco:Macro PickedProjects="[$hQPicks]" Alias="Deli-HQPickedProjects" runat="server"></umbraco:Macro>
</div>
</div>
<div class="deliRight">
<div class="deliPromoBox popular clearfix">
<umbraco:Macro PageNumber="[@page]" IsCategoryListing="1" MaxPageSize="20" viewAll="[@ViewAll]" Alias="Deli-ProjectListing" runat="server"></umbraco:Macro>
</div>
</div>
</div>
</asp:Content>
+68
View File
@@ -0,0 +1,68 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<%-- div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="pageName" runat="server"></umbraco:Item></h1 --%>
<div class="options">
<%if(umbraco.library.IsLoggedOn()){ %>
<a class="act add" href="/member/profile/projects">Create a new project</a>
<% } %>
</div>
<div class="deliLeft">
<div class="deliNav">
<umbraco:Macro Alias="Deli-ProjectCategories" runat="server"></umbraco:Macro>
</div>
<div class="deliNav paid">
<h3>Top Paid Packages</h3>
<umbraco:Macro Alias="Deli-TopPaid" runat="server"></umbraco:Macro>
</div>
<div class="deliNav hqPicks">
<h3>HQ Picks</h3>
<umbraco:Macro PickedProjects="[#hQPicks]" Alias="Deli-HQPickedProjects" runat="server"></umbraco:Macro>
</div>
<div class="deliNav deliHelp">
<h3>About Deli</h3>
<ul>
<li><a href="/wiki/deli/deli-getting-started/">List your package</a><br /><small>Both free and commercial</small></li>
<li><a href="/wiki/deli/deli-member-faq/">FAQ</a><br /><small>For purchasers</small></li>
<li><a href="/wiki/deli/umbraco-deli-package-license-agreement-standard/">Standard Commercial License</a><br /><small>For packages</small></li>
<li><a href="http://umbraco.com/contact/send-us-an-email">More Questions?</a><br /><small>Need more? Contact us here</small></li>
</ul>
</div>
</div>
<div class="deliRightWrapper">
<div class="deliRight">
<div class="deliFeatureBox clearfix">
<umbraco:Macro projectId="[#featuredProject]" FeatureImage="[#featuredProjectImage]" Alias="Deli-FeatureProject" runat="server"></umbraco:Macro>
</div>
<div class="deliPromoBox popular clearfix">
<h2>Popular Packages</h2>
<a href="<%= Request.Url + "popular/" %>" class="viewAll">All popular</a>
<umbraco:Macro MaxPageSize="8" paged="0" Alias="Deli-PopularProjects" runat="server"></umbraco:Macro>
</div>
<div class="deliPromoBox new clearfix">
<h2>New Packages</h2>
<a href="<%= Request.Url + "newest/" %>" class="viewAll">All new</a>
<umbraco:Macro MaxPageSize="4" paged="0" Alias="Deli-NewestProjects" runat="server"></umbraco:Macro>
</div>
<div style="margin-top:10px; text-align:center; border:0; background:#eee;" class="deliNotification">List your package here! Whether it's free or a commercial, it's easy to list in the Deli. <a href="/wiki/deli/deli-getting-started/">Get started today</a></div>
<div class="deliPromoBox deliTags">
<h2>Browse by Tag</h2>
<umbraco:Macro ID="Macro1" Alias="Deli-TagCloud" runat="server"></umbraco:Macro>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
@@ -0,0 +1,22 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Deli.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="TitleArea" runat="server">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1>Browse projects by tag</h1>
</asp:Content>
<asp:content ContentPlaceHolderId="DeliRight" runat="server">
<div id="projectList" class="deliPromoBox clearfix">
<h2>Browse by tag</h2>
<umbraco:Macro Alias="Deli-TagCloud" runat="server"></umbraco:Macro>
</div>
<div class="deliPromoBox clearfix">
<h2>Projects tagged with: <%= Request["tag"] %> </h2>
<umbraco:Macro PageNumber="[@page]" IsCategoryListing="0" MaxPageSize="20" viewAll="[@ViewAll]" Alias="Deli-ProjectListing" runat="server"></umbraco:Macro>
</div>
</asp:Content>
@@ -0,0 +1,98 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="dashboard" class="subpage">
<div style="text-align: center">
<h1>The friendliest CMS community on the planet</h1>
<div style="margin-bottom: 40px;">
<p>
our.umbraco.org is the central hub for the friendly umbraco community. Search for documentation, get
help and guidance from seasoned experts, download and collaborate on plugins and extensions.
</p>
<%if(!umbraco.library.IsLoggedOn()){ %>
<p><a href="/member/signup">Register an account</a> <em> or </em> <a href="/member/login">Login</a></p>
<%}%>
</div>
</div>
<div style="width: 315px; float: left; overflow: hidden; clear: none; ">
<div class="spotlight" id="latestForumTopics">
<h4><span class="entry-title">Forum talk</span> <a class="rss_small" href="/rss/activetopics">rss</a></h4>
<div id="data_forum"><small>Loading forum list...</small></div>
<a class="more" href="/forum">More..</a>
</div>
</div>
<div style="width: 315px; overflow: hidden; clear: none; float: left; margin-left: 17px">
<div class="spotlight">
<h4>New projects <a class="rss_small" href="/rss/projects">rss</a></h4>
<div id="data_projects"><small>Loading the newest projects...</small></div>
<a class="more" href="/projects">More..</a>
</div>
<div class="spotlight">
<h4>New documentation <a class="rss_small" href="/rss/wiki">rss</a></h4>
<div id="data_wiki"><small>Loading the latest documentation...</small></div>
<a class="more" href="/wiki">More..</a>
</div>
</div>
<div style="width: 315px; float: right; clear: none; overflow: hidden;">
<div class="spotlight">
<h4>Community blogs <a class="rss_small" href="http://pipes.yahoo.com/pipes/pipe.run?_id=8llM7pvk3RGFfPy4pgt1Yg&amp;_render=rss">rss</a></h4>
<div id="data_blogs"><small>Loading blog list...</small></div>
</div>
<div class="spotlight">
<h4>Twitter <a class="rss_small" href="http://search.twitter.com/search.atom?q=%23umbraco">rss</a></h4>
<div id="data_twitter"><small>Loading tweets...</small></div>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function(){
$.post("/html/forum",
function(data){
jQuery("#data_forum").html(data);
});
$.post("/html/projects",
function(data){
jQuery("#data_projects").html(data);
});
$.post("/html/wiki",
function(data){
jQuery("#data_wiki").html(data);
});
$.post("/html/blogs",
function(data){
jQuery("#data_blogs").html(data);
});
$.post("/html/twitter",
function(data){
jQuery("#data_twitter").html(data);
});
});
</script>
</asp:Content>
@@ -0,0 +1,99 @@
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>Umbraco Package Repository</title>
<link href="/umbraco_client/ui/default.css" type="text/css" rel="stylesheet"/>
<link href="/umbraco_client/panel/style.css" type="text/css" rel="stylesheet"/>
<link rel="stylesheet" type="text/css" href="/css/community.css?v=4&update=yes" />
<link href="/css/repository.css" type="text/css" rel="stylesheet"/>
<link href="/css/deli.css" type="text/css" rel="stylesheet"/>
<link rel="stylesheet" type="text/css" href="/css/shadowbox.css" />
<script type="text/javascript" src="/scripts/libs/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/scripts/community.js?v=2"></script>
<script type="text/javascript" src="/scripts/powers/uPowers.js?v=2.5"></script>
<script type="text/javascript" src="/scripts/jquery.validation.js"></script>
<script type="text/javascript" src="/scripts/notifications/notifications.js?ay=y"></script>
<script type="text/javascript" src="/scripts/libs/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript" src="/scripts/libs/SimpleModal.js"></script>
<script type="text/javascript" src="/scripts/shadowbox/shadowbox.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("a").click(function(ev){
ev.preventDefault();
var href = jQuery(this).attr("href");
document.location = getRepoUrl(href);
});
});
function goSearch(tbId, url){
var term = jQuery(tbId).val();
var surl = getRepoUrl(url) + "&q=" + term;
alert(surl);
document.location = surl;
return false;
}
function getRepoUrl(href){
var id = '<%= Request.QueryString["id"] %>';
var version = '<%= Request.QueryString["version"] %>';
var useLegacySchema= '<%= Request.QueryString["useLegacySchema"] %>';
var callback = '<%= Request.QueryString["callback"] %>';
var sep = "?";
var qs = "id=" + id + "&version=" + version + "&useLegacySchema=" + useLegacySchema + "&callback=" + callback + "&repo=true";
if(href.indexOf("?") > 0){
sep = "&";
}
return href + sep + qs;
}
Shadowbox.init({ overlayColor: '#ffffff', overlayOpacity: '0.01', onFinish: addClickClose });
function addClickClose() {
$('#sb-content').unbind('click').click(function () { Shadowbox.close(); });
}
</script>
<asp:ContentPlaceHolder Id="Head" runat="server"></asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<div id="TheForm">
<div id="table1" class="propertyPane guiDialogNormal" >
<div class="propertyContent">
<div id="header">
<umbraco:Macro licenses="17783" search="17770" favs="17784" Alias="Repository/Header_Login" runat="server"></umbraco:Macro>
</div>
<h1><umbraco:Item field="pageName" runat="server"></umbraco:Item></h1>
<umbraco:Macro linkToCurrent="0" Alias="Breadcrumb" runat="server"></umbraco:Macro>
<asp:ContentPlaceHolder Id="Main" runat="server"/>
<br style="clear: both;" />
</div>
</div>
</div>
</form>
</body>
</html>
</asp:Content>
@@ -0,0 +1,34 @@
<%@ Master Language="C#" MasterPageFile="/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<html>
<body>
<form runat="server">
<h1>our.umbraco.org is getting a massage</h1>
<p>We are truly sorry for the inconvenience, but our.umbraco.org is getting an upgrade to fix a couple of issues
reported by our lovely community.
</p>
<p><strong>Update:</strong> Bug is found, patch has been applied, testing as we speak</p>
<p>
We will be back ASAP<br/>
<strong>/Per Ploug Hansen</strong>
</p>
<br><br><br><br><br><br><br>
<umbraco:Macro NextPage="1052" ErrorMessage="bug" Alias="MemberLogin" runat="server"></umbraco:Macro>
</form>
</body>
</html>
</asp:Content>
@@ -0,0 +1,11 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ID="Content2" ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<umbraco:Macro ID="Macro1" Alias="DeliRepoProjectView" runat="server"></umbraco:Macro>
</div>
</asp:Content>
@@ -0,0 +1,32 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
<div class="deliLeft">
<div class="deliNav">
<umbraco:Macro Alias="Deli-ProjectCategories" runat="server"></umbraco:Macro>
</div>
<div class="deliNav paid">
<h3>Top Paid Packages</h3>
<umbraco:Macro Alias="Deli-TopPaid" runat="server"></umbraco:Macro>
</div>
<div class="deliNav hqPicks">
<h3>HQ Picks</h3>
<umbraco:Macro PickedProjects="[$hQPicks]" Alias="Deli-HQPickedProjects" runat="server"></umbraco:Macro>
</div>
</div>
<div class="deliRight">
<div class="deliPromoBox popular clearfix">
<h2><umbraco:Item field="alternativeHeadline" useIfEmpty="pageName" runat="server"></umbraco:Item></h2>
<umbraco:Macro PageNumber="" IsCategoryListing="1" Alias="Deli-ProjectListing" runat="server"></umbraco:Macro>
</div>
</div>
</div>
</asp:Content>
@@ -0,0 +1,47 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div class="deliLeft">
<div class="deliNav">
<umbraco:Macro Alias="Deli-ProjectCategories" runat="server"></umbraco:Macro>
</div>
<div class="deliNav paid">
<h3>Top Paid Packages</h3>
<umbraco:Macro Alias="Deli-TopPaid" runat="server"></umbraco:Macro>
</div>
<div class="deliNav hqPicks">
<h3>HQ Picks</h3>
<umbraco:Macro PickedProjects="[#hQPicks]" Alias="Deli-HQPickedProjects" runat="server"></umbraco:Macro>
</div>
</div>
<div class="deliRightWrapper">
<div class="deliRight">
<div class="deliFeatureBox clearfix">
<umbraco:Macro ID="Macro1" projectId="[#featuredProject]" FeatureImage="[#featuredProjectImage]" Alias="Deli-FeatureProject" runat="server"></umbraco:Macro>
</div>
<div class="deliPromoBox popular clearfix">
<h2>Popular Packages</h2>
<a href="<%= Request.Url + "popular/" %>" class="viewAll">All popular</a>
<umbraco:Macro ID="Macro2" MaxPageSize="8" paged="0" Alias="Deli-PopularProjects" runat="server"></umbraco:Macro>
</div>
<div class="deliPromoBox new clearfix">
<h2>New Packages</h2>
<a href="<%= Request.Url + "newest/" %>" class="viewAll">All new</a>
<umbraco:Macro ID="Macro3" MaxPageSize="4" paged="0" Alias="Deli-NewestProjects" runat="server"></umbraco:Macro>
</div>
<div style="margin-top:10px; text-align:center; border:0; background:#eee;" class="deliNotification">List your package here! Whether it's free or a commercial, it's easy to list in the Deli. <a href="/linksomewhere">Get started today</a></div>
<div class="deliPromoBox deliTags">
<h2>Browse by Tag</h2>
<umbraco:Macro ID="Macro4" Alias="Deli-TagCloud" runat="server"></umbraco:Macro>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
@@ -0,0 +1,21 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1>Browse projects by tag</h1>
<div class="options">
<a href="/member/profile/projects" class="act add">Create a new project</a>
</div>
<%-- umbraco:Macro Alias="Project-tagcloud" runat="server"></umbraco:Macro --%>
<umbraco:Macro Alias="Deli-TagCloud" runat="server"></umbraco:Macro>
<umbraco:Macro Alias="Deli-ProjectListing" runat="server"></umbraco:Macro>
</div>
</asp:Content>
@@ -0,0 +1,10 @@
<%@ Master Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="Main" runat="server">
<div id="body" class="subpage">
<div class="deliPromoBox popular clearfix">
<h2><umbraco:Item field="alternativeHeadline" useIfEmpty="pageName" runat="server"></umbraco:Item></h2>
<umbraco:Item field="bodyText" runat="server"></umbraco:Item>
</div>
</div>
</asp:Content>
+14
View File
@@ -0,0 +1,14 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Deli.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="TitleArea" runat="server">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1>Newest packages</h1>
</asp:Content>
<asp:content ContentPlaceHolderId="DeliRight" runat="server">
<div class="deliPromoBox clearfix">
<umbraco:Macro MaxPageSize="20" paged="1" PageNumber="[@page]" viewAll="[@ViewAll]" Alias="Deli-NewestProjects" runat="server"></umbraco:Macro>
</div>
</asp:content>
+14
View File
@@ -0,0 +1,14 @@
<%@ Master Language="C#" MasterPageFile="~/masterpages/Deli.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderId="TitleArea" runat="server">
<div style="margin-top: 25px">
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
</div>
<h1>Popular packages</h1>
</asp:Content>
<asp:content ContentPlaceHolderId="DeliRight" runat="server">
<div class="deliPromoBox clearfix">
<umbraco:Macro MaxPageSize="20" paged="1" PageNumber="[@page]" viewAll="[@ViewAll]" Alias="Deli-PopularProjects" runat="server"></umbraco:Macro>
</div>
</asp:content>
@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using NotificationsCore;
using umbraco.cms.businesslogic.member;
using Marketplace.Interfaces;
using Marketplace.Providers;
namespace Marketplace.NotificationTypes
{
public class DeliNewMember : Notification
{
public DeliNewMember()
{
}
public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
{
IMemberProvider MemberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
try
{
SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);
MailAddress from = new MailAddress(
details.SelectSingleNode("//from/email").InnerText,
details.SelectSingleNode("//from/name").InnerText);
string subject = details.SelectSingleNode("//subject").InnerText;
string body = details.SelectSingleNode("//body").InnerText;
//Member m = (Member)args[0];
// deli member
IMember dMember = (IMember)args[0];
string domain = details.SelectSingleNode("//domain").InnerText;
body = string.Format(body,
dMember.Name,
dMember.Email,
args[1].ToString());
MailMessage mm = new MailMessage();
mm.Subject = subject;
mm.Body = body;
mm.To.Add(dMember.Email);
mm.From = from;
c.Send(mm);
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications] New deli member message sent" + dMember.Name);
}
catch (Exception e)
{
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
}
return true;
}
}
}
@@ -0,0 +1,78 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NotificationsCore;
using Marketplace.Interfaces;
using Marketplace.Providers;
using System.Net.Mail;
namespace Marketplace.NotificationTypes
{
public class DeliNotifyVendor : Notification
{
public DeliNotifyVendor()
{
}
public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
{
IListingProvider listingProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
ILicenseProvider licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
try
{
SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);
MailAddress from = new MailAddress(
details.SelectSingleNode("//from/email").InnerText,
details.SelectSingleNode("//from/name").InnerText);
string subject = details.SelectSingleNode("//subject").InnerText;
string body = details.SelectSingleNode("//body").InnerText;
// deli ordered item
IOrderItem dOrder = (IOrderItem)args[0];
// deli listing
IListingItem dListing = listingProvider.GetListing(dOrder.ListingItemId);
// deli member
IMember dMember = (IMember)args[1];
string domain = details.SelectSingleNode("//domain").InnerText;
body = string.Format(body,
dMember.Name,
dOrder.Id.ToString(),
dListing.Name,
licenseProvider.GetLicense(dOrder.LicenseId).LicenseType.ToString(),
dOrder.Quantity,
dMember.Name,
dMember.Email);
MailMessage mm = new MailMessage();
mm.Subject = subject;
mm.Body = body;
mm.To.Add(dListing.Vendor.Member.Email);
mm.From = from;
c.Send(mm);
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications] Deli order vendor notification message sent, order item id: " + dOrder.Id.ToString());
}
catch (Exception e)
{
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
}
return true;
}
}
}
@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NotificationsCore;
using Marketplace.Interfaces;
using Marketplace.Providers;
using System.Net.Mail;
namespace Marketplace.NotificationTypes
{
public class DeliOrderComplete : Notification
{
public DeliOrderComplete()
{
}
public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
{
IOrderProvider OrderProvider = (IOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
IMemberProvider MemberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
try
{
SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);
MailAddress from = new MailAddress(
details.SelectSingleNode("//from/email").InnerText,
details.SelectSingleNode("//from/name").InnerText);
string subject = details.SelectSingleNode("//subject").InnerText;
string body = details.SelectSingleNode("//body").InnerText;
// deli order
IOrder dOrder = (IOrder)args[0];
// deli member
IMember dMember = (IMember)args[1];
string domain = details.SelectSingleNode("//domain").InnerText;
body = string.Format(body,
dMember.Name,
dOrder.Id.ToString(),
dOrder.ProcessedTotal.ToString(),
dOrder.Currency.ToString(),
dOrder.PaymentDate.ToString(),
args[2].ToString());
MailMessage mm = new MailMessage();
mm.Subject = subject;
mm.Body = body;
mm.To.Add(dMember.Email);
mm.From = from;
c.Send(mm);
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications] Deli order complete message sent, order id: " + dOrder.Id.ToString());
}
catch (Exception e)
{
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
}
return true;
}
}
}
@@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NotificationsCore;
using Marketplace.Interfaces;
using Marketplace.Providers;
using System.Net.Mail;
namespace Marketplace.NotificationTypes
{
public class DeliPayoutRequest : Notification
{
public DeliPayoutRequest()
{
}
public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
{
IPayoutProvider payoutProvider = (IPayoutProvider)MarketplaceProviderManager.Providers["PayoutProvider"];
IMemberProvider MemberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
try
{
SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);
MailAddress from = new MailAddress(
details.SelectSingleNode("//from/email").InnerText,
details.SelectSingleNode("//from/name").InnerText);
string subject = details.SelectSingleNode("//subject").InnerText;
string body = details.SelectSingleNode("//body").InnerText;
string notify = details.SelectSingleNode("//to").InnerText;
// deli order
IPayout dPayout = (IPayout)args[0];
// deli member
IMember dMember = (IMember)MemberProvider.GetMemberById(dPayout.VendorId);
string domain = details.SelectSingleNode("//domain").InnerText;
body = string.Format(body,
dMember.Name,
GetPayoutValue(dPayout.OrderItems).ToString());
MailMessage mm = new MailMessage();
mm.Subject = subject;
mm.Body = body;
mm.To.Add(notify);
mm.From = from;
c.Send(mm);
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications] Deli payout message sent, payout id: " + dPayout.Id.ToString());
}
catch (Exception e)
{
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message + "++++++++++++++++++++++" + e.Source + "-------" + e.StackTrace);
}
return true;
}
private double GetPayoutValue(IEnumerable<IOrderItem> items)
{
double val = 0.00;
foreach (var i in items)
{
val += i.PayoutAmount;
}
return val;
}
}
}
@@ -0,0 +1,267 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- these global settings will be passed together with the notification specific settings -->
<global>
<conn><![CDATA[server=.\sqlexpress;database=finalmigration.our.umbraco.org;user id=our;password=just4cores!; Min Pool Size=5;Max Pool Size=500;Connect Timeout=10;]]></conn>
<smtp>mx01.fab-it.dk</smtp>
<domain>our.umbraco.org</domain>
<from>
<name>Our Umbraco</name>
<email>robot@umbraco.org</email>
</from>
</global>
<sheduled>
</sheduled>
<instant>
<notification name="VoteForProjectReminderSingle"
assembly="NotificationsCore"
type="NotificationsCore.NotificationTypes.VoteForProjectReminderSingle">
<subject>Umbraco community: Vote for project reminder</subject>
<body>We noticed you downloaded the project {0} from Umbraco Community Projects and have not yet given the project a vote.
Voting for projects helps others find high-quality projects and helps project owners by letting them know which projects the community finds valuable.
You can view the project here {1}
Thank You from the Umbraco Community!
--------------------------------------------------
Don't want to get these notifications? Simply update your profile on our.umbraco.org
</body>
</notification>
<notification name="MarkAsSolutionReminderSingle"
assembly="NotificationsCore"
type="NotificationsCore.NotificationTypes.MarkAsSolutionReminderSingle">
<subject>Umbraco community: Solution Reminder</subject>
<body>We noticed that the topic {0} you created in the Umbraco Community Forum does not have a post marked as a solution.
If a post helped answer your question or resolve your issue please mark it as a solution so others can quickly find it. You can view the topic and any posts here {1}.
Thank You from the Umbraco Community!
--------------------------------------------------
Don't want to get these notifications? Simply update your profile on our.umbraco.org
</body>
</notification>
<notification name="NewTopic"
assembly="NotificationsCore"
type="NotificationsCore.NotificationTypes.NewForumTopic">
<subject>Umbraco community: New topic in '{0}' forum</subject>
<body>{2} just added a new topic to the '{0}' forum.
--------------------------------------------------
{3}
{4}
--------------------------------------------------
You can view the new topic here:
{1}
Thank You from the Umbraco Community!
--------------------------------------------------
You get this notification because you are subscribed to the '{0}' forum notifications.
You can unsubscribe from your profile on our.umbraco.org
</body>
</notification>
<notification name="NewComment"
assembly="NotificationsCore"
type="NotificationsCore.NotificationTypes.NewForumTopicComment">
<subject>Umbraco community: New comment in topic '{0}'</subject>
<body>{2} just added a new comment to the '{0}' topic.
--------------------------------------------------
{3}
--------------------------------------------------
You can view the new comment here:
{1}
Thank You from the Umbraco Community!
--------------------------------------------------
You get this notification because you are subscribed to the '{0}' topic notifications.
You can unsubscribe from your profile on our.umbraco.org
</body>
</notification>
<notification name="DeliNewMember"
assembly="Marketplace"
type="Marketplace.NotificationTypes.DeliNewMember">
<subject>Welcome to the Umbraco Deli</subject>
<body>
Hi {0} -
During your purchase from the Umbraco Deli we created
a new member account for you, just to save you some
time.
--------------------------------------------------
Your user name is: {1}
Your password is: {2}
--------------------------------------------------
We suggest you protect your information by changing
your password after logging in at:
http://our.umbraco.org/member/login
--------------------------------------------------
Not only does your new member account provide you with
access to your purchased licenses, but it also is your key
to the Umbraco Community on http://our.umbraco.org/ !
We encourage you to log in to http://our.umbraco.org/member/login
and plug-in to our community.
Thank You from the Umbraco Deli!
--------------------------------------------------
We sent this notification because we created an account for you.
You can unsubscribe from further communication from
your profile on our.umbraco.org
</body>
</notification>
<notification name="DeliOrderComplete"
assembly="Marketplace"
type="Marketplace.NotificationTypes.DeliOrderComplete">
<subject>Your Umbraco Deli Order</subject>
<body>
Hi {0} -
Your Umbraco Deli purchase is complete! Your order details are below,
but you may want to get on it with it and just configure your
license here: http://our.umbraco.org/member/profile/my-licenses/
--------------------------------------------------
Deli Order Id: {1}
Payment Amount: {2}
Payment Currency: {3}
Payment Date: {4}
Transaction Id: {5}
--------------------------------------------------
Thank You from the Umbraco Deli!
--------------------------------------------------
We sent this notification because you completed an order with us.
You can unsubscribe from further communication from
your profile on our.umbraco.org
</body>
</notification>
<notification name="DeliNotifyVendor"
assembly="Marketplace"
type="Marketplace.NotificationTypes.DeliNotifyVendor">
<subject>You have a new Umbraco Deli Order</subject>
<body>
Hi {0} -
An order was just placed on theUmbraco Deli for your project!
The details of the order details are below.
--------------------------------------------------
Order Item Id: {1}
Deli project name: {2}
License Type: {3} x {4}
Ordered by: {5}, {6}
--------------------------------------------------
Thank You from the Umbraco Deli!
--------------------------------------------------
We sent this notification because you are a Deli vendor.
You can unsubscribe from further communication from
your profile on our.umbraco.org
</body>
</notification>
<notification name="DeliNewMember"
assembly="Marketplace"
type="Marketplace.NotificationTypes.DeliNewMember">
<subject>Welcome to the Umbraco Deli</subject>
<body>
Hi {0} -
During your purchase from the Umbraco Deli we created
a new member account for you, just to save you some
time.
--------------------------------------------------
Your user name is: {1}
Your password is: {2}
--------------------------------------------------
We suggest you protect your information by changing
your password after logging in at:
http://our.umbraco.org/member/login
--------------------------------------------------
Not only does your new member account provide you with
access to your purchased licenses, but it also is your key
to the Umbraco Community on http://our.umbraco.org/ !
We encourage you to log in to http://our.umbraco.org/member/login
and plug-in to our community.
Thank You from the Umbraco Deli!
--------------------------------------------------
We sent this notification because we created an account for you.
You can unsubscribe from further communication from
your profile on our.umbraco.org
</body>
</notification>
<notification name="DeliPayoutRequest"
assembly="Marketplace"
type="Marketplace.NotificationTypes.DeliPayoutRequest">
<subject>A new payout request has been received</subject>
<to>gregory@umbraco.com</to>
<body>
Hi there -
A Deli Vendor has requested a payout! Payout details are below:
http://our.umbraco.org/umbraco/
--------------------------------------------------
Vendor: {0}
Payout Amount: {1}
--------------------------------------------------
Thank You from the Umbraco Deli!
--------------------------------------------------
We sent this notification because your the BOSS!
</body>
</notification>
</instant>
</configuration>
+88
View File
@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.web;
using umbraco.cms.businesslogic;
using umbraco.cms.businesslogic.member;
using Marketplace.Interfaces;
using Marketplace.Providers;
using our;
using Marketplace.Providers.MediaFile;
using Marketplace.Umbraco.BusinessLogic;
namespace Marketplace {
public class ProjectFileUploadHandler : IHttpHandler {
#region IHttpHandler Members
public bool IsReusable {
get { return true; }
}
public void ProcessRequest(HttpContext context) {
HttpPostedFile file = context.Request.Files["Filedata"];
string userguid = context.Request.Form["USERGUID"];
string projectguid = context.Request.Form["NODEGUID"];
string fileType = context.Request.Form["FILETYPE"];
string fileName = context.Request.Form["FILENAME"];
string umbraoVersion = (context.Request.Form["UMBRACOVERSION"] != null) ? context.Request.Form["UMBRACOVERSION"] : "nan";
string dotNetVersion = (context.Request.Form["DOTNETVERSION"] != null) ? context.Request.Form["DOTNETVERSION"] : "nan";
string trustLevel = (context.Request.Form["TRUSTLEVEL"] != null) ? context.Request.Form["TRUSTLEVEL"] : "nan";
List<UmbracoVersion> v = new List<UmbracoVersion>() { UmbracoVersion.DefaultVersion() };
if (!string.IsNullOrEmpty(umbraoVersion))
{
v.Clear();
v = GetVersionsFromString(umbraoVersion);
}
bool trust = false;
if(trustLevel == "Medium"){
trust = true;
}
if (!string.IsNullOrEmpty(userguid) && !string.IsNullOrEmpty(projectguid) && !string.IsNullOrEmpty(fileType) && !string.IsNullOrEmpty(fileName)) {
var provider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
var p = provider.GetListing(new Guid(projectguid));
Member mem = new Member(new Guid(userguid));
if (p.Vendor != null && p.Vendor.Member.Id == mem.Id || Utills.IsProjectContributor(mem.Id, p.Id))
{
var fileProvider = (IMediaProvider)MarketplaceProviderManager.Providers["MediaProvider"];
var packageFileType = (FileType)Enum.Parse(typeof(FileType), (string)fileType , true);
fileProvider.CreateFile(fileName, p.Version, mem.UniqueId, file, packageFileType, v, dotNetVersion, trust);
} else {
umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, 0, "wrong type or not a owner");
}
}
}
public static List<UmbracoVersion> GetVersionsFromString(string p)
{
var verArray = p.Split(',');
var verList = new List<UmbracoVersion>();
foreach (var ver in verArray)
{
verList.Add(UmbracoVersion.AvailableVersions()[ver]);
}
return verList;
}
#endregion
}
}
+35
View File
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Marketplace")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Marketplace")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b19fabd8-dd28-4981-9123-56d8467905a7")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+46
View File
@@ -0,0 +1,46 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
[global::System.Configuration.DefaultSettingValueAttribute("http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx")]
public string Marketplace_com_umbraco_MemberLookUp {
get {
return ((string)(this["Marketplace_com_umbraco_MemberLookUp"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
[global::System.Configuration.DefaultSettingValueAttribute("http://umbraco.com/webservices/orders.asmx")]
public string Marketplace_com_umbraco_orders_Orders {
get {
return ((string)(this["Marketplace_com_umbraco_orders_Orders"]));
}
}
}
}
+12
View File
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Marketplace.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="Marketplace_com_umbraco_MemberLookUp" Type="(Web Service URL)" Scope="Application">
<Value Profile="(Default)">http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx</Value>
</Setting>
<Setting Name="Marketplace_com_umbraco_orders_Orders" Type="(Web Service URL)" Scope="Application">
<Value Profile="(Default)">http://umbraco.com/webservices/orders.asmx</Value>
</Setting>
</Settings>
</SettingsFile>
+95
View File
@@ -0,0 +1,95 @@
@using Marketplace.Interfaces
@using Marketplace.Providers
@{
IMemberProvider memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
IMember member = memberProvider.GetCurrentMember();
IListingProvider provider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
IEnumerable<IListingItem> projects = provider.GetListingsByVendor(member.Id,true,true);
string editUrl = umbraco.library.NiceUrl(Int32.Parse(Parameter.Edit));
string forumUrl = umbraco.library.NiceUrl(Int32.Parse(Parameter.Forum));
string licenseUrl = umbraco.library.NiceUrl(Int32.Parse(Parameter.Licenses));
string teamUrl = umbraco.library.NiceUrl(Int32.Parse(Parameter.Team));
}
<h3>Your existing projects</h3>
<ul class="profileProjects">
@foreach (var project in projects)
{
<li>
<h3><a href="@project.NiceUrl">
@project.Name
</a></h3>
@if (!string.IsNullOrEmpty(project.DefaultScreenshot))
{
<img src="/umbraco/imagegen.ashx?image=@project.DefaultScreenshot&pad=true&width=50&height=50" alt="@project.Name" class="projectIcon" style="border:1px solid #ddd"/>
}
else
{
<img src="/css/img/package2.png" alt="@project.Name" class="projectIcon" />
}
<small>
@project.CreateDate.ToString("D")
</small>
<ul class="projectNav">
<li><a href="@editUrl?id=@project.Id">Edit</a></li>
<li><a href="@forumUrl?id=@project.Id">Forums</a></li>
@if (project.ListingType == ListingType.commercial)
{
<li><a href="@licenseUrl?id=@project.Id">Licenses</a></li>
}
@if (project.OpenForCollab)
{
<li><a href="@teamUrl?id=@project.Id">Team</a></li>
}
</ul>
</li>
}
<li class="add"><h3>
<a href="@editUrl">Add new project</a>
</h3>
<img src="/css/img/add.png" alt="Add new project" />
</li>
</ul>
@{
var contribProjects = provider.GetListingsForContributor(member.Id);
}
@if (contribProjects.Count() > 0)
{
<h3>Project where you are contributor</h3>
<ul class="profileProjects">
@foreach (var project in contribProjects)
{
<li>
<h3><a href="@project.NiceUrl">
@project.Name
</a></h3>
<img src="/css/img/package2.png" alt="@project.Name" class="projectIcon" />
<small>
@project.CreateDate.ToString("D")<br />
Owner: <a href="mailto:@project.Vendor.Member.Email">@project.Vendor.Member.Name</a>
</small>
<ul class="projectNav">
<li><a href="@editUrl?id=@project.Id">Edit</a></li>
<li><a href="@forumUrl?id=@project.Id">Forums</a></li>
@if (project.ListingType == ListingType.commercial)
{
<li><a href="@licenseUrl?id=@project.Id">Licenses</a></li>
}
</ul>
</li>
}
</ul>
}
@@ -0,0 +1,22 @@
@using Marketplace.Interfaces
@using Marketplace.Providers
@{
ICategoryProvider categoryProvider = (ICategoryProvider)MarketplaceProviderManager.Providers["CategoryProvider"];
IEnumerable<ICategory> cats = categoryProvider.GetAllCategories();
var selected = "";
}
<h3>Project Categories</h3>
<ul>
@foreach (var cat in cats)
{
<li>
<a href="@cat.Url">
@cat.Name
</a>
@* <small>(@cat.ProjectCount)</small>*@
</li>
}
</ul>
+33
View File
@@ -0,0 +1,33 @@
@using Marketplace.Interfaces
@using Marketplace.Providers
@{
var tagsProvider = (IProjectTagProvider)MarketplaceProviderManager.Providers["TagProvider"];
var tags = tagsProvider.GetAllTags(false).OrderBy(x => x.Count).Take(50).OrderBy(x => x.Text);
max = tags.Max(x => x.LiveCount);
}
@functions{
public int max { get; set; }
public string weight(int liveCount)
{
double perc = ((double)liveCount / (double)max) * 100;
if(perc >= 99)return "weight1";
if(perc >= 70)return "weight2";
if(perc >= 40)return "weight3";
if(perc >= 20)return "weight4";
return "weight5";
}
}
<div id="tagCloud">
@foreach (var t in tags) {
<a href="/projects/tag/@t.Text#projectList" class="@weight(t.LiveCount)">@t.Text</a>
}
</div>
@@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Marketplace.uVersion;
using Marketplace.Interfaces;
using Marketplace.Providers;
namespace Marketplace.Razor
{
public class VersionCompatibilityReport
{
private List<UVersion> uVersions;
private int fileId { get; set; }
private int packageId { get; set; }
private IListingProvider projectProvider;
private IListingItem project;
private IMediaFile file;
public VersionCompatibilityReport(int fid, int pid)
{
uVersions = Marketplace.uVersion.UVersion.GetAllVersions();
fileId = fid;
packageId = packageId;
projectProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
project = projectProvider.GetListing(pid, false);
file = project.PackageFile.Where(x => x.Id == Int32.Parse(project.CurrentReleaseFile)).FirstOrDefault();
}
public List<verCompat> GetCompatibilityReport()
{
var compatList = new List<verCompat>();
using (Marketplace.Data.MarketplaceDataContext ctx = new Marketplace.Data.MarketplaceDataContext())
{
foreach (var ver in uVersions)
{
var reports = ctx.DeliVersionCompatibilities.Where(x => x.version == ver.Name && x.projectId == project.Id);
if (reports.Count() > 0)
{
float compats = reports.Where(x => x.isCompatible).Count();
float numReps = reports.Count();
var perc = Convert.ToInt32(((compats / numReps) * 100));
var smiley = "unhappy";
if (perc >= 95)
{
smiley = "joyous";
}
else if (perc < 95 && perc >= 80)
{
smiley = "happy";
}
else if (perc < 80 && perc >= 65)
{
smiley = "neutral";
}
else if (perc < 65 && perc >= 50)
{
smiley = "unhappy";
}
else
{
smiley = "superUnhappy";
}
compatList.Add(new verCompat() { perc = perc, smiley = smiley, version = ver.Name });
}
else
{
compatList.Add(new verCompat() { perc = 0, smiley = "untested", version = ver.Name });
}
}
}
return compatList;
}
}
public class verCompat
{
public int perc { get; set; }
public string smiley { get; set; }
public string version { get; set; }
}
}
@@ -0,0 +1,46 @@
@using Marketplace.uVersion;
@{
var versions = UVersion.GetAllVersions();
var fileId = @Parameter.fileId;
var packageId = @Parameter.packageId;
var memberProvider = (Marketplace.Interfaces.IMemberProvider)Marketplace.Providers.MarketplaceProviderManager.Providers["MemberProvider"];
var mem = memberProvider.GetCurrentMember();
var projectProvider = (Marketplace.Interfaces.IListingProvider)Marketplace.Providers.MarketplaceProviderManager.Providers["ListingProvider"];
var Project = projectProvider.GetListing(Int32.Parse(packageId));
}
@if(umbraco.library.IsLoggedOn())
{
if(Marketplace.library.HasDownloaded(mem.Id, Project.Id))
{
<input type="hidden" value="@fileId" id="packageFileId" />
<input type="hidden" value="@packageId" id="packageId" />
<table class="projectCompatList">
@foreach (var v in versions)
{
var alias = v.Name.Replace(".", "");
<tr>
<td><span>@v.Name</span></td>
<td><input type="radio" value="1" name="@Library.Concatenate("v",alias)" id="@Library.Concatenate("v",alias, "works")"/><label for="@Library.Concatenate("v",alias,"works")">Works</label></td>
<td><input type="radio" value="0" name="@Library.Concatenate("v",alias)" id="@Library.Concatenate("v",alias, "doesntwork")"/><label for="@Library.Concatenate("v", alias, "doesntwork")">Doesn't work</label></td>
<td><input type="radio" checked value="-1" name="@Library.Concatenate("v",alias)" id="@Library.Concatenate("v",alias, "nottried")"/><label for="@Library.Concatenate("v", alias, "nottried")">haven't tried</label></td>
</tr>
}
</table>
<input type="button" value="Report Compatibility" id="reportCompatibility" /> @:or <a href="#" class="simplemodal-close">Cancel</a>
}
else
{
<br /><p><strong>You need to download this package before you can report on it's compatibility</strong></p>
}
}
else
{
<br /><p><strong>You must login before you can report on package compatibility.</strong></p>
}
@@ -0,0 +1,26 @@
@using Marketplace.Razor;
@{
int fileId = Int32.Parse(Parameter.fileId);
int packageId = Int32.Parse(Parameter.packageId);
var verReport = new VersionCompatibilityReport(fileId, packageId);
}
This project is compatible with the following versions as reported by community members who have downloaded this package:<br/><br/>
@{
foreach (var ver in verReport.GetCompatibilityReport())
{
if(ver.smiley != "untested"){
<span class="smiley @ver.smiley"> @ver.version (@ver.perc%)</span>
}
else
{
<span class="smiley @ver.smiley"> @ver.version (untested)</span>
}
}
}
<br/>
+167
View File
@@ -0,0 +1,167 @@
using System;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Data;
using System.Web.Security;
using Umbraco.Web.BaseRest;
namespace Marketplace
{
[RestExtension("deli")]
public class Rest
{
/// <summary>
/// Gets the popular listings.
/// </summary>
/// <param name="listingType">Type of the listing.</param>
/// <param name="skip">The skip.</param>
/// <param name="take">The take.</param>
/// <returns></returns>
[RestExtensionMethod(ReturnXml = false)]
public static string GetPopularListings(string listingType, int skip, int take)
{
var ProjectsProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
IEnumerable<IListingItem> Projects;
switch (listingType)
{
case "free":
Projects = ProjectsProvider.GetListingsByPopularity(skip, take, true, false).Where(x => x.ListingType == Interfaces.ListingType.free).Take(take);
break;
case "commercial":
Projects = ProjectsProvider.GetTopPaidListings(skip, take, true, false);
break;
default:
Projects = ProjectsProvider.GetListingsByPopularity(skip, take, true, false);
break;
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(Projects.Select(x => new
{
Name = x.Name,
CategoryName = Marketplace.library.GetCategoryName((int)x.Id),
DefaultScreenShot = GetScreenShot(x.DefaultScreenshot),
Description = Marketplace.library.ShortenText(x.Description.ToString()),
NiceUrl = x.NiceUrl,
ListingType = x.ListingType.ToString(),
Karma = x.Karma,
Downloads = x.Downloads
}));
}
/// <summary>
/// Gets the newest listings.
/// </summary>
/// <param name="listingType">Type of the listing.</param>
/// <param name="skip">The skip.</param>
/// <param name="take">The take.</param>
/// <returns></returns>
[RestExtensionMethod(ReturnXml = false)]
public static string GetNewestListings(string listingType, int skip, int take)
{
var ProjectsProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
IEnumerable<IListingItem> Projects;
switch (listingType)
{
case "free":
Projects = ProjectsProvider.GetListingsByLatest(skip, take, ListingType.free, true, false);
break;
case "commercial":
Projects = ProjectsProvider.GetListingsByLatest(skip, take, ListingType.commercial, true, false);
break;
default:
Projects = ProjectsProvider.GetListingsByLatest(skip, take, true, false);
break;
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(Projects.Select(x => new
{
Name = x.Name,
CategoryName = Marketplace.library.GetCategoryName((int)x.Id),
DefaultScreenShot = GetScreenShot(x.DefaultScreenshot),
Description = Marketplace.library.ShortenText(x.Description.ToString()),
NiceUrl = x.NiceUrl,
ListingType = x.ListingType.ToString(),
Karma = x.Karma,
Downloads = x.Downloads
}));
}
[RestExtensionMethod(ReturnXml = false)]
public static string CompatibilityReport(int projectId, int fileId, string compatArr)
{
using (var ctx = new MarketplaceDataContext())
{
int _currentMember = HttpContext.Current.User.Identity.IsAuthenticated ? (int)Membership.GetUser().ProviderUserKey : 0;
var versionData = compatArr.Split(',').Select(x => new { version = x.Split('^')[0], compat = x.Split('^')[1] });
// load all the existing member reports for this package by this member. This is to stop multiple insertions of reports for a single member
var memberReports = ctx.DeliVersionCompatibilities.Where(x => x.memberId == _currentMember && x.fileId == fileId && x.projectId == projectId).ToList();
foreach (var ver in versionData)
{
if (ver.compat == "1" || ver.compat == "0")
{
var compVer = new DeliVersionCompatibility() { fileId = fileId, memberId = _currentMember, isCompatible = ver.compat == "1" ? true : false, dateStamp = DateTime.Now, version = ver.version, projectId = projectId };
//try find an existing report
var existingReport = memberReports.Where(x => x.fileId == compVer.fileId && x.memberId == compVer.memberId && x.projectId == compVer.projectId && x.version == compVer.version).FirstOrDefault();
if (existingReport != null)
{
existingReport.isCompatible = compVer.isCompatible;
existingReport.dateStamp = DateTime.Now;
}
else
{
// otherwise insert the new compat ver report
ctx.DeliVersionCompatibilities.InsertOnSubmit(compVer);
}
}
}
ctx.SubmitChanges();
//give them some Karma if they haven't reported on this before.
if (memberReports.Count() == 0)
{
uPowers.Library.Rest.Action("ProjectVersionVote", fileId);
}
}
return "got it thanks";
}
private static string GetScreenShot(string ss){
if(!string.IsNullOrEmpty(ss)){
return "/umbraco/imagegen.ashx?image="+ ss +"&amp;pad=true&amp;width=50&amp;height=50;";
}
else return "/css/img/package2.png";
}
}
}
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="BuyerProxy" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Marketplace.com.umbraco.orders.BuyerProxy, Web References.com.umbraco.orders.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="OrderProxy" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Marketplace.com.umbraco.orders.OrderProxy, Web References.com.umbraco.orders.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
@@ -0,0 +1,741 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
// This source code was auto-generated by Microsoft.VSDesigner, Version 4.0.30319.34014.
//
#pragma warning disable 1591
namespace Marketplace.com.umbraco.orders {
using System;
using System.Web.Services;
using System.Diagnostics;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.ComponentModel;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="OrdersSoap", Namespace="http://tempuri.org/")]
public partial class Orders : System.Web.Services.Protocols.SoapHttpClientProtocol {
private System.Threading.SendOrPostCallback CreateOperationCompleted;
private System.Threading.SendOrPostCallback GetFromEcommerceIDOperationCompleted;
private System.Threading.SendOrPostCallback GetFromTransactionIDOperationCompleted;
private System.Threading.SendOrPostCallback LinkProfilesOperationCompleted;
private bool useDefaultCredentialsSetExplicitly;
/// <remarks/>
public Orders() {
this.Url = global::Marketplace.Properties.Settings.Default.Marketplace_com_umbraco_orders_Orders;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
public new string Url {
get {
return base.Url;
}
set {
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
&& (this.useDefaultCredentialsSetExplicitly == false))
&& (this.IsLocalFileSystemWebService(value) == false))) {
base.UseDefaultCredentials = false;
}
base.Url = value;
}
}
public new bool UseDefaultCredentials {
get {
return base.UseDefaultCredentials;
}
set {
base.UseDefaultCredentials = value;
this.useDefaultCredentialsSetExplicitly = true;
}
}
/// <remarks/>
public event CreateCompletedEventHandler CreateCompleted;
/// <remarks/>
public event GetFromEcommerceIDCompletedEventHandler GetFromEcommerceIDCompleted;
/// <remarks/>
public event GetFromTransactionIDCompletedEventHandler GetFromTransactionIDCompleted;
/// <remarks/>
public event LinkProfilesCompletedEventHandler LinkProfilesCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/Create", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public OrderProxy Create(OrderProxy order, bool testMode, string login, string password) {
object[] results = this.Invoke("Create", new object[] {
order,
testMode,
login,
password});
return ((OrderProxy)(results[0]));
}
/// <remarks/>
public void CreateAsync(OrderProxy order, bool testMode, string login, string password) {
this.CreateAsync(order, testMode, login, password, null);
}
/// <remarks/>
public void CreateAsync(OrderProxy order, bool testMode, string login, string password, object userState) {
if ((this.CreateOperationCompleted == null)) {
this.CreateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOperationCompleted);
}
this.InvokeAsync("Create", new object[] {
order,
testMode,
login,
password}, this.CreateOperationCompleted, userState);
}
private void OnCreateOperationCompleted(object arg) {
if ((this.CreateCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CreateCompleted(this, new CreateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetFromEcommerceID", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public OrderProxy GetFromEcommerceID(int EcommerceOrderID, string login, string password) {
object[] results = this.Invoke("GetFromEcommerceID", new object[] {
EcommerceOrderID,
login,
password});
return ((OrderProxy)(results[0]));
}
/// <remarks/>
public void GetFromEcommerceIDAsync(int EcommerceOrderID, string login, string password) {
this.GetFromEcommerceIDAsync(EcommerceOrderID, login, password, null);
}
/// <remarks/>
public void GetFromEcommerceIDAsync(int EcommerceOrderID, string login, string password, object userState) {
if ((this.GetFromEcommerceIDOperationCompleted == null)) {
this.GetFromEcommerceIDOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFromEcommerceIDOperationCompleted);
}
this.InvokeAsync("GetFromEcommerceID", new object[] {
EcommerceOrderID,
login,
password}, this.GetFromEcommerceIDOperationCompleted, userState);
}
private void OnGetFromEcommerceIDOperationCompleted(object arg) {
if ((this.GetFromEcommerceIDCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetFromEcommerceIDCompleted(this, new GetFromEcommerceIDCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetFromTransactionID", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public OrderProxy GetFromTransactionID(string transaction, string login, string password) {
object[] results = this.Invoke("GetFromTransactionID", new object[] {
transaction,
login,
password});
return ((OrderProxy)(results[0]));
}
/// <remarks/>
public void GetFromTransactionIDAsync(string transaction, string login, string password) {
this.GetFromTransactionIDAsync(transaction, login, password, null);
}
/// <remarks/>
public void GetFromTransactionIDAsync(string transaction, string login, string password, object userState) {
if ((this.GetFromTransactionIDOperationCompleted == null)) {
this.GetFromTransactionIDOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFromTransactionIDOperationCompleted);
}
this.InvokeAsync("GetFromTransactionID", new object[] {
transaction,
login,
password}, this.GetFromTransactionIDOperationCompleted, userState);
}
private void OnGetFromTransactionIDOperationCompleted(object arg) {
if ((this.GetFromTransactionIDCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetFromTransactionIDCompleted(this, new GetFromTransactionIDCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/LinkProfiles", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public BuyerProxy LinkProfiles(string profileEmail, string profilePassword, string login, string password) {
object[] results = this.Invoke("LinkProfiles", new object[] {
profileEmail,
profilePassword,
login,
password});
return ((BuyerProxy)(results[0]));
}
/// <remarks/>
public void LinkProfilesAsync(string profileEmail, string profilePassword, string login, string password) {
this.LinkProfilesAsync(profileEmail, profilePassword, login, password, null);
}
/// <remarks/>
public void LinkProfilesAsync(string profileEmail, string profilePassword, string login, string password, object userState) {
if ((this.LinkProfilesOperationCompleted == null)) {
this.LinkProfilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnLinkProfilesOperationCompleted);
}
this.InvokeAsync("LinkProfiles", new object[] {
profileEmail,
profilePassword,
login,
password}, this.LinkProfilesOperationCompleted, userState);
}
private void OnLinkProfilesOperationCompleted(object arg) {
if ((this.LinkProfilesCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.LinkProfilesCompleted(this, new LinkProfilesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
private bool IsLocalFileSystemWebService(string url) {
if (((url == null)
|| (url == string.Empty))) {
return false;
}
System.Uri wsUri = new System.Uri(url);
if (((wsUri.Port >= 1024)
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
return true;
}
return false;
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public partial class OrderProxy {
private OrderLineProxy[] orderLinesField;
private System.DateTime createdField;
private BuyerProxy buyerField;
private OrderStatus orderStatusField;
private string invoicePathField;
private int deliOrderIDField;
private int ecommerceOrderIDField;
private string purchaseOrderField;
private string transactionIDField;
/// <remarks/>
public OrderLineProxy[] OrderLines {
get {
return this.orderLinesField;
}
set {
this.orderLinesField = value;
}
}
/// <remarks/>
public System.DateTime Created {
get {
return this.createdField;
}
set {
this.createdField = value;
}
}
/// <remarks/>
public BuyerProxy Buyer {
get {
return this.buyerField;
}
set {
this.buyerField = value;
}
}
/// <remarks/>
public OrderStatus OrderStatus {
get {
return this.orderStatusField;
}
set {
this.orderStatusField = value;
}
}
/// <remarks/>
public string InvoicePath {
get {
return this.invoicePathField;
}
set {
this.invoicePathField = value;
}
}
/// <remarks/>
public int DeliOrderID {
get {
return this.deliOrderIDField;
}
set {
this.deliOrderIDField = value;
}
}
/// <remarks/>
public int EcommerceOrderID {
get {
return this.ecommerceOrderIDField;
}
set {
this.ecommerceOrderIDField = value;
}
}
/// <remarks/>
public string PurchaseOrder {
get {
return this.purchaseOrderField;
}
set {
this.purchaseOrderField = value;
}
}
/// <remarks/>
public string TransactionID {
get {
return this.transactionIDField;
}
set {
this.transactionIDField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public partial class OrderLineProxy {
private decimal amountField;
private string descriptionField;
private int quantityField;
private System.Guid productIDField;
private int vendorEconomicIDField;
/// <remarks/>
public decimal Amount {
get {
return this.amountField;
}
set {
this.amountField = value;
}
}
/// <remarks/>
public string description {
get {
return this.descriptionField;
}
set {
this.descriptionField = value;
}
}
/// <remarks/>
public int Quantity {
get {
return this.quantityField;
}
set {
this.quantityField = value;
}
}
/// <remarks/>
public System.Guid ProductID {
get {
return this.productIDField;
}
set {
this.productIDField = value;
}
}
/// <remarks/>
public int VendorEconomicID {
get {
return this.vendorEconomicIDField;
}
set {
this.vendorEconomicIDField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public partial class BuyerProxy {
private string nameField;
private string emailField;
private string loginField;
private string companyField;
private string vATField;
private bool vatInvalidField;
private string addressField;
private string countryField;
private string phoneField;
private string ipField;
private int umbracoComMemberIDField;
private System.Guid umbracoComMemberGuidField;
private int ourMemberIdField;
private System.Guid ourMemberGuidField;
private string[] groupsField;
/// <remarks/>
public string Name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
/// <remarks/>
public string Email {
get {
return this.emailField;
}
set {
this.emailField = value;
}
}
/// <remarks/>
public string Login {
get {
return this.loginField;
}
set {
this.loginField = value;
}
}
/// <remarks/>
public string Company {
get {
return this.companyField;
}
set {
this.companyField = value;
}
}
/// <remarks/>
public string VAT {
get {
return this.vATField;
}
set {
this.vATField = value;
}
}
/// <remarks/>
public bool VatInvalid {
get {
return this.vatInvalidField;
}
set {
this.vatInvalidField = value;
}
}
/// <remarks/>
public string Address {
get {
return this.addressField;
}
set {
this.addressField = value;
}
}
/// <remarks/>
public string Country {
get {
return this.countryField;
}
set {
this.countryField = value;
}
}
/// <remarks/>
public string Phone {
get {
return this.phoneField;
}
set {
this.phoneField = value;
}
}
/// <remarks/>
public string IP {
get {
return this.ipField;
}
set {
this.ipField = value;
}
}
/// <remarks/>
public int umbracoComMemberID {
get {
return this.umbracoComMemberIDField;
}
set {
this.umbracoComMemberIDField = value;
}
}
/// <remarks/>
public System.Guid umbracoComMemberGuid {
get {
return this.umbracoComMemberGuidField;
}
set {
this.umbracoComMemberGuidField = value;
}
}
/// <remarks/>
public int ourMemberId {
get {
return this.ourMemberIdField;
}
set {
this.ourMemberIdField = value;
}
}
/// <remarks/>
public System.Guid ourMemberGuid {
get {
return this.ourMemberGuidField;
}
set {
this.ourMemberGuidField = value;
}
}
/// <remarks/>
public string[] Groups {
get {
return this.groupsField;
}
set {
this.groupsField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public enum OrderStatus {
/// <remarks/>
Accepted,
/// <remarks/>
Refused,
/// <remarks/>
Error,
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void CreateCompletedEventHandler(object sender, CreateCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CreateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal CreateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public OrderProxy Result {
get {
this.RaiseExceptionIfNecessary();
return ((OrderProxy)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void GetFromEcommerceIDCompletedEventHandler(object sender, GetFromEcommerceIDCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetFromEcommerceIDCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal GetFromEcommerceIDCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public OrderProxy Result {
get {
this.RaiseExceptionIfNecessary();
return ((OrderProxy)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void GetFromTransactionIDCompletedEventHandler(object sender, GetFromTransactionIDCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetFromTransactionIDCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal GetFromTransactionIDCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public OrderProxy Result {
get {
this.RaiseExceptionIfNecessary();
return ((OrderProxy)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void LinkProfilesCompletedEventHandler(object sender, LinkProfilesCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class LinkProfilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal LinkProfilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public BuyerProxy Result {
get {
this.RaiseExceptionIfNecessary();
return ((BuyerProxy)(this.results[0]));
}
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://umbraco.com/webservices/orders.asmx?disco" filename="orders.disco" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://umbraco.com/webservices/orders.asmx?wsdl" filename="orders.wsdl" />
</Results>
</DiscoveryClientResultsFile>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
<contractRef ref="http://umbraco.com/webservices/orders.asmx?wsdl" docRef="http://umbraco.com/webservices/orders.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
<soap address="http://umbraco.com/webservices/orders.asmx" xmlns:q1="http://tempuri.org/" binding="q1:OrdersSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
<soap address="http://umbraco.com/webservices/orders.asmx" xmlns:q2="http://tempuri.org/" binding="q2:OrdersSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
</discovery>
@@ -0,0 +1,267 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:import namespace="http://microsoft.com/wsdl/types/" />
<s:element name="Create">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="order" type="tns:OrderProxy" />
<s:element minOccurs="1" maxOccurs="1" name="testMode" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="OrderProxy">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="OrderLines" type="tns:ArrayOfOrderLineProxy" />
<s:element minOccurs="1" maxOccurs="1" name="Created" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="Buyer" type="tns:BuyerProxy" />
<s:element minOccurs="1" maxOccurs="1" name="OrderStatus" type="tns:OrderStatus" />
<s:element minOccurs="0" maxOccurs="1" name="InvoicePath" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DeliOrderID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="EcommerceOrderID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="PurchaseOrder" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="TransactionID" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfOrderLineProxy">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="OrderLineProxy" nillable="true" type="tns:OrderLineProxy" />
</s:sequence>
</s:complexType>
<s:complexType name="OrderLineProxy">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Amount" type="s:decimal" />
<s:element minOccurs="0" maxOccurs="1" name="description" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Quantity" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="ProductID" type="s1:guid" />
<s:element minOccurs="1" maxOccurs="1" name="VendorEconomicID" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="BuyerProxy">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Company" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="VAT" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="VatInvalid" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="Address" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Phone" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="IP" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="umbracoComMemberID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="umbracoComMemberGuid" type="s1:guid" />
<s:element minOccurs="1" maxOccurs="1" name="ourMemberId" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="ourMemberGuid" type="s1:guid" />
<s:element minOccurs="0" maxOccurs="1" name="Groups" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="OrderStatus">
<s:restriction base="s:string">
<s:enumeration value="Accepted" />
<s:enumeration value="Refused" />
<s:enumeration value="Error" />
</s:restriction>
</s:simpleType>
<s:element name="CreateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateResult" type="tns:OrderProxy" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetFromEcommerceID">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="EcommerceOrderID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetFromEcommerceIDResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetFromEcommerceIDResult" type="tns:OrderProxy" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetFromTransactionID">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="transaction" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetFromTransactionIDResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetFromTransactionIDResult" type="tns:OrderProxy" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LinkProfiles">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="profileEmail" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="profilePassword" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LinkProfilesResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LinkProfilesResult" type="tns:BuyerProxy" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
<s:simpleType name="guid">
<s:restriction base="s:string">
<s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
</s:restriction>
</s:simpleType>
</s:schema>
</wsdl:types>
<wsdl:message name="CreateSoapIn">
<wsdl:part name="parameters" element="tns:Create" />
</wsdl:message>
<wsdl:message name="CreateSoapOut">
<wsdl:part name="parameters" element="tns:CreateResponse" />
</wsdl:message>
<wsdl:message name="GetFromEcommerceIDSoapIn">
<wsdl:part name="parameters" element="tns:GetFromEcommerceID" />
</wsdl:message>
<wsdl:message name="GetFromEcommerceIDSoapOut">
<wsdl:part name="parameters" element="tns:GetFromEcommerceIDResponse" />
</wsdl:message>
<wsdl:message name="GetFromTransactionIDSoapIn">
<wsdl:part name="parameters" element="tns:GetFromTransactionID" />
</wsdl:message>
<wsdl:message name="GetFromTransactionIDSoapOut">
<wsdl:part name="parameters" element="tns:GetFromTransactionIDResponse" />
</wsdl:message>
<wsdl:message name="LinkProfilesSoapIn">
<wsdl:part name="parameters" element="tns:LinkProfiles" />
</wsdl:message>
<wsdl:message name="LinkProfilesSoapOut">
<wsdl:part name="parameters" element="tns:LinkProfilesResponse" />
</wsdl:message>
<wsdl:portType name="OrdersSoap">
<wsdl:operation name="Create">
<wsdl:input message="tns:CreateSoapIn" />
<wsdl:output message="tns:CreateSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetFromEcommerceID">
<wsdl:input message="tns:GetFromEcommerceIDSoapIn" />
<wsdl:output message="tns:GetFromEcommerceIDSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetFromTransactionID">
<wsdl:input message="tns:GetFromTransactionIDSoapIn" />
<wsdl:output message="tns:GetFromTransactionIDSoapOut" />
</wsdl:operation>
<wsdl:operation name="LinkProfiles">
<wsdl:input message="tns:LinkProfilesSoapIn" />
<wsdl:output message="tns:LinkProfilesSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="OrdersSoap" type="tns:OrdersSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Create">
<soap:operation soapAction="http://tempuri.org/Create" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetFromEcommerceID">
<soap:operation soapAction="http://tempuri.org/GetFromEcommerceID" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetFromTransactionID">
<soap:operation soapAction="http://tempuri.org/GetFromTransactionID" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LinkProfiles">
<soap:operation soapAction="http://tempuri.org/LinkProfiles" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="OrdersSoap12" type="tns:OrdersSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="Create">
<soap12:operation soapAction="http://tempuri.org/Create" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetFromEcommerceID">
<soap12:operation soapAction="http://tempuri.org/GetFromEcommerceID" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetFromTransactionID">
<soap12:operation soapAction="http://tempuri.org/GetFromTransactionID" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LinkProfiles">
<soap12:operation soapAction="http://tempuri.org/LinkProfiles" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Orders">
<wsdl:port name="OrdersSoap" binding="tns:OrdersSoap">
<soap:address location="http://umbraco.com/webservices/orders.asmx" />
</wsdl:port>
<wsdl:port name="OrdersSoap12" binding="tns:OrdersSoap12">
<soap12:address location="http://umbraco.com/webservices/orders.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="MemberData" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>Marketplace.com.umbraco.MemberData, Web References.com.umbraco.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
@@ -0,0 +1,257 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34014
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
// This source code was auto-generated by Microsoft.VSDesigner, Version 4.0.30319.34014.
//
#pragma warning disable 1591
namespace Marketplace.com.umbraco {
using System;
using System.Web.Services;
using System.Diagnostics;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.ComponentModel;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MemberLookUpSoap", Namespace="http://tempuri.org/")]
public partial class MemberLookUp : System.Web.Services.Protocols.SoapHttpClientProtocol {
private System.Threading.SendOrPostCallback GetMemberDataOperationCompleted;
private bool useDefaultCredentialsSetExplicitly;
/// <remarks/>
public MemberLookUp() {
this.Url = global::Marketplace.Properties.Settings.Default.Marketplace_com_umbraco_MemberLookUp;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
public new string Url {
get {
return base.Url;
}
set {
if ((((this.IsLocalFileSystemWebService(base.Url) == true)
&& (this.useDefaultCredentialsSetExplicitly == false))
&& (this.IsLocalFileSystemWebService(value) == false))) {
base.UseDefaultCredentials = false;
}
base.Url = value;
}
}
public new bool UseDefaultCredentials {
get {
return base.UseDefaultCredentials;
}
set {
base.UseDefaultCredentials = value;
this.useDefaultCredentialsSetExplicitly = true;
}
}
/// <remarks/>
public event GetMemberDataCompletedEventHandler GetMemberDataCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetMemberData", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public MemberData GetMemberData(string username, string password) {
object[] results = this.Invoke("GetMemberData", new object[] {
username,
password});
return ((MemberData)(results[0]));
}
/// <remarks/>
public void GetMemberDataAsync(string username, string password) {
this.GetMemberDataAsync(username, password, null);
}
/// <remarks/>
public void GetMemberDataAsync(string username, string password, object userState) {
if ((this.GetMemberDataOperationCompleted == null)) {
this.GetMemberDataOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetMemberDataOperationCompleted);
}
this.InvokeAsync("GetMemberData", new object[] {
username,
password}, this.GetMemberDataOperationCompleted, userState);
}
private void OnGetMemberDataOperationCompleted(object arg) {
if ((this.GetMemberDataCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetMemberDataCompleted(this, new GetMemberDataCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
private bool IsLocalFileSystemWebService(string url) {
if (((url == null)
|| (url == string.Empty))) {
return false;
}
System.Uri wsUri = new System.Uri(url);
if (((wsUri.Port >= 1024)
&& (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
return true;
}
return false;
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public partial class MemberData {
private int idField;
private string[] memberGroupsField;
private string companyField;
private string addressField;
private string countryField;
private string phoneField;
private string vATNumberField;
private string invoicingEmailField;
/// <remarks/>
public int Id {
get {
return this.idField;
}
set {
this.idField = value;
}
}
/// <remarks/>
public string[] MemberGroups {
get {
return this.memberGroupsField;
}
set {
this.memberGroupsField = value;
}
}
/// <remarks/>
public string Company {
get {
return this.companyField;
}
set {
this.companyField = value;
}
}
/// <remarks/>
public string Address {
get {
return this.addressField;
}
set {
this.addressField = value;
}
}
/// <remarks/>
public string Country {
get {
return this.countryField;
}
set {
this.countryField = value;
}
}
/// <remarks/>
public string Phone {
get {
return this.phoneField;
}
set {
this.phoneField = value;
}
}
/// <remarks/>
public string VATNumber {
get {
return this.vATNumberField;
}
set {
this.vATNumberField = value;
}
}
/// <remarks/>
public string InvoicingEmail {
get {
return this.invoicingEmailField;
}
set {
this.invoicingEmailField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
public delegate void GetMemberDataCompletedEventHandler(object sender, GetMemberDataCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.33440")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetMemberDataCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal GetMemberDataCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public MemberData Result {
get {
this.RaiseExceptionIfNecessary();
return ((MemberData)(this.results[0]));
}
}
}
}
#pragma warning restore 1591
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference" url="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx?disco" filename="memberlookup.disco" />
<DiscoveryClientResult referenceType="System.Web.Services.Discovery.ContractReference" url="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx?wsdl" filename="memberlookup.wsdl" />
</Results>
</DiscoveryClientResultsFile>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
<contractRef ref="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx?wsdl" docRef="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
<soap address="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx" xmlns:q1="http://tempuri.org/" binding="q1:MemberLookUpSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
<soap address="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx" xmlns:q2="http://tempuri.org/" binding="q2:MemberLookUpSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
</discovery>
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="GetMemberData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="username" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetMemberDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetMemberDataResult" type="tns:MemberData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="MemberData">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="MemberGroups" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Company" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Address" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Phone" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="VATNumber" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="InvoicingEmail" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="GetMemberDataSoapIn">
<wsdl:part name="parameters" element="tns:GetMemberData" />
</wsdl:message>
<wsdl:message name="GetMemberDataSoapOut">
<wsdl:part name="parameters" element="tns:GetMemberDataResponse" />
</wsdl:message>
<wsdl:portType name="MemberLookUpSoap">
<wsdl:operation name="GetMemberData">
<wsdl:input message="tns:GetMemberDataSoapIn" />
<wsdl:output message="tns:GetMemberDataSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MemberLookUpSoap" type="tns:MemberLookUpSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetMemberData">
<soap:operation soapAction="http://tempuri.org/GetMemberData" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="MemberLookUpSoap12" type="tns:MemberLookUpSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetMemberData">
<soap12:operation soapAction="http://tempuri.org/GetMemberData" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MemberLookUp">
<wsdl:port name="MemberLookUpSoap" binding="tns:MemberLookUpSoap">
<soap:address location="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx" />
</wsdl:port>
<wsdl:port name="MemberLookUpSoap12" binding="tns:MemberLookUpSoap12">
<soap12:address location="http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
+30
View File
@@ -0,0 +1,30 @@
<?xml version="1.0"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
In the example below, the "SetAttributes" transform will change the value of
"connectionString" to use "ReleaseSQLServer" only when the "Match" locator
finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
Note that because there is only one customErrors section under the
<system.web> node, there is no need to use the "xdt:Locator" attribute.
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>
+312
View File
@@ -0,0 +1,312 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Marketplace.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="umbraco.presentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<!-- Added in Umbraco 4.6.2 -->
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
<section name="MarketplaceProviders" type="Marketplace.Providers.MarketplaceProviderConfiguration, Marketplace.Providers" />
<!-- End of added in Umbraco 4.6.2 -->
<section name="clientDependency" type="ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core" requirePermission="false" /></configSections>
<appSettings>
<add key="umbracoDbDSN" value="server=.\sqlexpress;database=our;user id=sa;password=password!" />
<add key="umbracoConfigurationStatus" value="4.7.0" />
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/communityLogoGenerator" />
<add key="umbracoContentXML" value="~/App_Data/umbraco.config" />
<add key="umbracoStorageDirectory" value="~/App_Data" />
<add key="umbracoPath" value="~/umbraco" />
<add key="umbracoEnableStat" value="false" />
<add key="umbracoHideTopLevelNodeFromPath" value="true" />
<add key="umbracoEditXhtmlMode" value="true" />
<add key="umbracoUseDirectoryUrls" value="true" />
<add key="umbracoDebugMode" value="true" />
<add key="umbracoTimeOutInMinutes" value="20" />
<add key="umbracoVersionCheckPeriod" value="7" />
<add key="umbracoDisableXsltExtensions" value="true" />
<add key="umbracoDefaultUILanguage" value="en" />
<add key="umbracoProfileUrl" value="member" />
<add key="umbracoUseSSL" value="false" />
<add key="umbracoUseMediumTrust" value="false" />
<!--
Set this to true to enable storing the xml cache locally to the IIS server even if the app files are stored centrally on a SAN/NAS
Alex Norcliffe 2010 02 for 4.1 -->
<add key="umbracoContentXMLUseLocalTemp" value="false" />
<!-- Added in Umbraco 4.6.2 -->
<add key="webpages:Enabled" value="false" />
<add key="enableSimpleMembership" value="false" />
<add key="autoFormsAuthentication" value="false" />
<!-- End of added in Umbraco 4.6.2 -->
<!-- Deli settings -->
<add key="deliProjectRoot" value="1113" />
<add key="deliWebServiceUser" value="Deli" />
<add key="deliWebServicePass" value="DeliDeliDeli" />
<add key="deliPayPalTest" value="true" />
<add key="deliCartRoot" value="1113" />
<add key="deliPayPalReturnUrl" value="1113" />
<add key="deli_VAT" value="0.25" />
<!-- End Deli settings -->
</appSettings>
<system.net>
<mailSettings>
<smtp>
<network host="mx01.fab-it.dk" />
</smtp>
</mailSettings>
</system.net>
<!-- REMOVE FOR BETA -->
<!-- added by NH to test foreign membership providers-->
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=C:\USERS\HARTVIG\DOCUMENTS\VISUAL STUDIO 2005\WEBSITES\AJAXENABLEDWEBSITE2\APP_DATA\ASPNETDB.MDF;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="Marketplace.Data.Properties.Settings.ourConnectionString" connectionString="Data Source=PETER-MAC-PC\SQLEXPRESS;Initial Catalog=our;Persist Security Info=True;User ID=sa;Password=password!" providerName="System.Data.SqlClient" />
</connectionStrings>
<MarketplaceProviders default="ListingProvider">
<providers>
<add name="ListingProvider" type="Marketplace.Providers.Listing.NodeListingProvider, Marketplace.Providers" />
<add name="VendorProvider" type="Marketplace.Providers.Vendor.MemberVendorProvider, Marketplace.Providers" />
<add name="MediaProvider" type="Marketplace.Providers.MediaFile.UWikiMediaProvider, Marketplace.Providers" />
<add name="TagProvider" type="Marketplace.Providers.Tags.UmbracoProjectTagProvider, Marketplace.Providers" />
<add name="CategoryProvider" type="Marketplace.Providers.Category.UmbracoCategoryProvider, Marketplace.Providers" />
<add name="LicenseProvider" type="Marketplace.Providers.License.LicenseProvider, Marketplace.Providers" />
<add name="CartProvider" type="Marketplace.Providers.Cart.UmbracoEcommerceCartProvider, Marketplace.Providers" />
<add name="OrderProvider" type="Marketplace.Providers.Orders.UmbracoEcommerceOrderProvider, Marketplace.Providers" />
<add name="MemberProvider" type="Marketplace.Providers.Members.DeliMemberProvider, Marketplace.Providers" />
<add name="memberLicenseProvider" type="Marketplace.Providers.MemberLicense.MemberLicenseProvider, Marketplace.Providers" />
<add name="OrderItemProvider" type="Marketplace.Providers.OrderItem.DeliOrderItemProvider, Marketplace.Providers" />
<add name="OrderNoteProvider" type="Marketplace.Providers.OrderNote.OrderNoteProvider, Marketplace.Providers" />
<add name="PaymentInfoProvider" type="Marketplace.Providers.PaymentInfo.UmbracoEcommercePaymentInfoProvider, Marketplace.Providers" />
<add name="PayoutProvider" type="Marketplace.Providers.Payout.PayoutProvider, Marketplace.Providers" />
</providers>
</MarketplaceProviders>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
The following attributes can be set on the <httpRuntime> tag.
<system.Web>
<httpRuntime targetFramework="4.5.1" />
</system.Web>
-->
<system.web>
<httpRuntime requestValidationMode="2.0" />
<!-- <trust level="Medium" originUrl=".*" />-->
<customErrors mode="Off" />
<trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
<xhtmlConformance mode="Strict" />
<pages enableEventValidation="false" controlRenderingCompatibilityVersion="4.0">
<!-- ASPNETAJAX -->
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add tagPrefix="umbraco" namespace="umbraco.presentation.templateControls" assembly="umbraco" />
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</controls>
<namespaces>
<add namespace="ClientDependency.Core" />
<add namespace="ClientDependency.Core.Mvc" /></namespaces></pages>
<httpModules>
<!-- URL REWRTIER -->
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
<add name="umbracoRequestModule" type="umbraco.presentation.requestModule" />
<!-- UMBRACO -->
<add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule" />
<add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule" />
<!-- ASPNETAJAX -->
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<!-- CLIENT DEPENDENCY -->
<!-- ** Need to add the dependency module --><add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" /></httpModules>
<httpHandlers>
<remove verb="*" path="*.asmx" />
<!-- ASPNETAJAX -->
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<!-- UMBRACO CHANNELS -->
<add verb="*" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
<add verb="*" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
<!-- ** Need to add the dependency handler --><add verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " />
<add verb="GET,HEAD,POST" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
<add verb="GET" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " /></httpHandlers>
<compilation defaultLanguage="c#" debug="true" batch="false" targetFramework="4.5.1">
<assemblies>
<!-- ASP.NET 4.0 Assemblies -->
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
<!-- Added in Umbraco 4.6.2 -->
<buildProviders>
<add extension=".cshtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
<add extension=".vbhtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
<add extension=".razor" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
</buildProviders>
<!-- End of added in Umbraco 4.6.2 -->
</compilation>
<authentication mode="Forms">
<forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" />
</authentication>
<authorization>
<allow users="?" />
</authorization>
<!-- Membership Provider -->
<membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Another Type" passwordFormat="Hashed" />
<add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" />
</providers>
</membership>
<!-- added by NH to support membership providers in access layer -->
<roleManager enabled="true" defaultProvider="UmbracoRoleProvider">
<providers>
<clear />
<add name="UmbracoRoleProvider" type="umbraco.providers.members.UmbracoRoleProvider" />
</providers>
</roleManager>
<!-- Sitemap provider-->
<siteMap defaultProvider="UmbracoSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="UmbracoSiteMapProvider" type="umbraco.presentation.nodeFactory.UmbracoSiteMapProvider" defaultDescriptionAlias="description" securityTrimmingEnabled="true" />
</providers>
</siteMap>
</system.web>
<!-- ASPNETAJAX -->
<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="true" enableCaching="true" />
<webServices>
<jsonSerialization maxJsonLength="500000" />
</webServices>
</scripting>
</system.web.extensions>
<applicationSettings>
<Marketplace.Properties.Settings>
<setting name="Marketplace_com_umbraco_MemberLookUp" serializeAs="String">
<value>http://umbraco.com/umbraco/plugins/memberlookup/memberlookup.asmx</value>
</setting>
<setting name="Marketplace_com_umbraco_orders_Orders" serializeAs="String">
<value>http://umbraco.com/webservices/orders.asmx</value>
</setting>
</Marketplace.Properties.Settings>
<umbraco.presentation.Properties.Settings>
<setting name="umbraco_com_regexlib_Webservices" serializeAs="String">
<value>http://regexlib.com/WebServices.asmx</value>
</setting>
</umbraco.presentation.Properties.Settings>
</applicationSettings>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<remove name="UrlRewriteModule" />
<remove name="umbracoRequestModule" />
<remove name="viewstateMoverModule" />
<remove name="umbracoBaseRequestModule" />
<remove name="ClientDependencyModule" />
<!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) -->
<remove name="FormsAuthentication" />
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
<add name="umbracoRequestModule" type="umbraco.presentation.requestModule" />
<add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule" />
<add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<!-- ** Need to add the dependency module --><add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
<!-- Needed for login/membership to work on homepage (as per http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests) -->
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" /></modules>
<handlers accessPolicy="Read, Write, Script, Execute">
<!-- ** Need to add the dependency handler --><remove name="WebServiceHandlerFactory-Integrated" />
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<remove name="Channels" />
<remove name="Channels_Word" />
<remove name="ClientDependency" />
<remove name="SpellChecker" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="*" name="Channels" preCondition="integratedMode" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
<add verb="*" name="Channels_Word" preCondition="integratedMode" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
<add verb="*" name="ClientDependency" preCondition="integratedMode" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " />
<add verb="GET,HEAD,POST" preCondition="integratedMode" name="SpellChecker" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
<!-- Wiki upload handler -->
<add verb="*" name="wiki_upload" path="umbraco/wiki/upload.aspx" type="uWiki.WikiFileUploadHandler, uWiki" />
<!-- project upload handler -->
<add verb="*" name="project_upload" path="umbraco/project/upload.aspx" type="Marketplace.ProjectFileUploadHandler, Marketplace" />
<!-- default member avatar -->
<add verb="*" name="default_avatar" path="media/avatar/*.jpg" type="our.DefaultMemberAvatarHandler, our.umbraco.org" />
<!-- deli PayPal IPN handlers -->
<add verb="*" name="ipn_dev" path="umbraco/ipn/dev.aspx" type=" Marketplace.HttpHandlers.PayPalIPNHandlerTEST, Marketplace" />
<!-- deli PayPal IPN handlers
<add verb="*" name="ipn_production" path="umbraco/ipn/production.aspx" type=" Umbraco.Shop.HttpHandlers.IpnProduction, Marketplace" />
-->
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /><remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /><remove name="ExtensionlessUrlHandler-Integrated-4.0" /><add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /><add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /><add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /><remove name="DependencyHandler" /><add name="DependencyHandler" preCondition="integratedMode" verb="GET" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " /></handlers>
<httpProtocol>
<customHeaders>
<add name="P3P" value="policyref=&quot;http://our.umbraco.org/w3c/p3p.xml&quot;" />
</customHeaders>
</httpProtocol>
<urlCompression doDynamicCompression="true" />
</system.webServer>
<runtime>
<!-- Old asp.net ajax assembly bindings -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<!-- Added in Umbraco 4.6.2 -->
<system.web.webPages.razor>
<host factoryType="umbraco.MacroEngines.RazorUmbracoFactory, umbraco.MacroEngines" />
<pages pageBaseType="umbraco.MacroEngines.DynamicNodeContext">
<namespaces>
<add namespace="Microsoft.Web.Helpers" />
<add namespace="umbraco" />
<add namespace="Examine" />
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- End of added in Umbraco 4.6.2 -->
<clientDependency version="1">
<!-- Full config documentation is here: https://github.com/Shandem/ClientDependency/wiki/Configuration -->
</clientDependency></configuration>
+16
View File
@@ -0,0 +1,16 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="setalllive.aspx.cs" Inherits="Marketplace.adhoc.setalllive" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
+47
View File
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Interfaces;
using Marketplace.Providers;
using umbraco.cms.businesslogic.web;
namespace Marketplace.adhoc
{
public partial class setalllive : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var projectsProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
var projects = projectsProvider.GetAllListings(true, true).ToList();
var count = 0;
var liveCount = 0;
var user = new umbraco.BusinessLogic.User(0);
foreach (var p in projects)
{
if (!p.Live)
{
count++;
Document d = new Document(p.Id);
d.getProperty("projectLive").Value = "1";
d.Publish(user);
umbraco.library.UpdateDocumentCache(d.Id);
Response.Write(d.Text + "+++++++:" + d.getProperty("projectLive").Value + "<br/>");
}
}
Response.Write(count + " projects updated to be live of " + projects.Count() + "<br/>");
Response.Write(liveCount + " are already live");
}
}
}
+26
View File
@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.adhoc
{
public partial class setalllive
{
/// <summary>
/// form1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
}
}
+143
View File
@@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Marketplace.Interfaces;
using Marketplace.Providers;
using umbraco;
using our;
using System.Text.RegularExpressions;
using umbraco.NodeFactory;
using System.Globalization;
using Marketplace.Data;
namespace Marketplace
{
[XsltExtension("deli.library")]
public class library
{
public static bool HasVendorAccess(int pageId)
{
var page = new umbraco.NodeFactory.Node(pageId);
if (page.GetProperty("vendorOnly") != null)
{
var memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
var member = memberProvider.GetCurrentMember();
var vendorOnly = page.GetProperty("vendorOnly").Value == "1" ? true : false;
if (vendorOnly)
{
if (member.IsDeliVendor)
return true;
else
return false;
}
return true;
}
return true;
}
public static string ShortenText(string text)
{
text = Utills.StripHTML(text).Replace("&nbsp;", "");
if (text.Length > 210)
{
text = text.Substring(0, 210);
text = text.Substring(0, text.LastIndexOf(' '));
}
text = Regex.Replace(text, @"[^a-zA-Z0-9\s.?!&;]", ""); //strip all crap from the listing such as ======================================= !!!!
return text.Trim();
}
public static string GetTagsAsCSV(IEnumerable<IProjectTag> tagList)
{
var tags = string.Empty;
int counter = 0;
foreach (var t in tagList)
{
tags += t.Text + ", ";
counter++;
if (counter > 3)
break;
}
if (tags.Length > 0)
{
tags = tags.Substring(0, tags.Length - 2);
}
return tags;
}
public static string GetCategoryName(int projectId)
{
var node = new Node(projectId);
return node.Parent.Name;
}
public static string GetDefaultScreenshot(string prop)
{
return !String.IsNullOrEmpty(prop) ? "/umbraco/imagegen.ashx?image=" + prop + "&amp;pad=true&amp;width=50&amp;height=50;" : "/css/img/package2.png";
}
public static string GetManufacturerName(IVendor vendor)
{
if (!string.IsNullOrEmpty(vendor.VendorCompanyName))
{
return vendor.VendorCompanyName;
}
else
{
return vendor.Member.Name;
}
}
public static string GetCountry(string code)
{
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
RegionInfo ri = new RegionInfo(ci.LCID);
if (ri.TwoLetterISORegionName.ToLowerInvariant() == code)
return ri.EnglishName;
}
return "";
}
/// <summary>
/// Check to see if member has reported on compatibility for a package regardless of version of the package
/// </summary>
/// <param name="memberId">The members Id</param>
/// <param name="packageId">The package Id</param>
/// <returns></returns>
public static bool HasDownloaded(int memberId, int packageId)
{
using (var ctx = new MarketplaceDataContext())
{
var downs = ctx.projectDownloads.Where(x => x.memberId == memberId && x.projectId == packageId);
if (downs.Count() > 0)
return true;
return false;
}
}
}
}
+26
View File
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AutoMapper" version="3.0.0" targetFramework="net451" />
<package id="ClientDependency" version="1.7.1.2" targetFramework="net451" />
<package id="ClientDependency-Mvc" version="1.7.0.4" targetFramework="net451" />
<package id="Examine" version="0.1.57.2941" targetFramework="net451" />
<package id="HtmlAgilityPack" version="1.4.6" targetFramework="net451" />
<package id="ImageProcessor" version="1.9.5.0" targetFramework="net451" />
<package id="ImageProcessor.Web" version="3.3.0.0" targetFramework="net451" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net451" />
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net451" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.1" targetFramework="net451" />
<package id="Microsoft.AspNet.Razor" version="2.0.20710.0" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net451" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net451" />
<package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net451" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net451" />
<package id="MiniProfiler" version="2.1.0" targetFramework="net451" />
<package id="MySql.Data" version="6.6.5" targetFramework="net451" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net451" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net451" />
<package id="UmbracoCms.Core" version="7.1.6" targetFramework="net451" />
<package id="xmlrpcnet" version="2.5.0" targetFramework="net451" />
</packages>
+91
View File
@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
using System.IO;
using System.Web.Caching;
using umbraco.BusinessLogic;
namespace Marketplace.uVersion
{
public class config
{
public static XmlDocument _Settings
{
get
{
XmlDocument us = (XmlDocument)HttpRuntime.Cache["uVersionSettingsFile"];
if (us == null)
us = ensureSettingsDocument();
return us;
}
}
private static string _path = umbraco.GlobalSettings.FullpathToRoot + Path.DirectorySeparatorChar + "config" + Path.DirectorySeparatorChar;
private static string _filename = "uVersion.config";
private static XmlDocument ensureSettingsDocument()
{
object settingsFile = HttpRuntime.Cache["uVersionSettingsFile"];
// Check for language file in cache
if (settingsFile == null)
{
XmlDocument temp = new XmlDocument();
XmlTextReader settingsReader = new XmlTextReader(_path + _filename);
try
{
temp.Load(settingsReader);
HttpRuntime.Cache.Insert("uVersionSettingsFile", temp, new CacheDependency(_path + _filename));
}
catch (Exception e)
{
Log.Add(LogTypes.Error, new User(0), -1, "Error reading uVersion setting file: " + e.ToString());
}
settingsReader.Close();
return temp;
}
else
return (XmlDocument)settingsFile;
}
private static void save()
{
_Settings.Save(_path + _filename);
}
/// <summary>
/// Selects a xml node in the umbraco settings config file.
/// </summary>
/// <param name="Key">The xpath query to the specific node.</param>
/// <returns>If found, it returns the specific configuration xml node.</returns>
public static XmlNode GetKeyAsNode(string Key)
{
if (Key == null)
throw new ArgumentException("Key cannot be null");
ensureSettingsDocument();
if (_Settings == null || _Settings.DocumentElement == null)
return null;
return _Settings.DocumentElement.SelectSingleNode(Key);
}
/// <summary>
/// Gets the value of configuration xml node with the specified key.
/// </summary>
/// <param name="Key">The key.</param>
/// <returns></returns>
public static string GetKey(string Key)
{
ensureSettingsDocument();
XmlNode node = _Settings.DocumentElement.SelectSingleNode(Key);
if (node == null || node.FirstChild == null || node.FirstChild.Value == null)
return string.Empty;
return node.FirstChild.Value;
}
}
}
+42
View File
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
namespace Marketplace.uVersion
{
public class UVersion
{
public string Name { get; set; }
public string Description { get; set; }
public bool Exists { get; set; }
public UVersion(string name)
{
XmlNode x = config.GetKeyAsNode("/configuration/versions/version [@voteName = '" + name + "']");
if (x != null) {
Name = x.Attributes.GetNamedItem("voteName").Value;
Description = x.Attributes.GetNamedItem("voteDescription").Value;
Exists = true;
} else
Exists = false;
}
public static List<UVersion> GetAllVersions() {
XmlNode x = config.GetKeyAsNode("/configuration/versions");
var l = new List<UVersion>();
foreach (XmlNode cx in x.ChildNodes) {
if (cx.Attributes != null && cx.Attributes.GetNamedItem("vote") != null && cx.Attributes.GetNamedItem("vote").Value == "true")
if (cx.Attributes.GetNamedItem("voteName") != null)
l.Add(new UVersion(cx.Attributes.GetNamedItem("voteName").Value));
}
return l;
}
}
}
@@ -0,0 +1,152 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrderReview.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Admin.OrderReview" %>
<h2>Deli Orders</h2>
<p>Select Date Range
<asp:DropDownList ID="DateRangeDdl" runat="server">
<asp:ListItem Value="1">1 Day</asp:ListItem>
<asp:ListItem Value="3">3 Days</asp:ListItem>
<asp:ListItem Value="7" Selected="True">7 Days</asp:ListItem>
<asp:ListItem Value="14">14 Days</asp:ListItem>
<asp:ListItem Value="30">30 Days</asp:ListItem>
<asp:ListItem Value="60">60 Days</asp:ListItem>
<asp:ListItem Value="90">90 Days</asp:ListItem>
<asp:ListItem Value="120">120 Days</asp:ListItem>
</asp:DropDownList>
&nbsp;&nbsp;
<asp:Button ID="GetOrdersButton" runat="server" Text="Get Orders"
onclick="GetOrdersButton_Click" />
</p>
<%--<asp:GridView ID="OrderView" runat="server" AutoGenerateColumns="false">
<HeaderStyle BackColor="#D1D1D1"></HeaderStyle>
<Columns>
<asp:BoundField HeaderText="Deli Id" DataField="Id" />
<asp:BoundField HeaderText="Umbraco Id" DataField="OrderId" />
<asp:BoundField HeaderText="Status" DataField="Status" />
<asp:BoundField HeaderText="TaxTotal EUR" DataField="TaxTotal" />
<asp:BoundField HeaderText="SubTotal EUR" DataField="SubTotal" />
<asp:BoundField HeaderText="Total EUR" DataField="Total" />
<asp:BoundField HeaderText="Currency" DataField="Currency" />
<asp:BoundField HeaderText="Local Total" DataField="ProcessedTotal" />
<asp:BoundField HeaderText="Company" DataField="CompanyName" />
<asp:BoundField HeaderText="Invoice Email" DataField="CompanyInvoiceEmail" />
<asp:BoundField HeaderText="Country" DataField="CompanyCountry" />
<asp:BoundField HeaderText="PaymentDate" DataField="PaymentDate" />
<asp:BoundField HeaderText="Refunded?" DataField="IsRefunded" />
<asp:BoundField HeaderText="Refund Date" DataField="RefundDate" />
</Columns>
</asp:GridView>--%>
<asp:Repeater runat="server" ID="OrderView">
<HeaderTemplate>
<table class="dataTable">
<thead>
<tr>
<th>Deli Id</th>
<th>Economid Id</th>
<th>Status</th>
<th>Company</th>
<th>VAT Id</th>
<th>Invoice Email</th>
<th>Country</th>
<th>Date</th>
<th class="right">Sub Total EUR</th>
<th class="right">Tax Total EUR</th>
<th class="right">Total EUR</th>
<th>Currency</th>
<th>Refunded?</th>
<th>Refund Date</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="rowId" runat="server" Value='<%# Eval("Id") %>' />
<span class="expand" id="showHide_<%# Eval("Id") %>">[+]</span>&nbsp;
<%# Eval("Id")%>
</td>
<td>
<%# Eval("EconomicId")%>
</td>
<td>
<%# Eval("Status")%>
</td>
<td>
<%# Eval("Company")%>
</td>
<td>
<%# Eval("VatID")%><br />
<asp:Literal ID="IsValid" runat="server" />
<asp:Button runat="server" ID="ValidateVat" style="font-family:Webdings" Text="a" OnCommand="RowCommand" CommandArgument='<%# Eval("VatID") %>' CommandName="ValidateVat" />
</td>
<td>
<%# Eval("InvoiceEmail")%>
</td>
<td>
<%# Eval("Country")%>
</td>
<td>
<%# Eval("Date")%>
</td>
<td class="right">
<%# Eval("SubTotal")%>
</td>
<td class="right">
<%# Eval("TaxTotal")%>
</td>
<td class="right">
<%# Eval("Total")%>
</td>
<td>
<%# Eval("Currency")%>
</td>
<td>
<%# Eval("Refunded")%>
</td>
<td>
<%# Eval("RefundDate")%>
</td>
</tr>
<tr class="detailsRow" id="details_<%# Eval("Id") %>">
<td colspan="13" class="borderTop">
<h3>Order details</h3>
<p>These are the individual products ordered</p>
<asp:Repeater runat="server" ID="orderItemRepeater">
<HeaderTemplate>
<table class="dataTable">
<thead>
<tr>
<th>Vendor</th>
<th>Package</th>
<th>License</th>
<th>Quantity</th>
<th>Value</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Vendor")%></td>
<td><%# Eval("Package")%></td>
<td><%# Eval("LicenseTypeName")%></td>
<td><%# Eval("Quantity")%></td>
<td class="right"><%# Eval("Value")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
@@ -0,0 +1,247 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Providers.Orders;
using Marketplace.Providers;
using Marketplace.Interfaces;
using Marketplace.Providers.OrderNote;
using Marketplace.Providers.Listing;
using System.Globalization;
using umbraco.BasePages;
using System.Web.UI.HtmlControls;
using umbraco;
using umbraco.cms.businesslogic.member;
namespace Marketplace.usercontrols.Deli.Admin
{
public partial class OrderReview : System.Web.UI.UserControl
{
#region properties
private UmbracoEcommerceOrderProvider _orderProvider;
public UmbracoEcommerceOrderProvider OrderProvider
{
get
{
if (_orderProvider != null)
return _orderProvider;
else
{
_orderProvider = (UmbracoEcommerceOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
return _orderProvider;
}
}
}
public IOrder Order;
private IDeliOrderItemProvider _itemProvider;
public IDeliOrderItemProvider ItemProvider
{
get
{
if (_itemProvider != null)
return _itemProvider;
else
{
_itemProvider = (IDeliOrderItemProvider)MarketplaceProviderManager.Providers["OrderItemProvider"];
return _itemProvider;
}
}
}
private ILicenseProvider _licenseProvider;
public ILicenseProvider LicenseProvider
{
get
{
if (_licenseProvider != null)
return _licenseProvider;
else
{
_licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
return _licenseProvider;
}
}
}
private IMemberLicenseProvider _memberLicenseProvider;
public IMemberLicenseProvider MemberLicenseProvider
{
get
{
if (_memberLicenseProvider != null)
return _memberLicenseProvider;
else
{
_memberLicenseProvider = (IMemberLicenseProvider)MarketplaceProviderManager.Providers["memberLicenseProvider"];
return _memberLicenseProvider;
}
}
}
private OrderNoteProvider _orderNoteProvider;
public OrderNoteProvider OrderNoteProvider
{
get
{
if (_orderNoteProvider != null)
return _orderNoteProvider;
else
{
_orderNoteProvider = (OrderNoteProvider)MarketplaceProviderManager.Providers["OrderNoteProvider"];
return _orderNoteProvider;
}
}
}
private NodeListingProvider _listingProvider;
public NodeListingProvider ListingProvider
{
get
{
if (_listingProvider != null)
return _listingProvider;
else
{
_listingProvider = (NodeListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
return _listingProvider;
}
}
}
private ITaxProvider _taxProvider;
public ITaxProvider TaxProvider
{
get
{
if (_taxProvider != null)
return _taxProvider;
else
{
_taxProvider = (ITaxProvider)MarketplaceProviderManager.Providers["TaxProvider"];
return _taxProvider;
}
}
}
#endregion
private BasePage prnt;
protected void Page_Load(object sender, EventArgs e)
{
prnt = (BasePage)this.Page;
HtmlHead head = (HtmlHead)base.Page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", GlobalSettings.Path + "/dashboard/deli/css/deliadmin.css?v2");
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
}
protected void RowCommand(object s, CommandEventArgs e)
{
switch (e.CommandName)
{
case "ValidateVat":
var but = (Button)s;
var lit = (Literal)but.Parent.FindControl("IsValid");
if (!string.IsNullOrEmpty((string)e.CommandArgument))
{
var valid = TaxProvider.SimpleVatValidate((string)e.CommandArgument);
lit.Text = valid ? "<span style=\"background:green;padding:3px;text-tranform:uppercase;color:#fff;\">VALID</span>" :
"<span style=\"background:red;padding:3px;text-tranform:uppercase;color:#fff;\">INVALID</span>";
}
else
{
lit.Text = "<span style=\"background:red;padding:3px;text-tranform:uppercase;color:#fff;\">INVALID</span>";
}
break;
default:
break;
}
}
protected void GetOrdersButton_Click(object sender, EventArgs e)
{
OrderView.ItemDataBound += new RepeaterItemEventHandler(OrderList_ItemDataBound);
DateTime endDate = DateTime.Now.AddDays(int.Parse(DateRangeDdl.SelectedValue) * (-1));
var Orders = OrderProvider.GetOrdersByDate(endDate).Select(x => new
{
Id = x.Id,
EconomicId = x.OrderId,
Status = x.Status,
CssClass = x.Status == OrderStatus.Confirmed ? "confirmed" : "notConfirmed",
Company = x.CompanyName,
VatID = x.Member.CompanyVATNumber,
InvoiceEmail = x.CompanyInvoiceEmail,
Country = GetCountryFromCode(x.CompanyCountry),
Date = x.CreateDate,
TaxTotal = x.TaxTotal.ToString("c", new CultureInfo("fr-FR", false)),
SubTotal = x.SubTotal.ToString("c", new CultureInfo("fr-FR", false)),
Total = x.Total.ToString("c", new CultureInfo("fr-FR", false)),
Currency = x.Currency,
Refunded = x.IsRefunded,
RefundDate = x.RefundDate
}).OrderByDescending(x => x.Id);
OrderView.DataSource = Orders;
OrderView.DataBind();
}
protected void OrderList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem ri = (RepeaterItem)e.Item;
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
{
Repeater itemRepeater = ((RepeaterItem)e.Item).FindControl("orderItemRepeater") as Repeater;
int rowId = Int32.Parse((((RepeaterItem)e.Item).FindControl("rowId") as HiddenField).Value);
var orderItems = ItemProvider.GetOrderItems(rowId).Select(x => new
{
Quantity = x.Quantity,
Package = ListingProvider.GetListing(x.ListingItemId, true).Name,
Vendor = new Member(ListingProvider.GetListing(x.ListingItemId, true).VendorId).Text,
LicenseTypeName = LicenseProvider.GetLicense(x.LicenseId).LicenseType.ToString(),
Value = x.NetPrice.ToString("c", new CultureInfo("fr-FR", false)),
});
itemRepeater.DataSource = orderItems;
itemRepeater.DataBind();
}
}
private string GetCountryFromCode(string code){
string country = "";
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
RegionInfo ri = new RegionInfo(ci.LCID);
if(ri.TwoLetterISORegionName.ToLowerInvariant() == code.ToLowerInvariant()){
country = ri.EnglishName;
break;
}
}
return country;
}
}
}
@@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Admin {
public partial class OrderReview {
/// <summary>
/// DateRangeDdl control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList DateRangeDdl;
/// <summary>
/// GetOrdersButton control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button GetOrdersButton;
/// <summary>
/// OrderView control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater OrderView;
}
}
@@ -0,0 +1,39 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ProcessRefund.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Admin.ProcessRefund" %>
<h2>Process Refund</h2>
<p>
Order Id: <asp:TextBox ID="OrderId" runat="server"></asp:TextBox>
&nbsp;<asp:Button ID="GetOrderButton" runat="server" Text="Lookup Order"
onclick="GetOrderButton_Click" />
</p>
<h4>Order Review</h4>
<p>
<strong><asp:Literal ID="OrderReviewDisplay" runat="server"></asp:Literal></strong>
</p>
<h4>Select an Order item to Refund (also revokes the member license)</h4>
<p>
<asp:RadioButtonList ID="OrderItems" runat="server">
</asp:RadioButtonList>
</p>
<h4>Order Notes</h4>
<p>
<asp:Repeater ID="OrderNotesRepeater" runat="server">
<ItemTemplate>
<%# Eval("OrderNote") %> - <%# Eval("OrderNoteDate").ToString() %>
<br />
</ItemTemplate>
</asp:Repeater>
</p>
<p>
<asp:Button ID="ProcessRefundButton" runat="server" Text="Process Refund"
onclick="ProcessRefundButton_Click" />
&nbsp;<asp:Literal ID="RefundConfirmation" runat="server"></asp:Literal>
</p>
<p>
<b>Note</b>:&nbsp; This only processes the Deli refund, please also process via
PayPal and E-conomic Credit Note</p>
<p>
&nbsp;</p>
@@ -0,0 +1,196 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Providers.Orders;
using Marketplace.Interfaces;
using Marketplace.Providers.Listing;
using Marketplace.Providers;
using Marketplace.Providers.OrderNote;
using System.Data;
using Marketplace.Providers.OrderItem;
namespace Marketplace.usercontrols.Deli.Admin
{
public partial class ProcessRefund : System.Web.UI.UserControl
{
#region properties
private UmbracoEcommerceOrderProvider _orderProvider;
public UmbracoEcommerceOrderProvider OrderProvider
{
get
{
if (_orderProvider != null)
return _orderProvider;
else
{
_orderProvider = (UmbracoEcommerceOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
return _orderProvider;
}
}
}
public IOrder Order;
private IDeliOrderItemProvider _itemProvider;
public IDeliOrderItemProvider ItemProvider
{
get
{
if (_itemProvider != null)
return _itemProvider;
else
{
_itemProvider = (IDeliOrderItemProvider)MarketplaceProviderManager.Providers["OrderItemProvider"];
return _itemProvider;
}
}
}
private ILicenseProvider _licenseProvider;
public ILicenseProvider LicenseProvider
{
get
{
if (_licenseProvider != null)
return _licenseProvider;
else
{
_licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
return _licenseProvider;
}
}
}
private IMemberLicenseProvider _memberLicenseProvider;
public IMemberLicenseProvider MemberLicenseProvider
{
get
{
if (_memberLicenseProvider != null)
return _memberLicenseProvider;
else
{
_memberLicenseProvider = (IMemberLicenseProvider)MarketplaceProviderManager.Providers["memberLicenseProvider"];
return _memberLicenseProvider;
}
}
}
private OrderNoteProvider _orderNoteProvider;
public OrderNoteProvider OrderNoteProvider
{
get
{
if (_orderNoteProvider != null)
return _orderNoteProvider;
else
{
_orderNoteProvider = (OrderNoteProvider)MarketplaceProviderManager.Providers["OrderNoteProvider"];
return _orderNoteProvider;
}
}
}
private NodeListingProvider _listingProvider;
public NodeListingProvider ListingProvider
{
get
{
if (_listingProvider != null)
return _listingProvider;
else
{
_listingProvider = (NodeListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
return _listingProvider;
}
}
}
#endregion
protected void GetOrderButton_Click(object sender, EventArgs e)
{
int oId = 0;
if (int.TryParse(OrderId.Text, out oId))
oId = int.Parse(OrderId.Text);
if (oId > 0)
{
Order = OrderProvider.GetOrder(oId);
OrderReviewDisplay.Text = Order.Member.Name + ", Paid on: " + Order.PaymentDate.ToString() + " Amount Paid: " + Order.ProcessedTotal.ToString() + " in Currency: " + Order.Currency.ToString() + ", Order Status: " + Order.Status.ToString();
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("item");
foreach (IOrderItem i in Order.Items)
{
string itemText = ListingProvider.GetListing(i.ListingItemId).Name +
", License Type: " + LicenseProvider.GetLicense(i.LicenseId).LicenseType.ToString() +
", Quantity: " + i.Quantity.ToString() +
", Net Price: " + i.NetPrice.ToString() + " EUR, each";
dt.Rows.Add(i.Id, itemText);
}
OrderItems.DataSource = dt;
OrderItems.DataTextField = "item";
OrderItems.DataValueField = "id";
OrderItems.DataBind();
// order notes
IEnumerable<IOrderNote> Notes = OrderNoteProvider.GetOrderNotes(oId);
OrderNotesRepeater.DataSource = Notes;
OrderNotesRepeater.DataBind();
}
else
OrderReviewDisplay.Text = "No order with the Id: " + oId.ToString();
}
protected void ProcessRefundButton_Click(object sender, EventArgs e)
{
int oId = 0;
if (int.TryParse(OrderId.Text, out oId))
oId = int.Parse(OrderId.Text);
if (oId > 0)
Order = OrderProvider.GetOrder(oId);
// mark order as refunded
Order.Status = OrderStatus.Refunded;
Order.IsRefunded = true;
Order.RefundDate = DateTime.Now.ToUniversalTime();
OrderProvider.SaveOrUpdate(Order);
// mark item as refunded
IOrderItem item = ItemProvider.GetOrderItem(int.Parse(OrderItems.SelectedValue));
item.IsRefunded = true;
item.RefundDate = DateTime.Now.ToUniversalTime();
ItemProvider.SaveOrUpdate(item);
// revoke member license
var licenses = MemberLicenseProvider.GetLicensesByOrderItemId(item.Id);
foreach (var license in licenses)
{
license.IsActive = false;
MemberLicenseProvider.SaveOrUpdate(license);
}
// add order note
OrderNoteProvider.AddOrderNote((int)Order.Id, (int)Order.Member.Id, "Refund processed for item: " + item.Id.ToString());
RefundConfirmation.Text = "Refund processed and license revoked.";
}
}
}
@@ -0,0 +1,78 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Admin {
public partial class ProcessRefund {
/// <summary>
/// OrderId control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox OrderId;
/// <summary>
/// GetOrderButton control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button GetOrderButton;
/// <summary>
/// OrderReviewDisplay control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal OrderReviewDisplay;
/// <summary>
/// OrderItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.RadioButtonList OrderItems;
/// <summary>
/// OrderNotesRepeater control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater OrderNotesRepeater;
/// <summary>
/// ProcessRefundButton control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button ProcessRefundButton;
/// <summary>
/// RefundConfirmation control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal RefundConfirmation;
}
}
@@ -0,0 +1,54 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VendorPayout.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Admin.VendorPayout" %>
<h2>Vendor Payout</h2>
<asp:Button ID="GetPayoutButton" runat="server" Text="Get Payout Details"
onclick="GetPayoutButton_Click" />
<asp:PlaceHolder ID="PayoutPlaceholder" runat="server" Visible="false">
<h3>Period ending <asp:literal ID="EndDate" runat="server" /></h3>
<p>
<asp:Repeater ID="PayoutReport" runat="server">
<HeaderTemplate>
<table class="dataTable">
<thead>
<tr>
<th>Vendor Name</th>
<th>Economid Id</th>
<th>Vendor Ref</th>
<th>Net Payout</th>
<th>Payout Date</th>
<tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tbody>
<tr>
<td>
<asp:Literal ID="VendorName" runat="server" />
</td>
<td>
<asp:Literal ID="EconomicId" runat="server" />
</td>
<td>
<%#Eval("VendorRef").ToString() %>
</td>
<td>
<asp:Literal ID="NetPayout" runat="server" />
</td>
<td>
<%#Eval("PayoutDate").ToString()%>
</td>
</tr>
</tbody>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</p>
<asp:Button ID="MarkAsPaid" runat="server" Text="Mark as Paid" OnClick="MarkAsPaidButton_Click" Visible="false" />
</asp:PlaceHolder>
@@ -0,0 +1,209 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using Marketplace.Providers.Orders;
using Marketplace.Interfaces;
using Marketplace.Providers.Listing;
using Marketplace.Providers;
using Marketplace.Providers.OrderNote;
using Marketplace.Providers.OrderItem;
using Marketplace.Providers.Vendor;
using Marketplace.Providers.Payout;
using umbraco.cms.businesslogic.member;
namespace Marketplace.usercontrols.Deli.Admin
{
public partial class VendorPayout : System.Web.UI.UserControl
{
#region properties
public IEnumerable<IOrderItem> PayoutList;
public IEnumerable<IPayout> Payouts;
private UmbracoEcommerceOrderProvider _orderProvider;
public UmbracoEcommerceOrderProvider OrderProvider
{
get
{
if (_orderProvider != null)
return _orderProvider;
else
{
_orderProvider = (UmbracoEcommerceOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
return _orderProvider;
}
}
}
private IDeliOrderItemProvider _itemProvider;
public IDeliOrderItemProvider ItemProvider
{
get
{
if (_itemProvider != null)
return _itemProvider;
else
{
_itemProvider = (IDeliOrderItemProvider)MarketplaceProviderManager.Providers["OrderItemProvider"];
return _itemProvider;
}
}
}
private ILicenseProvider _licenseProvider;
public ILicenseProvider LicenseProvider
{
get
{
if (_licenseProvider != null)
return _licenseProvider;
else
{
_licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
return _licenseProvider;
}
}
}
private IMemberLicenseProvider _memberLicenseProvider;
public IMemberLicenseProvider MemberLicenseProvider
{
get
{
if (_memberLicenseProvider != null)
return _memberLicenseProvider;
else
{
_memberLicenseProvider = (IMemberLicenseProvider)MarketplaceProviderManager.Providers["memberLicenseProvider"];
return _memberLicenseProvider;
}
}
}
private OrderNoteProvider _orderNoteProvider;
public OrderNoteProvider OrderNoteProvider
{
get
{
if (_orderNoteProvider != null)
return _orderNoteProvider;
else
{
_orderNoteProvider = (OrderNoteProvider)MarketplaceProviderManager.Providers["OrderNoteProvider"];
return _orderNoteProvider;
}
}
}
private NodeListingProvider _listingProvider;
public NodeListingProvider ListingProvider
{
get
{
if (_listingProvider != null)
return _listingProvider;
else
{
_listingProvider = (NodeListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
return _listingProvider;
}
}
}
private MemberVendorProvider _vendorProvider;
public MemberVendorProvider VendorProvider
{
get
{
if (_vendorProvider != null)
return _vendorProvider;
else
{
_vendorProvider = (MemberVendorProvider)MarketplaceProviderManager.Providers["VendorProvider"];
return _vendorProvider;
}
}
}
private PayoutProvider _payoutProvider;
public PayoutProvider PayoutProvider
{
get
{
if (_payoutProvider != null)
return _payoutProvider;
else
{
_payoutProvider = (PayoutProvider)MarketplaceProviderManager.Providers["PayoutProvider"];
return _payoutProvider;
}
}
}
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
PayoutReport.ItemDataBound += new RepeaterItemEventHandler(PayoutReport_ItemDataBound);
}
void PayoutReport_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// The data for this item in the repeatercontrol
dynamic item = e.Item.DataItem as dynamic;
if (e.Item.ItemType.ToString() != "Header" && e.Item.ItemType.ToString() != "Footer")
{
Literal VendorName = (Literal)e.Item.FindControl("VendorName");
Literal EconomicId = (Literal)e.Item.FindControl("EconomicId");
Literal NetPayout = (Literal)e.Item.FindControl("NetPayout");
double payoutAmount = 0;
VendorName.Text = VendorProvider.GetVendorById(item.VendorId).VendorCompanyName;
EconomicId.Text = VendorProvider.GetVendorById(item.VendorId).EconomicId.ToString();
foreach (IOrderItem i in item.OrderItems)
{
payoutAmount += (i.NetPrice * .75);
}
NetPayout.Text = payoutAmount.ToString();
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GetPayoutButton_Click(object sender, EventArgs e)
{
// get last day of previous month
var last = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1);
Payouts = PayoutProvider.GetPayouts(null, true);
PayoutReport.DataSource = Payouts;
PayoutReport.DataBind();
EndDate.Text = last.ToLongDateString();
// show details
PayoutPlaceholder.Visible = true;
}
protected void MarkAsPaidButton_Click(object sender, EventArgs e)
{
//PayoutProvider.MarkItemsPaid(int.Parse(PayoutId.Text));
}
}
}
@@ -0,0 +1,60 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Admin {
public partial class VendorPayout {
/// <summary>
/// GetPayoutButton control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button GetPayoutButton;
/// <summary>
/// PayoutPlaceholder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder PayoutPlaceholder;
/// <summary>
/// EndDate control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal EndDate;
/// <summary>
/// PayoutReport control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater PayoutReport;
/// <summary>
/// MarkAsPaid control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button MarkAsPaid;
}
}
@@ -0,0 +1,121 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VendorPayoutReport.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Admin.VendorPayoutReport" %>
<%@ Import Namespace="Marketplace.Interfaces" %>
<h2>Payout Report</h2>
<p>The following list shows all payouts and their status</p>
<asp:Button runat="server" text="Load Pending Report" OnClick="LoadReport" />
<asp:Button runat="server" text="Load Processed Report" OnClick="LoadProcessedReport" />
<asp:Repeater runat="server" ID="PayoutHistoryList" OnItemCommand="processPayoutRow">
<HeaderTemplate>
<table class="dataTable">
<thead>
<tr>
<th>Vendor Name</th>
<th>Economid Id</th>
<th>Vendor Ref</th>
<th>Date</th>
<th>Status</th>
<th class="right">Value</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="rowId" runat="server" Value='<%# Eval("Id") %>' />
<span class="expand" id="showHide_<%# Eval("Id") %>">[+]</span>&nbsp;
<%# ((IVendor)Eval("Vendor")).Member.Name%>
</td>
<td>
<%# ((IVendor)Eval("Vendor")).EconomicId%>
</td>
<td>
<%# Eval("Reference")%>
</td>
<td>
<%# Eval("PayoutDate")%>
</td>
<td>
<%# Eval("Status")%>
</td>
<td class="right">
<%# Eval("PayoutAmount")%>
</td>
</tr>
<tr class="detailsRow" id="details_<%# Eval("Id") %>">
<td colspan="6" class="borderTop">
<h3>Payout details</h3>
<p><strong>Company Name:</strong> <%# ((IVendor)Eval("Vendor")).VendorCompanyName %></p>
<p><strong>Billing Email:</strong> <%# ((IVendor)Eval("Vendor")).BillingContactEmail %></p>
<p><strong>VAT:</strong> <%# ((IVendor)Eval("Vendor")).VATNumber%></p>
<p><strong>Tax ID:</strong> <%# ((IVendor)Eval("Vendor")).TaxId%></p>
<p><strong>Paypal:</strong> <%# ((IVendor)Eval("Vendor")).PayPalAccount%></p>
<p><strong>IBAN:</strong> <%# ((IVendor)Eval("Vendor")).IBAN%></p>
<p><strong>SWIFT:</strong> <%# ((IVendor)Eval("Vendor")).SWIFT%></p>
<p><strong>BSB:</strong> <%# ((IVendor)Eval("Vendor")).BSB%></p>
<p><strong>Account Number:</strong> <%# ((IVendor)Eval("Vendor")).AccountNumber %></p>
<asp:Repeater runat="server" ID="payoutItemRepeater">
<HeaderTemplate>
<table class="dataTable">
<thead>
<tr>
<th>Package</th>
<th>License</th>
<th>Purchaser</th>
<th>Country</th>
<th>VAT #</th>
<th>Order Date</th>
<th class="right">Payout Value*</th>
</tr>
</thead>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Package")%></td>
<td><%# Eval("LicenseTypeName")%></td>
<td><a href="mailto:<%# ((IMember)Eval("Member")).Email %>"><%# ((IMember)Eval("Member")).Name%></a></td>
<td><%# ((IMember)Eval("Member")).CompanyCountry%></td>
<td><%# ((IMember)Eval("Member")).CompanyVATNumber%></td>
<td><%# Eval("OrderDate")%></td>
<td class="right"><%# Eval("PayoutAmount")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:PlaceHolder runat="server" Visible='<%# Eval("Status") != "Processed" %>'>
<div style="border:1px solid #ccc;background:#eee;padding:1em;">
<h3>Process this Payment Request</h3>
<p>Once you have processed this payment request please click the following button.</p>
<asp:Button runat="server" ID="processPayment" Text="Process Payment" CommandArgument='<%# Eval("Id") %>' CommandName="Payout" OnClientClick="return confirm('Are you sure you want to process this payment?')" />
</div>
</asp:PlaceHolder>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<script type="text/javascript">
$(document).ready(function () {
$(".detailsRow").hide();
$(".expand").click(function () {
var id = $(this).attr("id").split("_")[1];
if ($("#details_" + id).is(":visible")) {
$("#details_" + id).hide();
$(this).text("[+]");
} else {
$("#details_" + id).show();
$(this).text("[-]");
}
});
});
</script>
@@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Interfaces;
using Marketplace.Providers;
using System.Configuration;
using umbraco;
using System.Web.UI.HtmlControls;
using umbraco.BasePages;
namespace Marketplace.usercontrols.Deli.Admin
{
public partial class VendorPayoutReport : System.Web.UI.UserControl
{
private IDeliOrderItemProvider _orderItemProvider;
private IOrderProvider _orderProvider;
private IMemberProvider _memberProvider;
private IVendorProvider _vendorProvider;
private IListingProvider _listingProvider;
private ILicenseProvider _licenseProvider;
private IPayoutProvider _payoutProvider;
private BasePage prnt;
protected void Page_Load(object sender, EventArgs e)
{
prnt = (BasePage)this.Page;
HtmlHead head = (HtmlHead)base.Page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", GlobalSettings.Path + "/dashboard/deli/css/deliadmin.css?v2");
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
}
protected void LoadReport(object sender, EventArgs e)
{
BindListing(true);
}
protected void LoadProcessedReport(object sender, EventArgs e)
{
BindListing(false);
}
private void BindListing(bool pending)
{
_memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
_vendorProvider = (IVendorProvider)MarketplaceProviderManager.Providers["VendorProvider"];
_listingProvider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
_orderProvider = (IOrderProvider)MarketplaceProviderManager.Providers["OrderProvider"];
_orderItemProvider = (IDeliOrderItemProvider)MarketplaceProviderManager.Providers["OrderItemProvider"];
_licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
_payoutProvider = (IPayoutProvider)MarketplaceProviderManager.Providers["PayoutProvider"];
PayoutHistoryList.ItemDataBound += new RepeaterItemEventHandler(PayoutHistoryList_ItemDataBound);
var payouts = _payoutProvider.GetPayouts(null, true, pending).OrderByDescending(x => x.PayoutDate).Select(x => new
{
Id = x.Id,
Vendor = _vendorProvider.GetVendorById(x.VendorId),
PayoutDate = String.Format("{0:D}",x.PayoutDate),
Reference = x.VendorRef,
PayoutAmount = GetPayoutValue(x.OrderItems),
Status = (x.Processed)?"Processed":"Pending"
});
PayoutHistoryList.DataSource = payouts;
PayoutHistoryList.DataBind();
}
protected void PayoutHistoryList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem ri = (RepeaterItem)e.Item;
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
{
Repeater itemRepeater = ((RepeaterItem)e.Item).FindControl("payoutItemRepeater") as Repeater;
int rowId = Int32.Parse((((RepeaterItem)e.Item).FindControl("rowId") as HiddenField).Value);
var payout = _payoutProvider.GetPayout(rowId);
// bind the table to any order that has not been paid out and does not have a payout id
var items = payout.OrderItems
.Select(x => new
{
Id = x.Id,
Package = _listingProvider.GetListing(x.ListingItemId, true).Name,
LicenseTypeName = _licenseProvider.GetLicense(x.LicenseId).LicenseType.ToString(),
Member = _orderProvider.GetOrder(x.OrderId).Member,
PayoutAmount = x.PayoutAmount,
OrderDate = string.Format("{0:D}", x.CreateDate)
});
itemRepeater.DataSource = items;
itemRepeater.DataBind();
}
}
protected void processPayoutRow(Object sender, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "Payout":
var payoutId = Int32.Parse(e.CommandArgument.ToString());
_payoutProvider = (IPayoutProvider)MarketplaceProviderManager.Providers["PayoutProvider"];
_payoutProvider.MarkItemsPaid(payoutId);
break;
default:
break;
}
BindListing(true);
}
private double GetPayoutValue(IEnumerable<IOrderItem> items)
{
double val = 0.00;
foreach (var i in items)
{
val += i.PayoutAmount;
}
return val;
}
}
}
@@ -0,0 +1,24 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Admin {
public partial class VendorPayoutReport {
/// <summary>
/// PayoutHistoryList control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater PayoutHistoryList;
}
}
@@ -0,0 +1,72 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Cart.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Cart.Cart" %>
<asp:PlaceHolder runat="server" ID="CartHolder">
<table class="dataTable">
<thead>
<tr>
<th>Product</th>
<th>License Type</th>
<th class="money">Price</th>
<th class="count">Quantity</th>
<th></th>
<th class="money">Sub-Total</th>
</tr>
</thead>
<asp:repeater runat="server" ID="CartItems">
<ItemTemplate>
<tbody>
<tr>
<td><%#Eval("Name") %></td>
<td><%#Eval("License") %></td>
<td class="money"><asp:Literal id="price" runat="server" /></td>
<td class="count">
<asp:HiddenField id="LicenseId" value='<%# Eval("Id") %>' runat="server" />
<asp:textbox ID="Quantity" columns="3" text='<%# Eval("Quantity") %>' runat="server" OnTextChanged="QuantityOnChange" onkeypress="return isNumberKey(event)" />
</td>
<td><asp:button ToolTip="Remove item" id="Del" text="remove" runat="server" /></td>
<td class="money"><asp:Literal id="subtotal" runat="server" /></td>
</tr>
</tbody>
</ItemTemplate>
</asp:repeater>
<tr class="totals">
<td colspan="3"></td>
<td class="count"><asp:Button runat="server" Text="update" /></td>
<td class="count">Total:</td>
<td class="money"><asp:literal runat="server" ID="CartTotal" /></td>
</tr>
</table>
<script type="text/javascript">
//stop things other than numbers being entered into quantity.
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
<fieldset>
<div class="buttons">
<asp:linkbutton runat="server" Text="&lt; Continue Shopping" ID="CartNavPrevious" OnClick="CartNavPrevious_Click" />&nbsp;
<asp:Button runat="server" Text="Next &gt;" ID="CartNavNext" class="submitButton" OnClick="CartNavNext_Click" />
</div>
</fieldset>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="CartEmptyHolder" Visible="false">
<div>
<p>Your cart is currently empty</p>
</div>
</asp:PlaceHolder>
@@ -0,0 +1,186 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Providers.Accounting;
using Marketplace.Helpers;
namespace Marketplace.usercontrols.Deli.Cart
{
public partial class Cart : System.Web.UI.UserControl
{
#region properties
private ICartProvider _cartProvider;
public ICartProvider CartProvider
{
get
{
if (_cartProvider != null)
{
return _cartProvider;
}
else
{
_cartProvider = (ICartProvider)MarketplaceProviderManager.Providers["CartProvider"];
return _cartProvider;
}
}
}
private ICart _cart;
public ICart ShoppingCart
{
get
{
if (_cart != null)
{
return _cart;
}
else
{
_cart = CartProvider.GetCurrentCart();
return _cart;
}
}
set
{
_cart = value;
}
}
private Currency _currency = Currency.EUR;
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
CartItems.ItemDataBound += new RepeaterItemEventHandler(CartItems_ItemDataBound);
CartItems.ItemCommand +=new RepeaterCommandEventHandler(CartItems_ItemCommand);
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
{
LoadCart();
}
else
{
CartHolder.Visible = false;
CartEmptyHolder.Visible = true;
}
}
private void LoadCart()
{
var licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
// use cart currency
_currency = ShoppingCart.Currency;
//to enusre the cart rounds and adds properly we convert to localised price when its doing the subtotal step.
var cartItems = CartProvider.GetCartItems().Select(x => new {
Id = x.LicenseId,
Name = x.ListingItem.Name,
License = licenseProvider.GetLicense(x.LicenseId).LicenseType.LicenseTypeAsString(),
Price = _cartProvider.GetLocalizedPrice(x.NetPrice),
Quantity = x.Quantity,
SubTotal = x.Quantity * _cartProvider.GetLocalizedPrice(x.NetPrice)
});
CartItems.DataSource = cartItems;
CartItems.DataBind();
CartTotal.Text = DeliCurrency.NiceMoney((decimal)_cartProvider.GetLocalizedCartGrossValue(), DeliCurrency.FromSymbol(_currency.ToString()));
}
protected void QuantityOnChange(object sender, EventArgs e)
{
string licenseId = ((HiddenField)((TextBox)sender).Parent.FindControl("LicenseId")).Value;
TextBox qtyBox = (TextBox)sender;
int qty = 0;
if (!string.IsNullOrEmpty(qtyBox.Text))
{
qty = int.Parse(qtyBox.Text);
}
var ci = CartProvider.GetCartItems().Where(x => x.LicenseId == Int32.Parse(licenseId)).FirstOrDefault();
if (ci != null)
{
CartProvider.ChangeItemQuantity(ci, qty);
}
}
void CartItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// The data for this item in the repeatercontrol
dynamic item = e.Item.DataItem as dynamic;
if (e.Item.ItemType.ToString() != "Header" && e.Item.ItemType.ToString() != "Footer")
{
Button btnDel = (Button)e.Item.FindControl("Del");
// Assign ids of items to the buttons
btnDel.CommandName = "delItem";
btnDel.CommandArgument = item.Id.ToString();
// set the price and subtotal amounts
Literal price = (Literal)e.Item.FindControl("price");
Literal subtotal = (Literal)e.Item.FindControl("subtotal");
price.Text = DeliCurrency.NiceMoney((decimal)item.Price, DeliCurrency.FromSymbol(_currency.ToString()));
//no need to localize the price for the subtotal as this is done during the datasource creation
subtotal.Text = DeliCurrency.NiceMoney((decimal)item.SubTotal,DeliCurrency.FromSymbol(_currency.ToString()));
}
}
void CartItems_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string licenseId = e.CommandArgument.ToString();
switch (e.CommandName)
{
case "delItem":
{
var ci = CartProvider.GetCartItems().Where(x => x.LicenseId == Int32.Parse((string)e.CommandArgument)).FirstOrDefault();
if (ci != null)
{
CartProvider.RemoveItem(ci);
}
break;
}
}
}
protected void CartNavNext_Click(object s, EventArgs e)
{
Response.Redirect("cart-details");
}
protected void CartNavPrevious_Click(object s, EventArgs e)
{
if (!string.IsNullOrEmpty(Request["returnUrl"]))
Response.Redirect(Request["returnUrl"]);
else
Response.Redirect("/projects");
}
}
}
+69
View File
@@ -0,0 +1,69 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Cart {
public partial class Cart {
/// <summary>
/// CartHolder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder CartHolder;
/// <summary>
/// CartItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater CartItems;
/// <summary>
/// CartTotal control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal CartTotal;
/// <summary>
/// CartNavPrevious control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton CartNavPrevious;
/// <summary>
/// CartNavNext control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button CartNavNext;
/// <summary>
/// CartEmptyHolder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder CartEmptyHolder;
}
}
@@ -0,0 +1,136 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CartDetails.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Cart.CartDetails" %>
<%@ Register Assembly="Marketplace" TagPrefix="Deli" Namespace="Marketplace.Controls" %>
<%@ Register Src="~/usercontrols/our.umbraco.org/Login_novalidationscript.ascx" TagName="Login" TagPrefix="our" %>
<asp:PlaceHolder ID="NotLoggedIn" runat="server" Visible="false">
<div class="deliNotification">
<h2>Continue without logging in</h2>
<p>You can complete your purchase now, we'll create an account for you and email you a temporary password when you're done.</p>
<h2>Or if you are an existing member <a href="#" class="show_hide">login here</a></h2>
<p style="margin-bottom:0;">Your profile probably already has most of the information we need to process your purchase. Login to retrieve your details.</p>
<div id="detailsLoginForm">
<div id="detailLogin"><our:Login runat="server" ID="MemberLogin" ErrorMessage="Either your email or password is incorrect" /></div>
<p>Can't remember your password? You can retrieve a new one by <a href="<%= RetrievePasswordPage %>" title="Forgot Password">clicking here</a></p>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#detailsLoginForm").hide();
$(".show_hide").show();
$('.show_hide').click(function () {
$("#detailsLoginForm").slideToggle();
});
});
</script>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="DetailsForm">
<script type="text/javascript" src="/scripts/jsvat-custom-deli.js"></script>
<div id="cartDetailsForm">
<fieldset>
<legend>User Information</legend>
<p>
<asp:Label runat="server" AssociatedControlID="UserName" CssClass="inputLabel">Name</asp:Label>
<asp:textbox runat="server" ID="UserName" CssClass="required title" ToolTip="Please enter your name" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="UserEmail" CssClass="inputLabel">Email</asp:Label>
<asp:TextBox runat="server" ID="UserEmail" CssClass="required title email" ToolTip="Please enter your email address" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="UserConfirmEmail" CssClass="inputLabel">Confirm Email</asp:Label>
<asp:TextBox runat="server" ID="UserConfirmEmail" CssClass="CompareFields title" ToolTip="Please confirm your email address" />
</p>
</fieldset>
<fieldset>
<legend>Company Details and Invoicing</legend>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyName" CssClass="inputLabel">Company Name</asp:Label>
<asp:TextBox runat="server" ID="CompanyName" CssClass="title" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyAddress" CssClass="inputLabel">Address</asp:Label>
<asp:TextBox runat="server" TextMode="MultiLine" ID="CompanyAddress" CssClass="title" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyCountry" CssClass="inputLabel">Country</asp:Label>
<Deli:CountryDropDownList runat="server" ID="CompanyCountry" CssClass="title required" ToolTip="Please select your country" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyPhone" CssClass="inputLabel" Visible="false">Phone</asp:Label>
<asp:TextBox runat="server" ID="CompanyPhone" CssClass="title" Visible="false" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyVat" CssClass="inputLabel">VAT-Number</asp:Label>
<asp:TextBox runat="server" ID="CompanyVat" CssClass="ValidateVatFormat title" ToolTip="VAT format is invalid. Include country code and no spaces AA1111111111" />
</p>
<p>
<asp:Label runat="server" AssociatedControlID="CompanyInvoiceEmail" CssClass="inputLabel">Invoice Email</asp:Label>
<asp:TextBox runat="server" ID="CompanyInvoiceEmail" CssClass="title email required" />
</p>
<div class="buttons">
<asp:linkbutton runat="server" Text="&lt; Previous" ID="CartNavPrevious" OnClick="CartNavPrevious_Click" />&nbsp;
<asp:Button runat="server" Text="Next &gt;" ID="CartNavNext" OnClick="CartNavNext_Click" class="submitButton"/>
</div>
</fieldset>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#detailLogin input[type=submit]").addClass("cancel");
jQuery.validator.addMethod("CompareFields", function (value, element) { return value == $("#<%= UserEmail.ClientID %>").val(); }, $("#<%= UserEmail.ClientID %>").attr("tooltip"));
jQuery.validator.addMethod("ValidateVatFormat", function (value, element) { if (value.length > 0) { return checkVATNumber(value); } else { return true; } }, $("#<%= CompanyVat.ClientID %>").attr("tooltip"));
$("form").validate({
invalidHandler: function (f, v) {
var errors = v.numberOfInvalids();
if (errors.length > 0) {
validator.focusInvalid();
}
}
});
$(".submitButton").click(function (evt) {
// Validate the form and retain the result.
var isValid = $("form").valid();
// If the form didn't validate, prevent the
// form submission.
if (!isValid)
evt.preventDefault();
});
});
</script>
</asp:PlaceHolder>
<asp:Literal ID="DeliMessage" runat="server"></asp:Literal>
@@ -0,0 +1,300 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using umbraco.cms.businesslogic.member;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Providers.Orders;
using Marketplace.Providers.Members;
using Marketplace.Providers.OrderItem;
using System.Web.Security;
using NotificationsCore;
using NotificationsWeb;
using umbraco.NodeFactory;
namespace Marketplace.usercontrols.Deli.Cart
{
public partial class CartDetails : System.Web.UI.UserControl
{
private ICartProvider _cartProvider;
public ICartProvider CartProvider
{
get
{
if (_cartProvider != null)
{
return _cartProvider;
}
else
{
_cartProvider = (ICartProvider)MarketplaceProviderManager.Providers["CartProvider"];
return _cartProvider;
}
}
}
private ICart _cart;
public ICart ShoppingCart
{
get
{
if (_cart != null)
{
return _cart;
}
else
{
_cart = CartProvider.GetCurrentCart();
return _cart;
}
}
set
{
_cart = value;
}
}
private IMemberProvider _memberProvider;
public IMemberProvider MemberProvider
{
get
{
if (_memberProvider != null)
return _memberProvider;
else
{
_memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
return _memberProvider;
}
}
}
private IMember _member;
public IMember Member
{
get
{
if (_member != null)
return _member;
else
{
_member = MemberProvider.GetCurrentMember();
return _member;
}
}
}
public int RetrievePassword { get; set; }
public int SignUp { get; set; }
protected string RetrievePasswordPage { get; set; }
protected string SignUpPage { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if(ShoppingCart.CartItems.Count > 0)
{
if (!IsPostBack && Member != null)
{
//check to see if member was created during cart process and move them to review step automatically
if (!string.IsNullOrEmpty(Request["ss"]))
{
//now that the user is authenticated set their cart currency based on their details
SetCurrency();
CartProvider.InvalidateVat();
// send to order review
Response.Redirect("cart-review");
}
//otherwise show the form
SetupDetails();
}
}
else
{
Response.Redirect("cart");
}
//check if the user is authenticated, otherwise present login option or continue as 'guest'
// can we just use... if(Member == null) for this
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
RetrievePasswordPage = umbraco.library.NiceUrl(RetrievePassword);
SignUpPage = umbraco.library.NiceUrl(SignUp);
MemberLogin.NextPage = Node.GetCurrent().Id;
NotLoggedIn.Visible = true;
}
}
protected void SetupDetails()
{
UserName.Text = Member.Name;
UserEmail.Text = Member.Email;
CompanyVat.Text = Member.CompanyVATNumber;
CompanyName.Text = Member.Company;
CompanyCountry.SelectedValue = Member.CompanyCountry;
CompanyAddress.Text = Member.CompanyAddress;
CompanyInvoiceEmail.Text = Member.CompanyInvoiceEmail;
}
protected void CreateMember()
{
string Group = "standard";
if (UserEmail.Text != null)
{
IMember m = MemberProvider.GetMemberByEmail(UserEmail.Text);
if (m == null)
{
m = new DeliMember();
m.Name = UserName.Text;
m.Email = UserEmail.Text;
// set using generate password
m.Password = Membership.GeneratePassword(8, 0);
//billing info
m.CompanyAddress = CompanyAddress.Text;
m.CompanyCountry = CompanyCountry.SelectedValue;
if (CompanyInvoiceEmail.Text.Length != 0)
m.CompanyInvoiceEmail = CompanyInvoiceEmail.Text;
else
m.CompanyInvoiceEmail = UserEmail.Text;
m.CompanyVATNumber = CompanyVat.Text;
//Standard values
m.ReputationTotal = 20;
m.ReputationCurrent = 20;
m.ForumPosts = 0;
m.IsVerified = true;
m.TermsOfServiceAcceptanceDate = DateTime.Now.ToUniversalTime();
m.CreatedByDeli = true;
//add the group
m.Groups = new string[] { Group };
MemberProvider.SaveOrUpdate(m);
// send welcome mail - have to do it here so we have access to the password
InstantNotification not = new InstantNotification();
not.Invoke(Config.ConfigurationFile, Config.AssemblyDir, "DeliNewMember", m, m.Password);
// redirect to force Auth cookie to establish
Response.Redirect(Request.RawUrl + "?ss=" + Guid.NewGuid().ToString());
}
}
}
private void SetCurrency()
{
if (Member.CompanyCountry.ToLower() != null)
{
switch (Member.CompanyCountry)
{
case "dk":
CartProvider.SetCurrency(Currency.DKK);
break;
case "us":
case "ca":
CartProvider.SetCurrency(Currency.USD);
break;
default:
CartProvider.SetCurrency(Currency.EUR);
break;
}
}
}
protected void CartNavNext_Click(object s, EventArgs e)
{
try
{
// create new member if not logged in
if (Member == null)
{
CreateMember();
}
// persist details to member
Member.Company = CompanyName.Text;
Member.CompanyVATNumber = CompanyVat.Text;
Member.CompanyCountry = CompanyCountry.SelectedValue;
Member.CompanyAddress = CompanyAddress.Text;
if (CompanyInvoiceEmail.Text.Length != 0)
Member.CompanyInvoiceEmail = CompanyInvoiceEmail.Text;
else
Member.CompanyInvoiceEmail = UserEmail.Text;
/*
* if the member changes the billing country during the order we need to update their profile billing details and change
* currency where applicable
*/
SetCurrency();
MemberProvider.SaveOrUpdate(Member);
//invalidate the Vat Number to force recheck;
CartProvider.InvalidateVat();
// send to order review
Response.Redirect("cart-review");
}
catch (Exception ex)
{
// put up error and apologize
DeliMessage.Text = "Oops! Sorry, little help here:<br />" + ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace + "<br />";
}
}
protected void CartNavPrevious_Click(object s, EventArgs e)
{
try
{
// persist details to member
Member.Company = CompanyName.Text;
Member.CompanyVATNumber = CompanyVat.Text;
//invalidate the Vat Number to force recheck;
CartProvider.InvalidateVat();
Member.CompanyCountry = CompanyCountry.SelectedValue;
Member.CompanyAddress = CompanyAddress.Text;
if (CompanyInvoiceEmail.Text.Length != 0)
Member.CompanyInvoiceEmail = CompanyInvoiceEmail.Text;
else
Member.CompanyInvoiceEmail = UserEmail.Text;
MemberProvider.SaveOrUpdate(Member);
// send to order review
Response.Redirect("cart");
}
catch (Exception ex)
{
// put up error and apologize
DeliMessage.Text = "Oops! Sorry, little help here:<br />" + ex.Message + "<br />" + ex.InnerException + "<br />" + ex.StackTrace + "<br />";
}
}
}
}
@@ -0,0 +1,150 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Cart {
public partial class CartDetails {
/// <summary>
/// NotLoggedIn control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder NotLoggedIn;
/// <summary>
/// MemberLogin control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Marketplace.usercontrols.ourUmbraco.Login_novalidationscript MemberLogin;
/// <summary>
/// DetailsForm control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder DetailsForm;
/// <summary>
/// UserName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox UserName;
/// <summary>
/// UserEmail control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox UserEmail;
/// <summary>
/// UserConfirmEmail control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox UserConfirmEmail;
/// <summary>
/// CompanyName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox CompanyName;
/// <summary>
/// CompanyAddress control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox CompanyAddress;
/// <summary>
/// CompanyCountry control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Marketplace.Controls.CountryDropDownList CompanyCountry;
/// <summary>
/// CompanyPhone control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox CompanyPhone;
/// <summary>
/// CompanyVat control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox CompanyVat;
/// <summary>
/// CompanyInvoiceEmail control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox CompanyInvoiceEmail;
/// <summary>
/// CartNavPrevious control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton CartNavPrevious;
/// <summary>
/// CartNavNext control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button CartNavNext;
/// <summary>
/// DeliMessage control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal DeliMessage;
}
}
@@ -0,0 +1,10 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CartProgress.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Cart.CartProgress" %>
<div class="cartProgress">
<ul>
<asp:repeater runat="server" ID="ProgressIndicator">
<ItemTemplate>
<li class="<%#Eval("StepClass") %>"><%# Eval("StepName") %></li>
</ItemTemplate>
</asp:repeater>
</ul>
</div>
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Marketplace.usercontrols.Deli.Cart
{
public partial class CartProgress : System.Web.UI.UserControl
{
public int CurrentStepIndex { get; set; }
private string[] stepArray;
protected void Page_Load(object sender, EventArgs e)
{
stepArray = new string[] { "Your Cart", "Your Details", "Review Your Order", "Checkout", "Order Complete" };
var steps = stepArray.Select(x => new
{
StepName = x,
StepClass = GetStepClass(x)
});
ProgressIndicator.DataSource = steps;
ProgressIndicator.DataBind();
}
private object GetStepClass(string x)
{
var index = stepArray.ToList().IndexOf(x);
var cssClass = "";
if (index == 0)
{
cssClass += "first ";
}
if (index < CurrentStepIndex)
{
cssClass += "complete";
}
if (index == CurrentStepIndex)
{
cssClass += "current";
}
return cssClass;
}
}
}
@@ -0,0 +1,24 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Cart {
public partial class CartProgress {
/// <summary>
/// ProgressIndicator control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater ProgressIndicator;
}
}
@@ -0,0 +1,86 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CartReview.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Cart.CartReview" %>
<asp:PlaceHolder runat="server" ID="CartHolder">
<table class="dataTable">
<thead>
<tr>
<th>Product</th>
<th>License Type</th>
<th class="money">Price</th>
<th class="count">Quantity</th>
<th class="money">SubTotal</th>
</tr>
</thead>
<asp:repeater runat="server" ID="CartItems">
<ItemTemplate>
<tbody>
<tr>
<td><%#Eval("Name") %></td>
<td><%#Eval("License") %></td>
<td class="money"><asp:Literal ID="price" runat="server" /></td>
<td class="count">
<asp:label ID="Quantity" text='<%# Eval("Quantity") %>' runat="server" />
</td>
<td class="money"><asp:Literal ID="subtotal" runat="server" /></td>
</tr>
</tbody>
</ItemTemplate>
</asp:repeater>
<asp:PlaceHolder runat="server" ID="TaxRow">
<tr>
<td colspan="3"></td>
<td class="money">Tax:</td>
<td class="money"><asp:literal runat="server" ID="TaxTotal" /></td>
</tr>
</asp:PlaceHolder>
<tr class="totals">
<td colspan="3"></td>
<td class="money">Total:</td>
<td class="money"><asp:literal runat="server" ID="CartTotal" /></td>
</tr>
</table>
<asp:PlaceHolder ID="VatBadMessage" runat="server" Visible="false">
<div class="deliNotification">
<h2>VAT Code not specified or is invalid or cannot be validated at this time</h2>
<p>From what you have told us you live in a country that is subject to European VAT, but from what we can tell you either have not specifed a VAT code or the one you have given us is invalid.</p>
<p>If you dont have a VAT code or you can't put your hands on it right now, dont worry you can still continue with your purchase but we had to add VAT to your order.</p>
<p>If you would like to go back and give us a VAT code <asp:linkbutton runat="server" Text="click here" OnClick="CartNavPrevious_Click" />.</p>
</div>
</asp:PlaceHolder>
<fieldset>
<legend>Your Information</legend>
<p><strong><asp:Literal ID="OrderMembername" runat="server"></asp:Literal></strong></p>
<p><strong>Company:</strong></p>
<p><asp:Literal ID="OrderCompany" runat="server"></asp:Literal></p>
<asp:PlaceHolder runat="server" ID="VATDetails">
<p><strong>VAT Details:</strong></p>
<p><asp:Literal ID="OrderVATCode" runat="server"></asp:Literal></p>
</asp:PlaceHolder>
<p><strong>Invoice Email:</strong></p>
<p><asp:Literal ID="OrderInvoiceEmail" runat="server"></asp:Literal></p>
<div class="buttons">
<asp:linkbutton runat="server" Text="&lt; Make Changes" ID="CartNavPrevious" OnClick="CartNavPrevious_Click" />&nbsp;
<asp:Button runat="server" Text="Checkout &gt;" ID="CartNavNext" OnClick="CartNavNext_Click" />
</div>
</fieldset>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="CartEmptyHolder" Visible="false">
<div>
<p>Your cart is currently empty</p>
</div>
</asp:PlaceHolder>
@@ -0,0 +1,241 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Helpers;
using Marketplace.Providers.Orders;
using Marketplace.Providers.Accounting;
using Marketplace.Controls;
using System.Globalization;
namespace Marketplace.usercontrols.Deli.Cart
{
public partial class CartReview : System.Web.UI.UserControl
{
private ICartProvider _cartProvider;
public ICartProvider CartProvider
{
get
{
if (_cartProvider != null)
{
return _cartProvider;
}
else
{
_cartProvider = (ICartProvider)MarketplaceProviderManager.Providers["CartProvider"];
return _cartProvider;
}
}
}
private ICart _cart;
public ICart ShoppingCart
{
get
{
if (_cart != null)
{
return _cart;
}
else
{
_cart = CartProvider.GetCurrentCart();
return _cart;
}
}
set
{
_cart = value;
}
}
private IMemberProvider _memberProvider;
public IMemberProvider MemberProvider
{
get
{
if (_memberProvider != null)
return _memberProvider;
else
{
_memberProvider = (IMemberProvider)MarketplaceProviderManager.Providers["MemberProvider"];
return _memberProvider;
}
}
}
private IMember _member;
public IMember Member
{
get
{
if (_member != null)
return _member;
else
{
_member = MemberProvider.GetCurrentMember();
return _member;
}
}
}
public Currency _currency = Currency.EUR;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
CartItems.ItemDataBound += new RepeaterItemEventHandler(CartItems_ItemDataBound);
}
void CartItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// The data for this item in the repeatercontrol
dynamic item = e.Item.DataItem as dynamic;
if (e.Item.ItemType.ToString() != "Header" && e.Item.ItemType.ToString() != "Footer")
{
// set the price and subtotal amounts
Literal price = (Literal)e.Item.FindControl("price");
Literal subtotal = (Literal)e.Item.FindControl("subtotal");
price.Text = DeliCurrency.NiceMoney((decimal)item.Price, DeliCurrency.FromSymbol(_currency.ToString()));
subtotal.Text = DeliCurrency.NiceMoney((decimal)item.SubTotal, DeliCurrency.FromSymbol(_currency.ToString()));
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
{
LoadOrderInfo();
LoadCart();
}
else
{
Response.Redirect("cart");
}
}
private void LoadOrderInfo()
{
if (Member != null)
{
var countryName = GetCountry(Member.CompanyCountry);
OrderMembername.Text = Member.Name;
OrderCompany.Text = Member.Company + "<br />" + Member.CompanyAddress + "<br />" + countryName;
OrderInvoiceEmail.Text = Member.CompanyInvoiceEmail;
OrderVATCode.Text = String.IsNullOrEmpty(Member.CompanyVATNumber) ? "NONE SPECIFIED" : Member.CompanyVATNumber;
}
else
{
Response.Redirect("cart");
}
}
private string GetCountry(string code)
{
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
RegionInfo ri = new RegionInfo(ci.LCID);
if (ri.TwoLetterISORegionName.ToLowerInvariant() == code)
return ri.EnglishName;
}
return "";
}
private void LoadCart()
{
var licenseProvider = (ILicenseProvider)MarketplaceProviderManager.Providers["LicenseProvider"];
_currency = ShoppingCart.Currency;
var cartItems = CartProvider.GetCartItems().Select(x => new
{
Id = x.LicenseId,
Name = x.ListingItem.Name,
License = licenseProvider.GetLicense(x.LicenseId).LicenseType.LicenseTypeAsString(),
Price = GetLocalisedPrice(x.NetPrice),
Quantity = x.Quantity,
SubTotal = x.Quantity * GetLocalisedPrice(x.NetPrice)
});
CartItems.DataSource = cartItems;
CartItems.DataBind();
// tax check and calcs
double cartValue = 0;
double taxValue = 0;
var vatValid = CartProvider.IsVatValid();
var vatCountry = CartProvider.IsVatCountry();
taxValue = CartProvider.GetLocalizedTaxTotal();
cartValue = CartProvider.GetLocalizedCartNetValue();
CartTotal.Text = DeliCurrency.NiceMoney((decimal)cartValue, DeliCurrency.FromSymbol(_currency.ToString()));
// check to see if there is a tax value and if its a valid vat country
// it will always enter this if it is denmark.
if (taxValue > 0 && vatCountry)
{
//it will validate the vat for denmark also to display it.
if (!vatValid && Member.CompanyCountry.ToLower() != "dk")
{
VatBadMessage.Visible = true;
OrderVATCode.Text += " (NOT VALID)";
}
TaxRow.Visible = true;
TaxTotal.Text = DeliCurrency.NiceMoney((decimal)taxValue, DeliCurrency.FromSymbol(_currency.ToString()));
}
else
{
if (!vatCountry)
{
VATDetails.Visible = false;
}
TaxRow.Visible = false;
}
}
private double GetLocalisedPrice(double p)
{
// do converison if not EUR
if (_currency != Currency.EUR)
return (double)DeliCurrency.ConvertFromEuro((decimal)p, DeliCurrency.FromSymbol(_currency.ToString()));
else
return p;
}
protected void CartNavNext_Click(object s, EventArgs e)
{
Response.Redirect("cart-payment");
}
protected void CartNavPrevious_Click(object s, EventArgs e)
{
Response.Redirect("cart");
}
}
}
@@ -0,0 +1,141 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Cart {
public partial class CartReview {
/// <summary>
/// CartHolder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder CartHolder;
/// <summary>
/// CartItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater CartItems;
/// <summary>
/// TaxRow control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder TaxRow;
/// <summary>
/// TaxTotal control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal TaxTotal;
/// <summary>
/// CartTotal control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal CartTotal;
/// <summary>
/// VatBadMessage control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder VatBadMessage;
/// <summary>
/// OrderMembername control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal OrderMembername;
/// <summary>
/// OrderCompany control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal OrderCompany;
/// <summary>
/// VATDetails control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder VATDetails;
/// <summary>
/// OrderVATCode control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal OrderVATCode;
/// <summary>
/// OrderInvoiceEmail control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal OrderInvoiceEmail;
/// <summary>
/// CartNavPrevious control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton CartNavPrevious;
/// <summary>
/// CartNavNext control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Button CartNavNext;
/// <summary>
/// CartEmptyHolder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder CartEmptyHolder;
}
}
@@ -0,0 +1,4 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MicroCart.ascx.cs" Inherits="Marketplace.usercontrols.Deli.Cart.MicroCart" %>
<asp:placeholder runat="server" ID="microCartHolder">
<span class="microCart"><a href="/Deli/Cart">View Cart (<asp:Literal runat="server" ID="NumItems" />)</a>&nbsp;<asp:Literal runat="server" ID="CartTotal" /></span>&nbsp;&nbsp;
</asp:placeholder>
@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Marketplace.Interfaces;
using Marketplace.Providers;
using Marketplace.Providers.Accounting;
namespace Marketplace.usercontrols.Deli.Cart
{
public partial class MicroCart : System.Web.UI.UserControl
{
private int _numberOfItems = 0;
private double _cartTotal = 0;
private ICart cart;
private Currency _currency = Currency.EUR;
protected void Page_PreRender(object sender, EventArgs e)
{
var cartProvider = (ICartProvider)MarketplaceProviderManager.Providers["CartProvider"];
cart = cartProvider.GetCurrentCart();
_currency = cart.Currency;
_numberOfItems = cartProvider.GetCartItemCount();
this.Visible = true;
_cartTotal = cartProvider.GetLocalizedCartGrossValue();
NumItems.Text = (_numberOfItems == 1) ? _numberOfItems + " Item" : _numberOfItems + " Items";
CartTotal.Text = DeliCurrency.NiceMoney((decimal)_cartTotal, DeliCurrency.FromSymbol(_currency.ToString()));
if (_numberOfItems > 0)
{
microCartHolder.Visible = true;
}
else
{
microCartHolder.Visible = false;
}
}
}
}
@@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Marketplace.usercontrols.Deli.Cart {
public partial class MicroCart {
/// <summary>
/// microCartHolder control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder microCartHolder;
/// <summary>
/// NumItems control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal NumItems;
/// <summary>
/// CartTotal control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Literal CartTotal;
}
}

Some files were not shown because too many files have changed in this diff Show More