Пример #1
0
 private static String getViewsAndReplies( PhotoPost post )
 {
     String result = "";
     if (post.Hits > 0) result += lang.get( "view" ) + ":" + post.Hits;
     if (post.Replies > 0) result += " " + lang.get( "re" ) + ":" + post.Replies;
     return result;
 }
Пример #2
0
        public static Post Fill( PhotoPost post, MvcContext ctx, IPhotoPostService postService ) {

            Post p = new Post();

            p.Title = post.Title;
            p.Description = post.Description;
            p.ImgUrl = post.ImgUrl;
            p.ImgMediumUrl = post.ImgMediumUrl;
            p.ImgThumbUrl = post.ImgThumbUrl;

            p.Creator = post.Creator.Name;
            p.Created = post.Created.ToShortDateString();
            p.Hits = post.Hits;

            if (post.PhotoAlbum == null || post.PhotoAlbum.Id == 0) 
                p.Album = alang( ctx, "defaultAlbum" );
            else
                p.Album = post.PhotoAlbum.Name;


            p.AlbumLink = ctx.link.To( new PhotoController().Album, post.PhotoAlbum.Id );

            String lnk = string.Format( " | <a href=\"{0}\">{1}《{2}》</a> ", p.AlbumLink, alang( ctx, "returnAlbum" ), p.Album );

            p.AlbumAndLink = lnk;// strUtil.HasText( p.Album ) ? lnk : "";

            p.Tags = post.Tag.List.Count > 0 ? "tag:" + post.Tag.HtmlString : "";
            String prevnext = getPreNextHtml( ctx, post, postService );
            String nextLink = getNextLink( ctx, post, postService );

            p.PrevNext = prevnext;
            p.NextLink = nextLink;

            return p;
        }
Пример #3
0
        private void addPhotoPosts( MvcContext ctx )
        {
            User creator = ctx.viewer.obj as User;
            PhotoApp app = getPhotoAppByUser( creator );
            PhotoAlbum album = createUserAlbum( creator, app );

            List<PhotoSysCategory> cats = PhotoSysCategory.findAll();

            for (int i = 0; i < 20; i++) {

                PhotoPost x = new PhotoPost();
                x.AppId = app.Id;
                x.DataUrl = Img.CopyToUploadPath( "/__installer/pic/pic" + i + ".jpg" );
                x.Title = Path.GetFileName( x.DataUrl );

                if (cats.Count > 0) {
                    int idxCat = getCatIndex( cats.Count, i );
                    x.SysCategoryId = cats[idxCat].Id;
                }

                x.PhotoAlbum = album;

                x.Creator = creator;
                x.CreatorUrl = creator.Url;
                x.OwnerId = creator.Id;
                x.OwnerType = creator.GetType().FullName;
                x.OwnerUrl = creator.Url;

                postService.CreatePost( x, app );

            }
        }
Пример #4
0
        public virtual Result CreatePost( Result uploadResult, String photoName, int albumId, MvcContext ctx )
        {
            String path = uploadResult.Info.ToString();
            if (strUtil.IsNullOrEmpty( photoName )) {
                photoName = Path.GetFileNameWithoutExtension( path );
            }
            photoName = strUtil.CutString( photoName, 30 );
            PhotoAlbum album = getAlbum( albumId, ctx.viewer.obj as User );

            PhotoPost photo = new PhotoPost();
            photo.AppId = album.AppId;
            photo.Creator = (User)ctx.viewer.obj;
            photo.CreatorUrl = ctx.viewer.obj.Url;
            photo.OwnerId = ctx.owner.Id;
            photo.OwnerUrl = ctx.owner.obj.Url;
            photo.OwnerType = ctx.owner.obj.GetType().FullName;
            photo.Title = photoName;
            photo.DataUrl = path;
            photo.PhotoAlbum = album;
            photo.Ip = ctx.Ip;

            Result result = db.insert( photo );
            if (result.IsValid) {
                this.updatePostCount( ctx.app.obj as PhotoApp );
            }
            return result;
        }
