* bg.gif:
* asc.gif:
* desc.gif:
* style.css: moved to App_Themes
* style.css:
* bg.gif:
* asc.gif:
* bg.png:
* rect.png:
* asc.png:
* desc.gif:
* jquery-ui.css:
* mdd_styles.css:
* croix.png:
* desc.png:
* style.css:
* jquery-ui.min.css:
* mdd_gripper.png:
* mdd_toolbar.png:
* jquery.timepicker.css:
* mdd_ajax_loader.gif:
* mdd_modal_background.png: moved to /App_Themes
* NpgsqlBlogProvider.cs: * Remove post by id
* Manage collections of entries on a couple (user,title), not a single
post
* NpgsqlCircleProvider.cs: Fixes the "Match" method.
* IDbModule.cs:
* Edit.aspx:
* Estimates.aspx:
* WorkFlowManager.cs:
* NpgsqlContentProvider.cs: refactoring
* NpgsqlMRPProviders.csproj: new NpgsqlUserName provider
* NpgsqlRoleProvider.cs: simpler init method
* NpgsqlUserNameProvider.cs: impements a UserNameProvider
* MyClass.cs: refactoring from Yavsc.Model
* BlogsController.cs: access control simplified
* FrontOfficeController.cs: Pdf generation made public ni case of
formatting exception
* mdd_styles.css: Theme -> App_Themes
* style.css: yet another style impact
* AccountController.cs: Fixes the user name modification
* BlogsController.cs: * Fixes the removal process
* On a title and user name, we get collection of posts, not only one.
* Implements an Access on circle
* FrontOfficeController.cs: * implements a new Get method.
* ensure a membership existence before delivering an estimate.
* GoogleController.cs: Fixes the user name modification on a Google
account
* ErrorHtmlFormatter.cs: nice error message in html (using Markdown
helper)
* FormatterException.cs: formatter exception exposes error and
standard output of the process
* TexToPdfFormatter.cs: * generates temporary files in the folder
returned by Path.GetTempPath()
* throws FormatterException
* Global.asax.cs: new route map:
Blogs/{action}/{user}/{title}
Blog/{user}/{title}
B/{id}
{controller}/{action}/{id}
* App.master: * refactoring: Theme moved to App_Themes
* a link to the logged user's blog
*
* NoLogin.master: refactoring: Theme moved to App_Themes
* Circles.aspx: refactoring : circles now are given as select items
* Login.aspx: fixes the html presentation
* Register.aspx: Fixes a Typo
* Index.aspx: Implements a blog index, due to M&C changes with this
commit
* RemovePost.aspx: links to the new route to the "RemovePost" action,
giving it a post id
* RemoveTitle.aspx: fixes a not yet linked page to remove a post
collection under a given title
* EventPub.aspx: code refactoring
* Writting.ascx: cleans the code
* Web.config: fills the config with new names in the space
* Web.config: configures the new NpgsqlUserNameProvider
* Web.csproj: refactoring and others
* BlogEntryCollection.cs: implement the BlogEntryCollection
* BlogManager.cs: the manager helps to filter on access
* BlogProvider.cs: The title is not unique anymore, and one can modify
it, post a lot under it, drop all posts under it.
A Post is deleted by id.
* UUBlogEntryCollection.cs: implements a collection of post under a
given user name.
* UUTBlogEntryCollection.cs: implements a collection of post under a
given couple (user name, title).
* ListItem.cs: ListItem is declared obsolete in this model, helpers
can build MVC SelectListItem on data returned by the manager.
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: autogenerated from xml
* LocalizedText.resx:
* LocalizedText.fr.resx: new labels
* ChangeUserNameProvider.cs: xml doc
* Profile.cs: the UserName property is read only, and comes from
authentication, to change it, we set a Name and validate it agains
the "Profile" method
* UserManager.cs: simpler code a init time
* IContentProvider.cs: implements the new IDataProvider interface
* IDataProvider.cs: defines the new IDataProvider interface
* YavscModel.csproj: includes new classes
* UserPosts.aspx: adds a link to remove a post
* UserPost.aspx: now uses the new BlogEntryCollection object
9 years ago
|
|
|
<%@ Page Title="Bill_edition" Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEntry>" MasterPageFile="~/Models/App.master" %>
|
|
|
|
<%@ Register Assembly="Yavsc.WebControls" TagPrefix="yavsc" Namespace="Yavsc.WebControls" %>
|
|
|
|
<asp:Content ContentPlaceHolderID="head" ID="HeadContent1" runat="server">
|
|
|
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
|
|
|
|
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
|
|
|
|
<script src="http://rangy.googlecode.com/svn/trunk/currentrelease/rangy-core.js"></script>
|
* bg.gif:
* asc.gif:
* desc.gif:
* style.css: moved to App_Themes
* style.css:
* bg.gif:
* asc.gif:
* bg.png:
* rect.png:
* asc.png:
* desc.gif:
* jquery-ui.css:
* mdd_styles.css:
* croix.png:
* desc.png:
* style.css:
* jquery-ui.min.css:
* mdd_gripper.png:
* mdd_toolbar.png:
* jquery.timepicker.css:
* mdd_ajax_loader.gif:
* mdd_modal_background.png: moved to /App_Themes
* NpgsqlBlogProvider.cs: * Remove post by id
* Manage collections of entries on a couple (user,title), not a single
post
* NpgsqlCircleProvider.cs: Fixes the "Match" method.
* IDbModule.cs:
* Edit.aspx:
* Estimates.aspx:
* WorkFlowManager.cs:
* NpgsqlContentProvider.cs: refactoring
* NpgsqlMRPProviders.csproj: new NpgsqlUserName provider
* NpgsqlRoleProvider.cs: simpler init method
* NpgsqlUserNameProvider.cs: impements a UserNameProvider
* MyClass.cs: refactoring from Yavsc.Model
* BlogsController.cs: access control simplified
* FrontOfficeController.cs: Pdf generation made public ni case of
formatting exception
* mdd_styles.css: Theme -> App_Themes
* style.css: yet another style impact
* AccountController.cs: Fixes the user name modification
* BlogsController.cs: * Fixes the removal process
* On a title and user name, we get collection of posts, not only one.
* Implements an Access on circle
* FrontOfficeController.cs: * implements a new Get method.
* ensure a membership existence before delivering an estimate.
* GoogleController.cs: Fixes the user name modification on a Google
account
* ErrorHtmlFormatter.cs: nice error message in html (using Markdown
helper)
* FormatterException.cs: formatter exception exposes error and
standard output of the process
* TexToPdfFormatter.cs: * generates temporary files in the folder
returned by Path.GetTempPath()
* throws FormatterException
* Global.asax.cs: new route map:
Blogs/{action}/{user}/{title}
Blog/{user}/{title}
B/{id}
{controller}/{action}/{id}
* App.master: * refactoring: Theme moved to App_Themes
* a link to the logged user's blog
*
* NoLogin.master: refactoring: Theme moved to App_Themes
* Circles.aspx: refactoring : circles now are given as select items
* Login.aspx: fixes the html presentation
* Register.aspx: Fixes a Typo
* Index.aspx: Implements a blog index, due to M&C changes with this
commit
* RemovePost.aspx: links to the new route to the "RemovePost" action,
giving it a post id
* RemoveTitle.aspx: fixes a not yet linked page to remove a post
collection under a given title
* EventPub.aspx: code refactoring
* Writting.ascx: cleans the code
* Web.config: fills the config with new names in the space
* Web.config: configures the new NpgsqlUserNameProvider
* Web.csproj: refactoring and others
* BlogEntryCollection.cs: implement the BlogEntryCollection
* BlogManager.cs: the manager helps to filter on access
* BlogProvider.cs: The title is not unique anymore, and one can modify
it, post a lot under it, drop all posts under it.
A Post is deleted by id.
* UUBlogEntryCollection.cs: implements a collection of post under a
given user name.
* UUTBlogEntryCollection.cs: implements a collection of post under a
given couple (user name, title).
* ListItem.cs: ListItem is declared obsolete in this model, helpers
can build MVC SelectListItem on data returned by the manager.
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs: autogenerated from xml
* LocalizedText.resx:
* LocalizedText.fr.resx: new labels
* ChangeUserNameProvider.cs: xml doc
* Profile.cs: the UserName property is read only, and comes from
authentication, to change it, we set a Name and validate it agains
the "Profile" method
* UserManager.cs: simpler code a init time
* IContentProvider.cs: implements the new IDataProvider interface
* IDataProvider.cs: defines the new IDataProvider interface
* YavscModel.csproj: includes new classes
* UserPosts.aspx: adds a link to remove a post
* UserPost.aspx: now uses the new BlogEntryCollection object
9 years ago
|
|
|
<link rel="stylesheet" href="<%=Url.Content("~/Scripts/mdd_styles.css")%>">
|
|
|
|
<script type="text/javascript" src="<%=Url.Content("~/Scripts/MarkdownDeepLib.min.js")%>"></script>
|
|
|
|
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/jquery-ui.css")%>" />
|
|
|
|
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/font-awesome.css")%>" />
|
|
|
|
<script type="text/javascript" src="<%=Url.Content("~/Scripts/hallo.js")%>"></script>
|
|
|
|
<script type="text/javascript" src="<%=Url.Content("~/Scripts/to-markdown.js")%>"></script>
|
|
|
|
<script type="text/javascript" src="<%=Url.Content("~/Scripts/showdown.js")%>"></script>
|
|
|
|
</asp:Content>
|
|
|
|
|
|
|
|
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
|
|
|
<h1><div id="vtitle" for="Title" class="post title editable"><%=Html.Markdown(Model.Title)%></div></h1>
|
|
|
|
<div id="vcontent" for="Content" class="post content editable">
|
|
|
|
<%=Html.Markdown(Model.Content,"/bfiles/"+Model.Id+"/")%>
|
|
|
|
</div>
|
|
|
|
<% using(Html.BeginForm("ValidateEdit","Blogs")) { %>
|
|
|
|
<%= Html.LabelFor(model => model.Title) %> <%= Html.ValidationMessage("Title") %> : <br>
|
|
|
|
<input name="Title" id="Title">
|
|
|
|
<br>
|
|
|
|
<%= Html.LabelFor(model => model.Content) %>
|
|
|
|
<%= Html.ValidationMessage("Content") %>: <br>
|
|
|
|
<textarea id="Content" name="Content"><%=Html.Markdown(Model.Content)%></textarea><br>
|
|
|
|
<%=Html.Hidden("Author")%>
|
|
|
|
<%=Html.Hidden("Id")%>
|
|
|
|
<input type="submit">
|
|
|
|
<% } %>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
jQuery('#vtitle').hallo({
|
|
|
|
plugins: {
|
|
|
|
'halloformat': {},
|
|
|
|
'halloreundo': {}
|
|
|
|
},
|
|
|
|
toolbar: 'halloToolbarFixed'
|
|
|
|
});
|
|
|
|
jQuery('#vcontent').hallo({
|
|
|
|
plugins: {
|
|
|
|
'halloformat': {},
|
|
|
|
'halloheadings': {},
|
|
|
|
'hallolists': {},
|
|
|
|
'halloimage': {},
|
|
|
|
'halloreundo': {}
|
|
|
|
},
|
|
|
|
toolbar: 'halloToolbarFixed'
|
|
|
|
});
|
|
|
|
|
|
|
|
var markdownize = function(content) {
|
|
|
|
var html = content.split("\n").map($.trim).filter(function(line) {
|
|
|
|
return line != "";
|
|
|
|
}).join("\n");
|
|
|
|
return toMarkdown(html);
|
|
|
|
};
|
|
|
|
var converter = new showdown.Converter(),
|
|
|
|
htmlize = function(content) {
|
|
|
|
return converter.makeHtml(content);
|
|
|
|
};
|
|
|
|
|
|
|
|
// Method that converts the HTML contents to Markdown
|
|
|
|
var showSource = function(id,content) {
|
|
|
|
var markdown = markdownize(content);
|
|
|
|
if (jQuery('#'+id).get(0).value == markdown) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
jQuery('#'+id).get(0).value = markdown;
|
|
|
|
};
|
|
|
|
var updateHtml = function(id,content) {
|
|
|
|
var jView = jQuery('div[for="'+id+'"]');
|
|
|
|
if (markdownize(jView.html()) == content) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
var html = htmlize(content);
|
|
|
|
jView.html(html);
|
|
|
|
};
|
|
|
|
// Update Markdown every time content is modified
|
|
|
|
jQuery('.editable').bind('hallomodified', function(event, data) {
|
|
|
|
showSource(this.attributes["for"].value, data.content);
|
|
|
|
});
|
|
|
|
jQuery('#Content').bind('keyup', function() {
|
|
|
|
updateHtml(this.id, this.value);
|
|
|
|
});
|
|
|
|
jQuery('#Title').bind('keyup', function() {
|
|
|
|
updateHtml(this.id, this.value);
|
|
|
|
});
|
|
|
|
showSource("Title",jQuery('#vtitle').html());
|
|
|
|
showSource("Content",jQuery('#vcontent').html());
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
function submitFilesTo(method)
|
|
|
|
{
|
|
|
|
var data = new FormData($('#uploads').get()[0]);
|
|
|
|
Yavsc.message('Submitting via '+method);
|
|
|
|
$.ajax({
|
|
|
|
url: apiBaseUrl+'/Blogs/'+method+'/'+$('#Id').val(),
|
|
|
|
type: "POST",
|
|
|
|
data: data,
|
|
|
|
processData: false,
|
|
|
|
contentType: false,
|
|
|
|
success: function(data) {
|
|
|
|
$('#Content').val(data+"\n"+$('#Content').val());
|
|
|
|
Yavsc.message(false);
|
|
|
|
},
|
|
|
|
error: Yavsc.onAjaxError,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function submitImport()
|
|
|
|
{
|
|
|
|
submitFilesTo('Import');
|
|
|
|
}
|
|
|
|
|
|
|
|
function submitFile()
|
|
|
|
{
|
|
|
|
submitFilesTo('PostFile');
|
|
|
|
}
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<form id="uploads" method="post" enctype="multipart/form-data">
|
|
|
|
<input type="file" name="attached" id="postedfile" multiple>
|
|
|
|
<input type="button" value="attacher les ficher" onclick="submitFile()">
|
|
|
|
<input type="button" value="importer les documents" onclick="submitImport()">
|
|
|
|
</form>
|
|
|
|
</asp:Content>
|
|
|
|
|
|
|
|
<asp:Content ContentPlaceHolderID="MASContent" ID="MASContentContent" runat="server">
|
|
|
|
<div class="metablog">
|
|
|
|
(Id:<a href="/Blogs/UserPost/<%= Model.Id %>">
|
|
|
|
<i><%= Model.Id %></i></a>, <%= Model.Posted.ToString("yyyy/MM/dd") %> - <%= Model.Modified.ToString("yyyy/MM/dd") %> <%= Model.Visible? "":", Invisible!" %>) <%= Html.ActionLink("Supprimer","RemovePost", new { user=Model.Author, title = Model.Title }, new { @class="actionlink" } ) %>
|
|
|
|
</div>
|
|
|
|
</asp:Content>
|
|
|
|
|
|
|
|
<asp:Content ContentPlaceHolderID="MASContent" ID="masContent1" runat="server">
|
|
|
|
|
|
|
|
</asp:Content>
|