* Adds client resourses for Markdown.js
* Implements a part of the client UI at editing Circle collections
This commit is contained in:
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
*/bin
|
||||||
|
*/obj
|
||||||
|
plugins/*/bin
|
||||||
|
plugins/*/obj
|
||||||
|
*.userprefs
|
||||||
|
packages
|
||||||
|
web/avatars
|
||||||
|
web/users
|
||||||
|
web/Web References
|
||||||
|
build
|
||||||
|
.nuget
|
||||||
|
.gitignore
|
||||||
|
|
@ -36,6 +36,28 @@ namespace WorkFlowProvider
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class NpgsqlCircleProvider : CircleProvider
|
public class NpgsqlCircleProvider : CircleProvider
|
||||||
{
|
{
|
||||||
|
#region implemented abstract members of CircleProvider
|
||||||
|
|
||||||
|
public override void RemoveMembership (long circle_id, string member)
|
||||||
|
{
|
||||||
|
using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
|
||||||
|
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
|
||||||
|
cmd.CommandText = "delete from circle_members where circle_id = :cid and username = :uname";
|
||||||
|
cmd.Parameters.AddWithValue("cid",circle_id);
|
||||||
|
cmd.Parameters.AddWithValue("uname",member);
|
||||||
|
cnx.Open ();
|
||||||
|
cmd.ExecuteNonQuery ();
|
||||||
|
cnx.Close ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void RemoveMember (string member)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException ();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="WorkFlowProvider.NpgsqlCircleProvider"/> class.
|
/// Initializes a new instance of the <see cref="WorkFlowProvider.NpgsqlCircleProvider"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -88,23 +110,6 @@ namespace WorkFlowProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove the specified user.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="id">circle Identifier.</param>
|
|
||||||
/// <param name="username">User name.</param>
|
|
||||||
public override void Remove (long id, string username)
|
|
||||||
{
|
|
||||||
using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
|
|
||||||
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
|
|
||||||
cmd.CommandText = "delete from circle_members where circle_id = :cid and username = :uname";
|
|
||||||
cmd.Parameters.AddWithValue("cid",id);
|
|
||||||
cmd.Parameters.AddWithValue("uname",username);
|
|
||||||
cnx.Open ();
|
|
||||||
cmd.ExecuteNonQuery ();
|
|
||||||
cnx.Close ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the specified id.
|
/// Get the specified id.
|
||||||
|
@ -44,7 +44,7 @@ namespace Yavsc.ApiControllers
|
|||||||
public class AuthorizationDenied : HttpRequestException {
|
public class AuthorizationDenied : HttpRequestException {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="Yavsc.ApiControllers.FrontOfficeController+AuthorizationDenied"/> class.
|
/// Initializes a new instance of the Yavsc.ApiControllers.AuthorizationDenied class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="msg">Message.</param>
|
/// <param name="msg">Message.</param>
|
||||||
public AuthorizationDenied(string msg) : base(msg)
|
public AuthorizationDenied(string msg) : base(msg)
|
||||||
|
@ -29,26 +29,6 @@ using Yavsc.Model;
|
|||||||
|
|
||||||
namespace Yavsc.ApiControllers
|
namespace Yavsc.ApiControllers
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// New circle.
|
|
||||||
/// </summary>
|
|
||||||
public class NewCircle {
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the title.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The title.</value>
|
|
||||||
public string title { get ; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the users.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The users.</value>
|
|
||||||
public string [] users { get ; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this <see cref="Yavsc.ApiControllers.NewCircle"/> is private.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if is private; otherwise, <c>false</c>.</value>
|
|
||||||
public bool isPrivate { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Circle controller.
|
/// Circle controller.
|
||||||
@ -62,10 +42,10 @@ namespace Yavsc.ApiControllers
|
|||||||
/// <param name="model">Model.</param>
|
/// <param name="model">Model.</param>
|
||||||
[Authorize,
|
[Authorize,
|
||||||
AcceptVerbs ("POST")]
|
AcceptVerbs ("POST")]
|
||||||
public long Create(NewCircle model)
|
public long Create(Circle model)
|
||||||
{
|
{
|
||||||
string user = Membership.GetUser ().UserName;
|
string user = Membership.GetUser ().UserName;
|
||||||
return CircleManager.DefaultProvider.Create (user, model.title, model.users);
|
return CircleManager.DefaultProvider.Create (user, model.Title, model.Members);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -94,6 +74,20 @@ namespace Yavsc.ApiControllers
|
|||||||
CircleManager.DefaultProvider.Delete (id);
|
CircleManager.DefaultProvider.Delete (id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the user from circle.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">Identifier.</param>
|
||||||
|
/// <param name="username">Username.</param>
|
||||||
|
[Authorize,
|
||||||
|
AcceptVerbs ("GET")]
|
||||||
|
public void RemoveUserFromCircle(long id, string username)
|
||||||
|
{
|
||||||
|
checkIsOwner (CircleManager.DefaultProvider.Get(id));
|
||||||
|
CircleManager.DefaultProvider.RemoveMembership (id,username);
|
||||||
|
}
|
||||||
|
|
||||||
private void checkIsOwner(Circle c)
|
private void checkIsOwner(Circle c)
|
||||||
{
|
{
|
||||||
string user = Membership.GetUser ().UserName;
|
string user = Membership.GetUser ().UserName;
|
||||||
|
@ -121,6 +121,9 @@ label {
|
|||||||
font-size: large;
|
font-size: large;
|
||||||
background-color: rgba(0,64,0,0.1);
|
background-color: rgba(0,64,0,0.1);
|
||||||
}
|
}
|
||||||
|
.dirty {
|
||||||
|
background-color: rgba(128,128,0,0.3);
|
||||||
|
}
|
||||||
.error {
|
.error {
|
||||||
color: #f88;
|
color: #f88;
|
||||||
font-size: large;
|
font-size: large;
|
||||||
|
@ -214,12 +214,13 @@ namespace Yavsc.Controllers
|
|||||||
return View (model);
|
return View (model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Profile the specified user.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="user">User name.</param>
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
/// <summary>
|
||||||
|
/// Profile the specified id.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">Identifier.</param>
|
||||||
public ActionResult Profile (string id)
|
public ActionResult Profile (string id)
|
||||||
{
|
{
|
||||||
if (id == null)
|
if (id == null)
|
||||||
@ -230,14 +231,16 @@ namespace Yavsc.Controllers
|
|||||||
return View (model);
|
return View (model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Profile the specified user, model and AvatarFile.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="user">User.</param>
|
|
||||||
/// <param name="model">Model.</param>
|
|
||||||
/// <param name="AvatarFile">Avatar file.</param>
|
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
/// <summary>
|
||||||
|
/// Profile the specified id, model and AvatarFile.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">Identifier.</param>
|
||||||
|
/// <param name="model">Model.</param>
|
||||||
|
/// <param name="AvatarFile">Avatar file.</param>
|
||||||
public ActionResult Profile (string id, Profile model, HttpPostedFileBase AvatarFile)
|
public ActionResult Profile (string id, Profile model, HttpPostedFileBase AvatarFile)
|
||||||
{
|
{
|
||||||
// ASSERT("Membership.GetUser ().UserName is made of simple characters, no slash nor backslash"
|
// ASSERT("Membership.GetUser ().UserName is made of simple characters, no slash nor backslash"
|
||||||
|
16
web/Scripts/MarkdownDeep License.txt
Normal file
16
web/Scripts/MarkdownDeep License.txt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
MarkdownDeep License
|
||||||
|
====================
|
||||||
|
|
||||||
|
MarkdownDeep - <http://www.toptensoftware.com/markdowndeep>
|
||||||
|
Copyright (C) 2010-2011 Topten Software
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this product except in
|
||||||
|
compliance with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
<http://www.apache.org/licenses/LICENSE-2.0>
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software distributed under the License is
|
||||||
|
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and limitations under the License.
|
||||||
|
|
||||||
|
|
60
web/Scripts/MarkdownDeep Quick Reference.txt
Normal file
60
web/Scripts/MarkdownDeep Quick Reference.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
MarkdownDeep Quick Reference
|
||||||
|
============================
|
||||||
|
|
||||||
|
Setting up the Client Side Editor
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
The following assumes you've installed the full edition MarkdownDeep using NuGet and explains how to setup
|
||||||
|
a client side editor with toolbar, resize bar, real-time preview and syntax reference help.
|
||||||
|
|
||||||
|
1. In either your master view page, or in the view containing the editor ensure the following references are in place:
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/Scripts/mdd_styles.css" />
|
||||||
|
<script type="text/javascript" src="/Scripts/jQuery-1.4.1.min.js"></script>
|
||||||
|
<script type="text/javascript" src="/Scripts/MarkdownDeepLib.min.js"></script>
|
||||||
|
|
||||||
|
2. Insert the following markup at the location you want the editor to appear:
|
||||||
|
|
||||||
|
<div class="mdd_toolbar"></div>
|
||||||
|
<%=Html.TextArea("content", new { @class="mdd_editor" }) %>
|
||||||
|
<div class="mdd_resizer"></div>
|
||||||
|
<div class="mdd_preview"></div>
|
||||||
|
|
||||||
|
Note, the mdd_toolbar, mdd_resizer and mdd_preview divs are all optional. If ommitted, the jQuery plugin will
|
||||||
|
create them however this may cause the page to appear to "jump" as it loads. By using the above divs and the
|
||||||
|
associated mdd_styles.css stylesheet, the correct sizing can be in-place immediately, eliminating these jumps.
|
||||||
|
|
||||||
|
3. Use the jQuery plugin to convert the textarea into a Markdown editor. For more options, see below.
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
$("textarea.mdd_editor").MarkdownDeep({
|
||||||
|
help_location:"/Scripts/mdd_help.htm",
|
||||||
|
ExtraMode: true
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
See <http://www.toptensoftware.com/markdowndeep/editor> for more information on configuring the editor.
|
||||||
|
|
||||||
|
Server Side Translation
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The above steps allow you to create forms where the user can enter and preview Markdown content. This section
|
||||||
|
explains how to perform the equivalent translation of the entered content server side.
|
||||||
|
|
||||||
|
1. When you installed MarkdownDeep to your project with NuGet, a reference to MarkdownDeep.dll would already have
|
||||||
|
been created.
|
||||||
|
|
||||||
|
2. To translate Markdown, instantiate an instance of the MarkdownDeep class and call it's Translate method to
|
||||||
|
do the translation:
|
||||||
|
|
||||||
|
// Instantiate
|
||||||
|
var md=new MarkdownDeep.Markdown();
|
||||||
|
|
||||||
|
// Set options
|
||||||
|
md.ExtraMode=true;
|
||||||
|
|
||||||
|
// Translate
|
||||||
|
var html=md.Transform(plaintext);
|
||||||
|
|
||||||
|
|
||||||
|
See <http://www.toptensoftware.com/markdowndeep/api> for other methods and properties.
|
BIN
web/Scripts/mdd_ajax_loader.gif
Normal file
BIN
web/Scripts/mdd_ajax_loader.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
web/Scripts/mdd_gripper.png
Normal file
BIN
web/Scripts/mdd_gripper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 150 B |
166
web/Scripts/mdd_help.htm
Normal file
166
web/Scripts/mdd_help.htm
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
<h2>Markdown Formatting</h2>
|
||||||
|
<p><a href="http://daringfireball.net/projects/markdown/" target="_blank">Markdown</a> turns plain text formatting into fancy HTML formatting.</p>
|
||||||
|
<h3>Phrase Emphasis</h3>
|
||||||
|
<pre><code>*italic* **bold**
|
||||||
|
_italic_ __bold__
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Links</h3>
|
||||||
|
<p>Inline:</p>
|
||||||
|
<pre><code>An [example](http://url.com/ "Title")
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Reference-style labels (titles are optional):</p>
|
||||||
|
<pre><code>An [example][id]. Then, anywhere
|
||||||
|
else in the doc, define the link:
|
||||||
|
|
||||||
|
[id]: http://example.com/ "Title"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Images</h3>
|
||||||
|
<p>Inline (titles are optional):</p>
|
||||||
|
<pre><code>
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Reference-style:</p>
|
||||||
|
<pre><code>![alt text][id]
|
||||||
|
|
||||||
|
[id]: /url/to/img.jpg "Title"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Headers</h3>
|
||||||
|
<p>Setext-style:</p>
|
||||||
|
<pre><code>Header 1
|
||||||
|
========
|
||||||
|
|
||||||
|
Header 2
|
||||||
|
--------
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>atx-style (closing #'s are optional):</p>
|
||||||
|
<pre><code># Header 1 #
|
||||||
|
|
||||||
|
## Header 2 ##
|
||||||
|
|
||||||
|
###### Header 6
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Lists</h3>
|
||||||
|
<p>Ordered, without paragraphs:</p>
|
||||||
|
<pre><code>1. Foo
|
||||||
|
2. Bar
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Unordered, with paragraphs:</p>
|
||||||
|
<pre><code>* A list item.
|
||||||
|
|
||||||
|
With multiple paragraphs.
|
||||||
|
|
||||||
|
* Bar
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can nest them:</p>
|
||||||
|
<pre><code>* Abacus
|
||||||
|
* answer
|
||||||
|
* Bubbles
|
||||||
|
1. bunk
|
||||||
|
2. bupkis
|
||||||
|
* BELITTLER
|
||||||
|
3. burper
|
||||||
|
* Cunning
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Blockquotes</h3>
|
||||||
|
<pre><code>> Email-style angle brackets
|
||||||
|
> are used for blockquotes.
|
||||||
|
|
||||||
|
> > And, they can be nested.
|
||||||
|
|
||||||
|
> #### Headers in blockquotes
|
||||||
|
>
|
||||||
|
> * You can quote a list.
|
||||||
|
> * Etc.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Code Spans</h3>
|
||||||
|
<pre><code>`<code>` spans are delimited
|
||||||
|
by backticks.
|
||||||
|
|
||||||
|
You can include literal backticks
|
||||||
|
like `` `this` ``.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Preformatted Code Blocks</h3>
|
||||||
|
<p>Indent every line of a code block by at least 4 spaces or 1 tab.</p>
|
||||||
|
<pre><code>This is a normal paragraph.
|
||||||
|
|
||||||
|
This is a preformatted
|
||||||
|
code block.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Horizontal Rules</h3>
|
||||||
|
<p>Three or more dashes or asterisks:</p>
|
||||||
|
<pre><code>---
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
- - - -
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Manual Line Breaks</h3>
|
||||||
|
<p>End a line with two or more spaces:</p>
|
||||||
|
<pre><code>Roses are red,
|
||||||
|
Violets are blue.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2>Extra Mode</h2>
|
||||||
|
|
||||||
|
These formatting features are only available when Extra Mode is enabled.
|
||||||
|
|
||||||
|
<h3>Markdown In Html</h3>
|
||||||
|
<p>Enable markdown in HTML block level elements:</p>
|
||||||
|
<pre><code><div markdown="1">
|
||||||
|
Markdown **still** works.
|
||||||
|
</div>
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Fenced Code Blocks</h3>
|
||||||
|
<p>Code blocks delimited by 3 or more tildas:</p>
|
||||||
|
<pre><code>~~~
|
||||||
|
This is a preformatted
|
||||||
|
code block
|
||||||
|
~~~
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Header IDs</h3>
|
||||||
|
<p>Set the id of headings with <code>{#<id>}</code> at end of heading line:</p>
|
||||||
|
<pre><code>## My Heading {#myheading}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Tables</h3>
|
||||||
|
|
||||||
|
<pre><code>Fruit |Color
|
||||||
|
---------|----------
|
||||||
|
Apples |Red
|
||||||
|
Pears |Green
|
||||||
|
Bananas |Yellow</code></pre>
|
||||||
|
<h3>Definition Lists</h3>
|
||||||
|
<pre><code>Term 1
|
||||||
|
: Definition 1
|
||||||
|
|
||||||
|
Term 2
|
||||||
|
: Definition 2</code></pre>
|
||||||
|
|
||||||
|
<h3>Footnotes</h3>
|
||||||
|
<pre><code>Body text with a footnote [^1]
|
||||||
|
|
||||||
|
[^1]: Footnote text here
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Abbreviations</h3>
|
||||||
|
<pre><code>MDD <- will have title
|
||||||
|
|
||||||
|
*[MDD]: MarkdownDeep
|
||||||
|
</code></pre>
|
||||||
|
<p> </p>
|
||||||
|
|
BIN
web/Scripts/mdd_modal_background.png
Normal file
BIN
web/Scripts/mdd_modal_background.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 173 B |
211
web/Scripts/mdd_styles.css
Normal file
211
web/Scripts/mdd_styles.css
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
div.mdd_modal
|
||||||
|
{
|
||||||
|
position:fixed;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
padding:0;
|
||||||
|
margin:0;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
z-index:1000;
|
||||||
|
display:none;
|
||||||
|
font-size:10pt;
|
||||||
|
background-image:url(mdd_modal_background.png);
|
||||||
|
}
|
||||||
|
div.mdd_modal_frame
|
||||||
|
{
|
||||||
|
width:650px;
|
||||||
|
height:400px;
|
||||||
|
background-color:White;
|
||||||
|
z-index:2000;
|
||||||
|
margin:0 auto;
|
||||||
|
margin-top:60px;
|
||||||
|
border:solid 5px #808080;
|
||||||
|
position:relative;
|
||||||
|
border-radius:5px;
|
||||||
|
-moz-border-radius:5px;
|
||||||
|
-webkit-border-radius:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_modal_button
|
||||||
|
{
|
||||||
|
position:absolute;
|
||||||
|
top:-33px;
|
||||||
|
right:-5px;
|
||||||
|
padding-left:10px;
|
||||||
|
padding-right:10px;
|
||||||
|
padding-top:4px;
|
||||||
|
padding-bottom:0px;
|
||||||
|
height:20px;
|
||||||
|
background-color:#808080;
|
||||||
|
z-index:1999;
|
||||||
|
border-radius:4px;
|
||||||
|
-moz-border-radius:4px;
|
||||||
|
-webkit-border-radius:4px;
|
||||||
|
line-height:1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_modal_button a
|
||||||
|
{
|
||||||
|
color:White;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_modal_button a:hover
|
||||||
|
{
|
||||||
|
color:Orange;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_modal_content
|
||||||
|
{
|
||||||
|
overflow:scroll;
|
||||||
|
overflow-x:hidden;
|
||||||
|
position:relative;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_ajax_loader
|
||||||
|
{
|
||||||
|
background-position: center center;
|
||||||
|
background-image: url(mdd_ajax_loader.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width:100%;
|
||||||
|
height:200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_syntax
|
||||||
|
{
|
||||||
|
font-size:12pt;
|
||||||
|
padding:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_syntax h2
|
||||||
|
{
|
||||||
|
font-size:14pt;
|
||||||
|
}
|
||||||
|
div.mdd_syntax h3
|
||||||
|
{
|
||||||
|
font-size:12pt;
|
||||||
|
}
|
||||||
|
div.mdd_syntax pre
|
||||||
|
{
|
||||||
|
font-size:10pt;
|
||||||
|
border:solid 1px silver;
|
||||||
|
padding:4px;
|
||||||
|
background-color:#f8f8f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_toolbar_wrap
|
||||||
|
{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
div.mdd_toolbar
|
||||||
|
{
|
||||||
|
padding:5px;
|
||||||
|
height:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_toolbar ul
|
||||||
|
{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_toolbar li
|
||||||
|
{
|
||||||
|
float:left;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
list-style:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_toolbar a.mdd_button
|
||||||
|
{
|
||||||
|
background-image:url(mdd_toolbar.png);
|
||||||
|
width:20px;
|
||||||
|
height:20px;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.mdd_sep
|
||||||
|
{
|
||||||
|
width:5px;
|
||||||
|
height:20px;
|
||||||
|
display:block;
|
||||||
|
border-left:solid 1px #808080;
|
||||||
|
margin-left:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mdd_bold { background-position:-1px -1px;}
|
||||||
|
#mdd_bold:hover { background-position:-1px -23px; }
|
||||||
|
#mdd_italic { background-position:-23px -1px; }
|
||||||
|
#mdd_italic:hover { background-position:-23px -23px; }
|
||||||
|
#mdd_ullist { background-position:-177px -1px; }
|
||||||
|
#mdd_ullist:hover { background-position:-177px -23px; }
|
||||||
|
#mdd_ollist { background-position:-155px -1px; }
|
||||||
|
#mdd_ollist:hover { background-position:-155px -23px; }
|
||||||
|
#mdd_indent { background-position:-67px -1px; }
|
||||||
|
#mdd_indent:hover { background-position:-67px -23px; }
|
||||||
|
#mdd_outdent { background-position:-89px -1px; }
|
||||||
|
#mdd_outdent:hover { background-position:-89px -23px; }
|
||||||
|
#mdd_link { background-position:-45px -1px; }
|
||||||
|
#mdd_link:hover { background-position:-45px -23px; }
|
||||||
|
#mdd_img { background-position:-133px -1px; }
|
||||||
|
#mdd_img:hover { background-position:-133px -23px; }
|
||||||
|
#mdd_hr { background-position:-221px -1px; }
|
||||||
|
#mdd_hr:hover { background-position:-221px -23px; }
|
||||||
|
#mdd_code { background-position:-111px -1px; }
|
||||||
|
#mdd_code:hover { background-position:-111px -23px; }
|
||||||
|
#mdd_heading { background-position:-199px -1px; }
|
||||||
|
#mdd_heading:hover { background-position:-199px -23px; }
|
||||||
|
#mdd_undo { background-position:-243px -1px; }
|
||||||
|
#mdd_undo:hover { background-position:-243px -23px; }
|
||||||
|
#mdd_redo { background-position:-265px -1px; }
|
||||||
|
#mdd_redo:hover { background-position:-265px -23px; }
|
||||||
|
|
||||||
|
div.mdd_links
|
||||||
|
{
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_links a
|
||||||
|
{
|
||||||
|
text-decoration:none;
|
||||||
|
color:#404040;
|
||||||
|
font-size:smaller;
|
||||||
|
}
|
||||||
|
div.mdd_links a:hover
|
||||||
|
{
|
||||||
|
color:black;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_editor_wrap
|
||||||
|
{
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
textarea.mdd_editor
|
||||||
|
{
|
||||||
|
width:100%;
|
||||||
|
resize:none;
|
||||||
|
margin:0;padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.mdd_resizer_wrap
|
||||||
|
{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
div.mdd_resizer
|
||||||
|
{
|
||||||
|
background:#f8f8f8;
|
||||||
|
background-image:url("mdd_gripper.png");
|
||||||
|
background-position:center center;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
padding-left:2px;
|
||||||
|
padding-right:2px;
|
||||||
|
height:9px;
|
||||||
|
border:solid 1px #d0d0d0;
|
||||||
|
margin-top:-1px;
|
||||||
|
cursor:n-resize;
|
||||||
|
}
|
||||||
|
|
BIN
web/Scripts/mdd_toolbar.png
Normal file
BIN
web/Scripts/mdd_toolbar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.9 KiB |
@ -43,7 +43,7 @@ $("#tbc").stupidtable();
|
|||||||
<legend id="lgdnvcirc"></legend>
|
<legend id="lgdnvcirc"></legend>
|
||||||
<span id="msg" class="field-validation-valid error"></span>
|
<span id="msg" class="field-validation-valid error"></span>
|
||||||
<label for="title"><b><%=Html.Translate("Title")%></b></label>
|
<label for="title"><b><%=Html.Translate("Title")%></b></label>
|
||||||
<input type="text" id="title" name="title" class="inputtext"/>
|
<input type="text" id="title" name="title" class="inputtext" onchange="onTitleChanged"/>
|
||||||
<span id="Err_cr_title" class="field-validation-valid error"></span>
|
<span id="Err_cr_title" class="field-validation-valid error"></span>
|
||||||
<table id="tbmbrs">
|
<table id="tbmbrs">
|
||||||
<thead>
|
<thead>
|
||||||
@ -91,19 +91,24 @@ function(json) { $("#title").val( json.Title); $("#users").val( json.Members ) ;
|
|||||||
function editNewCircle() {
|
function editNewCircle() {
|
||||||
if ($('#fncirc').hasClass('hidden')) $('#fncirc').removeClass('hidden')
|
if ($('#fncirc').hasClass('hidden')) $('#fncirc').removeClass('hidden')
|
||||||
$('#lgdnvcirc').html("Creation d'un cercle");
|
$('#lgdnvcirc').html("Creation d'un cercle");
|
||||||
|
$('#btnnewcircle').val("Créer");
|
||||||
|
$('#fncirc').removeClass("dirty");
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectCircle() {
|
function selectCircle() {
|
||||||
if ($('#fncirc').hasClass('hidden')) $('#fncirc').removeClass('hidden')
|
if ($('#fncirc').hasClass('hidden')) $('#fncirc').removeClass('hidden')
|
||||||
var id = $(this).attr('cid');
|
var id = $(this).attr('cid');
|
||||||
$('#lgdnvcirc').html("Edition du cercle");
|
$('#lgdnvcirc').html("Edition du cercle");
|
||||||
|
$('#btnnewcircle').val("Modifier");
|
||||||
// get it from the server
|
// get it from the server
|
||||||
getCircle(id);
|
getCircle(id);
|
||||||
|
$('#fncirc').removeClass("dirty");
|
||||||
}
|
}
|
||||||
|
|
||||||
function onmembersChange(newval)
|
function onmembersChange(newval)
|
||||||
{
|
{$('#fncirc').addClass("dirty");}
|
||||||
}
|
function onTitleChanged()
|
||||||
|
{ $('#fncirc').addClass("dirty"); }
|
||||||
|
|
||||||
function removeCircle() {
|
function removeCircle() {
|
||||||
message(false);
|
message(false);
|
||||||
@ -137,7 +142,7 @@ function selectCircle() {
|
|||||||
function addCircle()
|
function addCircle()
|
||||||
{
|
{
|
||||||
message(false);
|
message(false);
|
||||||
var circle = { title: $("#title").val(), users: $("#users").val() } ;
|
var circle = { title: $("#title").val(), members: $("#users").val() } ;
|
||||||
$("#title").text('');
|
$("#title").text('');
|
||||||
$("#users").val('');
|
$("#users").val('');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@ -149,8 +154,8 @@ function selectCircle() {
|
|||||||
$('<tr id="c_'+id+'"/>').addClass('selected row')
|
$('<tr id="c_'+id+'"/>').addClass('selected row')
|
||||||
.appendTo('#tbcb');
|
.appendTo('#tbcb');
|
||||||
|
|
||||||
$('<td>'+circle.title+'<br><i>'+
|
$('<td>'+circle.title+' <br><i>'+
|
||||||
circle.users+
|
circle.members+
|
||||||
'</i></td></td>')
|
'</i></td></td>')
|
||||||
.appendTo('#c_'+id);
|
.appendTo('#c_'+id);
|
||||||
|
|
||||||
|
@ -658,7 +658,7 @@ CREATE TABLE circle
|
|||||||
owner character varying(255) NOT NULL, -- creator of this circle
|
owner character varying(255) NOT NULL, -- creator of this circle
|
||||||
applicationname character varying(255) NOT NULL, -- Application name
|
applicationname character varying(255) NOT NULL, -- Application name
|
||||||
title character varying(512) NOT NULL,
|
title character varying(512) NOT NULL,
|
||||||
public boolean, -- true when this circle is a public circle, from which the title would be available from an anonymous access to the owner's profile
|
public boolean default FALSE, -- true when this circle is a public circle, from which the title would be available from an anonymous access to the owner's profile
|
||||||
CONSTRAINT circle_pkey PRIMARY KEY (_id),
|
CONSTRAINT circle_pkey PRIMARY KEY (_id),
|
||||||
CONSTRAINT circle_owner_fkey FOREIGN KEY (owner, applicationname)
|
CONSTRAINT circle_owner_fkey FOREIGN KEY (owner, applicationname)
|
||||||
REFERENCES users (username, applicationname) MATCH SIMPLE
|
REFERENCES users (username, applicationname) MATCH SIMPLE
|
||||||
@ -673,7 +673,6 @@ COMMENT ON COLUMN circle.owner IS 'creator of this circle';
|
|||||||
COMMENT ON COLUMN circle.applicationname IS 'Application name';
|
COMMENT ON COLUMN circle.applicationname IS 'Application name';
|
||||||
COMMENT ON COLUMN circle.public IS 'true when this circle is a public circle, from which the title would be available from an anonymous access to the owner''s profile';
|
COMMENT ON COLUMN circle.public IS 'true when this circle is a public circle, from which the title would be available from an anonymous access to the owner''s profile';
|
||||||
|
|
||||||
|
|
||||||
-- Table: circle_members
|
-- Table: circle_members
|
||||||
|
|
||||||
-- DROP TABLE circle_members;
|
-- DROP TABLE circle_members;
|
||||||
|
@ -44,23 +44,16 @@ namespace Yavsc.Model.Circles
|
|||||||
public abstract long Create(string owner, string title, string [] users);
|
public abstract long Create(string owner, string title, string [] users);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add the specified user.
|
/// Add the specified user to the specified circle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">circle Identifier.</param>
|
/// <param name="id">circle Identifier.</param>
|
||||||
/// <param name="username">User name.</param>
|
/// <param name="username">User name.</param>
|
||||||
public abstract void Add(long id, string username);
|
public abstract void Add(long id, string username);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Remove the specified user.
|
/// Delete the specified circle by its id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">circle Identifier.</param>
|
/// <param name="id">Circle Identifier.</param>
|
||||||
/// <param name="username">User name.</param>
|
|
||||||
public abstract void Remove(long id, string username);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Delete the specified id.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="id">Identifier.</param>
|
|
||||||
public abstract void Delete(long id) ;
|
public abstract void Delete(long id) ;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -70,17 +63,31 @@ namespace Yavsc.Model.Circles
|
|||||||
public abstract Circle Get(long id);
|
public abstract Circle Get(long id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// List this instance.
|
/// List circle's user.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract IEnumerable<Circle> List(string user);
|
public abstract IEnumerable<Circle> List(string user);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Covers the specified username.
|
/// True when the specified user is listed in one of
|
||||||
|
/// the specified circles
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="circle_ids">circle's owner.</param>
|
/// <param name="circle_ids">circles to look at</param>
|
||||||
/// <param name="member">Username in his circle.</param>
|
/// <param name="member">Username to look for in the circles</param>
|
||||||
public abstract bool Matches(long [] circle_ids, string member);
|
public abstract bool Matches(long [] circle_ids, string member);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the membership.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="circle_id">Circle identifier.</param>
|
||||||
|
/// <param name="member">Member.</param>
|
||||||
|
public abstract void RemoveMembership(long circle_id, string member);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the member from all current user circles.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="member">Member.</param>
|
||||||
|
public abstract void RemoveMember(string member);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
//
|
|
||||||
// ListItem.cs
|
|
||||||
//
|
|
||||||
// Author:
|
|
||||||
// Paul Schneider <paul@pschneider.fr>
|
|
||||||
//
|
|
||||||
// Copyright (c) 2015 GNU GPL
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Yavsc.Model
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// List item.
|
|
||||||
/// </summary>
|
|
||||||
[Obsolete("Use MVC SelectItem")]
|
|
||||||
public class ListItem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the value.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The value.</value>
|
|
||||||
public string Value { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the text.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The text.</value>
|
|
||||||
public string Text { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the icon.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The icon.</value>
|
|
||||||
public string Icon { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -153,7 +153,6 @@
|
|||||||
<Compile Include="RolesAndMembers\GCMRegister.cs" />
|
<Compile Include="RolesAndMembers\GCMRegister.cs" />
|
||||||
<Compile Include="RolesAndMembers\LostPasswordModel.cs" />
|
<Compile Include="RolesAndMembers\LostPasswordModel.cs" />
|
||||||
<Compile Include="Messaging\SimpleMessage.cs" />
|
<Compile Include="Messaging\SimpleMessage.cs" />
|
||||||
<Compile Include="ListItem.cs" />
|
|
||||||
<Compile Include="Calendar\BookEdit.cs" />
|
<Compile Include="Calendar\BookEdit.cs" />
|
||||||
<Compile Include="Calendar\FreeDate.cs" />
|
<Compile Include="Calendar\FreeDate.cs" />
|
||||||
<Compile Include="FrontOffice\Catalog\Billing\PriceOnItemCount.cs" />
|
<Compile Include="FrontOffice\Catalog\Billing\PriceOnItemCount.cs" />
|
||||||
|
Reference in New Issue
Block a user