Пример #5
0
        public static void BindPostSingle(MvcContext ctx, IBlock block, PhotoPost x, List<long> likedIds) {

            block.Set( "x.Link", PhotoLink.ToPost( x.Id ) );
            block.Set( "x.Title", x.Title );
            block.Set( "x.Description", x.Description );

            block.Set( "x.Pic", x.ImgThumbUrl );
            block.Set( "x.PicS", x.ImgSmallUrl );
            block.Set( "x.PicM", x.ImgMediumUrl );
            block.Set( "x.PicO", x.ImgUrl );

            int width = x.SizeSX == null ? 170 : x.SizeSX.Width;
            int height = x.SizeSX == null ? 170 : x.SizeSX.Height;
            int cfgWidth = getCfgWidth();
            if (width > cfgWidth) {
                height = Convert.ToInt32( (decimal)(cfgWidth * height) / (decimal)width );
                width = cfgWidth;
            }

            block.Set( "x.WidthSx", width );
            block.Set( "x.HeightSx", height );

            block.Set( "x.Pins", x.Pins );
            block.Set( "x.Likes", x.Likes );

            String pinsLikes = "";
            if (x.Pins > 0) pinsLikes += "收集:" + x.Pins;
            if (x.Likes > 0) pinsLikes += " 喜欢:" + x.Likes;
            if (x.Replies > 0) pinsLikes += " 评论:" + x.Replies;
            block.Set( "x.PinsLikes", pinsLikes );

            if (x.PhotoAlbum != null) {
                block.Set( "x.AlbumName", x.PhotoAlbum.Name );
                block.Set( "x.AlbumLink", PhotoLink.ToAlbumOne( x.PhotoAlbum.OwnerUrl, x.PhotoAlbum.Id ) );
            }
            else {
                block.Set( "x.AlbumName", "" );
                block.Set( "x.AlbumLink", "#" );
            }

            block.Set( "x.CreatorName", x.Creator.Name );
            block.Set( "x.CreatorPic", x.Creator.PicSmall );
            block.Set( "x.CreatorLink", PhotoLink.ToUser( x.Creator ) );
            block.Set( "x.Created", cvt.ToTimeString( x.Created ) );

            block.Set( "x.RepinLink", ctx.link.To( new HomeController().Repin, x.Id ) );
            block.Set( "x.LikeLink", ctx.link.To( new HomeController().Like, x.Id ) );
            block.Set( "x.UnLikeLink", ctx.link.To( new HomeController().UnLike, x.Id ) );

            if (likedIds.Contains( x.Id )) {
                block.Set( "x.LikedCss", "wfpost-liked disabled" );
                block.Set( "x.LikeName", "已喜欢" );
            }
            else {
                block.Set( "x.LikedCss", "wfpost-like" );
                block.Set( "x.LikeName", "<i class=\"icon-heart icon-white\"></i> 喜欢" );
            }
        }
Пример #6
0
 private void bindComment( PhotoPost post ) {
     String commentUrl = t2( new wojilu.Web.Controller.Open.CommentController().List )
         + "?url=" + PhotoLink.ToPost( post.Id )
         + "&dataType=" + typeof( PhotoPost ).FullName
         + "&dataTitle=" + post.Title
         + "&dataUserId=" + post.Creator.Id
         + "&dataId=" + post.Id
         + "&appId=" + post.AppId;
     set( "commentUrl", commentUrl );
 }
Пример #7
0
        public void UnLike( User user, PhotoPost post )
        {
            PhotoLike p = this.GetOne( user.Id, post.Id );

            p.delete();

            post.Likes = PhotoLike.count( "PostId=" + post.Id );
            post.update();

            user.Likes = PhotoLike.count( "UserId=" + user.Id );
            user.update( "Likes" );
        }
Пример #8
0
        public virtual Result CreatePost( PhotoPost post, PhotoApp app )
        {
            if (strUtil.IsNullOrEmpty( post.Title )) {
                post.Title = Path.GetFileNameWithoutExtension( post.DataUrl );
            }
            post.Title = strUtil.CutString( post.Title, 30 );

            Result result = db.insert( post );
            if (result.IsValid) {
                this.updatePostCount( app );
            }
            return result;
        }
Пример #9
0
        public void Like( User user, PhotoPost post )
        {
            PhotoLike x = new PhotoLike();
            x.Post = post;
            x.User = user;

            x.insert();

            post.Likes = PhotoLike.count( "PostId=" + post.Id );
            post.update();

            user.Likes = PhotoLike.count( "UserId=" + user.Id );
            user.update( "Likes" );
        }
Пример #10
0
 public Boolean CanDeleteImg( PhotoPost post )
 {
     // 原始图片
     if (post.RootId == 0) {
         return noRepins( post ); // 是否有其他人收集
     }
     // 只是转发: 原始图片存在
     else if (isRootExits( post.RootId )) {
         return false;
     }
     // 只是转发
     else {
         return isLastRepin( post );  //看是否是最后一个转发
     }
 }
Пример #11
0
 public Boolean CanDeleteImg( PhotoPost post )
 {
     // ԭʼͼƬ
     if (post.RootId == 0) {
         return noRepins( post ); // �Ƿ����������ռ�
     }
     // ֻ��ת��: ԭʼͼƬ����
     else if (isRootExits( post.RootId )) {
         return false;
     }
     // ֻ��ת��
     else {
         return isLastRepin( post );  //���Ƿ������һ��ת��
     }
 }
Пример #12
0
        private void pickOnePost( PhotoPost post )
        {
            PhotoPostPicked pickedPost = GetByPost( post );
            if (pickedPost == null) {
                pickedPost = new PhotoPostPicked();
                pickedPost.Post = post;
                pickedPost.Status = SystemPickStatus.Picked;
                db.insert( pickedPost );
            }

            else {
                pickedPost.Status = SystemPickStatus.Picked;
                db.update( pickedPost );
            }
        }
Пример #13
0
        private static String getPreNextHtml( MvcContext ctx, PhotoPost post, IPhotoPostService postService ) {

            PhotoPost prev = postService.GetPre( post );
            PhotoPost next = postService.GetNext( post );

            String prenext;
            if (prev == null && next == null)
                prenext = "";
            else if (prev == null)
                prenext = "<a href=\"" + alink.ToAppData( next ) + "\">" + alang( ctx, "nextPhoto" ) + "</a> ";
            else if (next == null)
                prenext = "<a href=\"" + alink.ToAppData( prev ) + "\">" + alang( ctx, "prevPhoto" ) + "</a> ";
            else
                prenext = "<a href=\"" + alink.ToAppData( prev ) + "\">" + alang( ctx, "prevPhoto" ) + "</a> | <a href=\"" + alink.ToAppData( next ) + "\">" + alang( ctx, "nextPhoto" ) + "</a>";
            return prenext;
        }
		public object Deserialize(JsonValue json, JsonMapper mapper)
		{
			PhotoPost post = null;
			if ( json != null && !json.IsNull )
			{
				post = new PhotoPost();
				post.ID          = json.ContainsName("id"          ) ? json.GetValue<string>("id"       ) : String.Empty;
				post.PhotoId     = json.ContainsName("object_id"   ) ? json.GetValue<string>("object_id") : String.Empty;
				post.CreatedTime = json.ContainsName("created_time") ? JsonUtils.ToDateTime(json.GetValue<string>("created_time"), "yyyy-MM-ddTHH:mm:ss") : DateTime.MinValue;
				post.UpdatedTime = json.ContainsName("updated_time") ? JsonUtils.ToDateTime(json.GetValue<string>("updated_time"), "yyyy-MM-ddTHH:mm:ss") : DateTime.MinValue;
				
				post.From        = mapper.Deserialize<Reference>(json.GetValue("from"));
				post.Tags        = mapper.Deserialize<List<Tag>>(json.GetValue("tags"));
			}
			return post;
		}
Пример #15
0
        public static void BindPostSingle( MvcContext ctx, IBlock block, PhotoPost x, List<int> likedIds )
        {
            block.Set( "x.Link", PhotoLink.ToPost( x.Id ) );
            block.Set( "x.Title", x.Title );
            block.Set( "x.Description", x.Description );

            block.Set( "x.Pic", x.ImgThumbUrl );
            block.Set( "x.PicM", x.ImgMediumUrl );
            block.Set( "x.PicO", x.ImgUrl );

            block.Set( "x.Pins", x.Pins );
            block.Set( "x.Likes", x.Likes );

            String pinsLikes = "";
            if (x.Pins > 0) pinsLikes += "收集:" + x.Pins;
            if (x.Likes > 0) pinsLikes += " 喜欢:" + x.Likes;
            if (x.Replies > 0) pinsLikes += " 评论:" + x.Replies;
            block.Set( "x.PinsLikes", pinsLikes );

            if (x.PhotoAlbum != null) {
                block.Set( "x.AlbumName", x.PhotoAlbum.Name );
                block.Set( "x.AlbumLink", PhotoLink.ToAlbumOne( x.PhotoAlbum.OwnerUrl, x.PhotoAlbum.Id ) );
            }
            else {
                block.Set( "x.AlbumName", "" );
                block.Set( "x.AlbumLink", "#" );
            }

            block.Set( "x.CreatorName", x.Creator.Name );
            block.Set( "x.CreatorPic", x.Creator.PicSmall );
            block.Set( "x.CreatorLink", PhotoLink.ToUser( x.Creator ) );
            block.Set( "x.Created", cvt.ToTimeString( x.Created ) );

            block.Set( "x.RepinLink", ctx.link.To( new HomeController().Repin, x.Id ) );
            block.Set( "x.LikeLink", ctx.link.To( new HomeController().Like, x.Id ) );
            block.Set( "x.UnLikeLink", ctx.link.To( new HomeController().UnLike, x.Id ) );

            if (likedIds.Contains( x.Id )) {
                block.Set( "x.LikedCss", "wfpost-liked disabled" );
                block.Set( "x.LikeName", "已喜欢" );
            }
            else {
                block.Set( "x.LikedCss", "wfpost-like" );
                block.Set( "x.LikeName", "<i class=\"icon-heart icon-white\"></i> 喜欢" );
            }
        }
Пример #16
0
        private void addPhotoPosts( MvcContext ctx )
        {
            User creator = ctx.viewer.obj as User;

            for (int i = 0; i < 20; i++) {

                PhotoPost x = new PhotoPost();
                x.DataUrl = Img.CopyToUploadPath( "/__installer/pic/pic" + i + ".jpg" );
                x.Creator = creator;
                x.CreatorUrl = creator.Url;
                x.OwnerId = creator.Id;
                x.OwnerType = creator.GetType().FullName;
                x.OwnerUrl = creator.Url;

                x.Title = Path.GetFileName( x.DataUrl );

                x.insert();

            }
        }
Пример #17
0
 private bool noRepins( PhotoPost post ) {
     return PhotoPost.find( "RootId=" + post.Id ).first() == null;
 }
Пример #18
0
 public virtual void SystemUnDelete( PhotoPost post ) {
     if (post == null) return;
     post.SaveStatus = (int)SaveStatus.Normal;
     db.update( post, "SaveStatus" );
 }
Пример #19
0
 private void log( String msg, PhotoPost post )
 {
     String dataInfo = "{Id:" + post.Id + ", Title:'" + post.Title + "'}";
     logService.Add( (User)ctx.viewer.obj, msg, dataInfo, typeof( PhotoPost ).FullName, ctx.Ip );
 }
Пример #20
0
 private String getStatus( PhotoPost post )
 {
     if (pickedService.IsPicked( post )) return "picked";
     return "";
 }
Пример #21
0
        private PhotoPost savePicPrivate( HttpFile postedFile, Result result )
        {
            PhotoPost post = new PhotoPost();
            post.OwnerId = ctx.owner.Id;
            post.OwnerType = ctx.owner.obj.GetType().FullName;
            post.OwnerUrl = ctx.owner.obj.Url;

            post.Creator = (User)ctx.viewer.obj;
            post.CreatorUrl = ctx.viewer.obj.Url;
            post.DataUrl = result.Info.ToString();
            post.Title = strUtil.CutString( Path.GetFileNameWithoutExtension( postedFile.FileName ), 20 );
            post.Ip = ctx.Ip;
            post.PhotoAlbum = new PhotoAlbum();

            postService.CreatePostTemp( post );
            return post;
        }
Пример #22
0
 public virtual Boolean IsPicked( PhotoPost post )
 {
     PhotoPostPicked pickedPost = GetByPost( post );
     return (pickedPost != null);
 }
Пример #23
0
 private bool noRepins(PhotoPost post)
 {
     return(PhotoPost.find("RootId=" + post.Id).first() == null);
 }
Пример #24
0
 private void unPickOnePost( PhotoPost post )
 {
     PhotoPostPicked pickedPost = GetByPost( post );
     if (pickedPost != null) {
         db.delete( pickedPost );
     }
 }
Пример #25
0
        public static void BindPostSingleFull(MvcContext ctx, IBlock block, PhotoPost x, List<long> likedIds) {
            BindPostSingle( ctx, block, x, likedIds );

            block.Set( "x.SrcInfo", getSrcInfo( x ) );
        }
Пример #26
0
        private static String getSrcInfo( PhotoPost x ) {

            if (x.RootId == 0 || x.RootId == x.Id) return "用户上传";

            PhotoPost root = PhotoPost.findById( x.RootId );

            User creator = root.Creator;

            if (strUtil.IsNullOrEmpty( x.SrcTool )) return string.Format( "<a href=\"{0}\">原图</a> 由用户 <a href=\"{1}\">{2}</a> 上传", PhotoLink.ToPost( x.RootId ), PhotoLink.ToUser( creator ), creator.Name );

            return string.Format( "<a href=\"{0}\">{1}</a>  通过 {2} 从 <a href=\"{3}\">{4}</a> 收集", PhotoLink.ToUser( creator ), creator.Name, root.SrcTool, root.SrcName, root.SrcUrl );

        }
Пример #27
0
        private PhotoPost getFormPosted()
        {
            PhotoPost photo = new PhotoPost();

            PhotoAlbum album = categoryService.GetById( ctx.PostInt( "categoryId" ) );

            photo.PhotoAlbum = album;
            photo.Description = ctx.Post( "description" );
            photo.AppId = album.AppId;

            User user = ctx.viewer.obj as User;

            photo.Creator = user;
            photo.CreatorUrl = user.Url;
            photo.OwnerId = user.Id;
            photo.OwnerUrl = user.Url;
            photo.OwnerType = user.GetType().FullName;

            photo.Ip = ctx.Ip;

            return photo;
        }
Пример #28
0
        private void bindAlbumPosts( PhotoPost post )
        {
            IBlock block = getBlock( "cposts" );
            if (post.PhotoAlbum == null) return;

            List<PhotoPost> list = postService.GetByAlbum( post.PhotoAlbum.Id, 9 );
            foreach (PhotoPost x in list) {
                PhotoBinder.BindPostSingle( ctx, block, x, new List<int>() );
                block.Next();
            }
        }
Пример #29
0
 public PhotoPostFeed( PhotoPost apost ) {
     post = apost;
 }
Пример #30
0
        public virtual void SavePic()
        {
            HttpFile postedFile = ctx.GetFileSingle();

            Result result = Uploader.SaveImg( postedFile );
            if (result.HasErrors) {
                ctx.errors.Join( result );
                run( UploadForm );
                return;
            }

            PhotoPost post = new PhotoPost();
            post.OwnerId = ctx.owner.Id;
            post.OwnerType = ctx.owner.obj.GetType().FullName;
            post.OwnerUrl = ctx.owner.obj.Url;

            post.Creator = (User)ctx.viewer.obj;
            post.CreatorUrl = ctx.viewer.obj.Url;
            post.DataUrl = result.Info.ToString();
            post.Title = strUtil.CutString( Path.GetFileNameWithoutExtension( postedFile.FileName ), 20 );
            post.Ip = ctx.Ip;
            post.PhotoAlbum = new PhotoAlbum();

            postService.CreatePostTemp( post );

            set( "picThumbUrl", post.ImgThumbUrl );
            set( "picUrl", post.ImgUrl );
        }
Пример #31
0
 public virtual PhotoPostPicked GetByPost( PhotoPost post )
 {
     return db.find<PhotoPostPicked>( "Post.Id=" + post.Id ).first();
 }