source_name = forms.CharField(widget=forms.Textarea, required=False)
source_url = forms.URLField(verify_exists=False, required=False)
url = forms.URLField(verify_exists=False)
- parts = forms.CharField(widget=forms.Textarea, required=False)
+ parts = ListField(required=False)
license = forms.CharField(required=False)
license_description = forms.CharField(widget=forms.Textarea, required=False)
print "validating sform"
if sform.is_valid():
valid = True
- if sform.cleaned_data['autoxml']:
- print "validating dcform"
- valid = dcform.is_valid()
+# if sform.cleaned_data['autoxml']:
+# print "validating dcform"
+# valid = dcform.is_valid()
print "valid is ", valid
+
if valid:
uri = path + '$' + sform.cleaned_data['partname']
child_rpath = file_path(uri)
fulltext = sform.cleaned_data['fulltext']
fulltext = fulltext.replace(u'<include-tag-placeholder />',
- librarian.xinclude_forURI('wlrepo://'+uri) )
+ librarian.xinclude_forURI(u'wlrepo://'+uri) )
repo._write_file(rpath, fulltext.encode('utf-8'))
if sform.cleaned_data['autoxml']:
# this is a horrible hack - really
bi = dcparser.BookInfo.from_element(librarian.DEFAULT_BOOKINFO.to_etree())
- bi.update(dcform.cleaned_data)
+ bi.update(dcform.data)
newtext = librarian.wrap_text(newtext, \
unicode(date.today()), bookinfo=bi )
if repo.in_branch(split_action, file_branch(path, request.user)):
# redirect to success
+ import urllib
+ uri = urllib.quote( unicode(uri).encode('utf-8'))
return HttpResponseRedirect( reverse('split-success',\
- kwargs={'path': path})+'?child='+uri)
+ kwargs={'path': path})+'?child='+uri )
else:
try: # to read the current DC
repo = hg.Repository(settings.REPOSITORY_PATH)
if name:
self._name = name
self._maindoc = ''
+ self._user = self._document = None
elif doc and user:
+ self._user = user
+ self._document = doc
self._name = user + ':' + doc
self._maindoc = doc
else:
raise ValueError("You must provide either name or doc and user.")
+ print "new cab:", self._name, self._user, self._document
+
+ @property
+ def username(self):
+ return self._user
def __str__(self):
return "Cabinet(%s)" % self._name
def create(self, name, initial_data=''):
"""Create a new sub-document in the cabinet with the given name."""
pass
-
+
+ @property
def maindoc_name(self):
return self._maindoc
class Shelf(object):
- def __init__(self, cabinet):
- self._cabinet = cabinet
-
+ def __init__(self, lib):
+ self._library = lib
#
# Exception classes
import mercurial
from mercurial import localrepo as hglrepo
from mercurial import ui as hgui
-from mercurial.node import hex as to_hex
+from mercurial.node import nullid
import re
import wlrepo
lock = self._lock(True)
try:
if self._has_branch(bname):
- return MercurialCabinet(self, bname, doc=docid, user=user)
+ return MercurialCabinet(self, doc=docid, user=user)
if not create:
raise wlrepo.CabinetNotFound(bname)
# check if the docid exists in the main cabinet
needs_touch = not self._maincab.exists(docid)
- cab = MercurialCabinet(self, bname, doc=docid, user=user)
+ cab = MercurialCabinet(self, doc=docid, user=user)
name, fileid = cab._filename(None)
# create the branch
self._create_branch(bname, before_commit=cleanup_action)
- return MercurialCabinet(self, bname, doc=docid, user=user)
+ return MercurialCabinet(self, doc=docid, user=user)
finally:
lock.release()
self._checkout(self._branch_tip(branchname))
return branchname
- #
- # Merges
- #
-
+ def shelf(self, nodeid):
+ return MercurialShelf(self, self._changectx(nodeid))
#
class MercurialCabinet(wlrepo.Cabinet):
- def __init__(self, library, branchname, doc=None, user=None):
+ def __init__(self, library, branchname=None, doc=None, user=None):
if doc and user:
super(MercurialCabinet, self).__init__(library, doc=doc, user=user)
- else:
+ self._branchname = library._bname(user=user, docid=doc)
+ elif branchname:
super(MercurialCabinet, self).__init__(library, name=branchname)
-
- self._branchname = branchname
+ self._branchname = branchname
+ else:
+ raise ValueError("Provide either doc/user or branchname")
def shelf(self, selector=None):
- if selector is not None:
- raise NotImplementedException()
-
- return MercurialShelf(self, self._library._changectx(self._branchname))
+ return self._library.shelf(self._branchname)
def documents(self):
return self._execute_in_branch(action=lambda l, c: (e[1] for e in l._filelist()))
def retrieve(self, part=None, shelf=None):
name, fileid = self._filename(part)
+ print "Retrieving document %s from cab %s" % (name, self._name)
+
if fileid is None:
raise wlrepo.LibraryException("Can't retrieve main document from main cabinet.")
+
+ def retrieve_action(l,c):
+ if l._fileexists(fileid):
+ return MercurialDocument(c, name=name, fileid=fileid)
+ return None
- return self._execute_in_branch(lambda l, c: MercurialDocument(c, name, fileid))
+ return self._execute_in_branch(retrieve_action)
def create(self, name, initial_data):
name, fileid = self._filename(name)
def _filename(self, part):
part = self._library._sanitize_string(part)
- fileid = None
+ docid = None
if self._maindoc == '':
- if part is None: return [None, None]
- fileid = part
+ if part is None: rreeturn [None, None]
+ docid = part
else:
- fileid = self._maindoc + (('$' + part) if part else '')
+ docid = self._maindoc + (('$' + part) if part else '')
- return fileid, 'pub_' + fileid + '.xml'
+ return docid, 'pub_' + docid + '.xml'
def _fileopener(self):
return self._library._fileopener()
def _filectx(self, fileid):
return self._library._filectx(fileid, self._branchname)
+ def ismain(self):
+ return (self._library.main_cabinet == self)
+
class MercurialDocument(wlrepo.Document):
def __init__(self, cabinet, name, fileid):
super(MercurialDocument, self).__init__(cabinet, name=name)
self._opener = self._cabinet._fileopener()
self._fileid = fileid
- self._refresh()
+ self.refresh()
- def _refresh(self):
- self._filectx = self._cabinet._filectx(self._fileid)
- self._shelf = MercurialShelf(self, self._filectx.node())
+ def refresh(self):
+ self._filectx = self._cabinet._filectx(self._fileid)
def read(self):
return self._opener(self._filectx.path(), "r").read()
self.library._commit(self._fileid, message, user)
def update(self):
- if self._cabinet.is_main():
- return True # always up-to-date
-
- mdoc = self.library.document(self._fileid)
+ lock = self.library._lock()
+ try:
+ if self._cabinet.ismain():
+ return True # always up-to-date
- mshelf = mdoc.shelf()
- shelf = self.shelf()
+ user = self._cabinet.username or 'library'
+ mdoc = self.library.document(self._fileid)
- if not mshelf.ancestorof(shelf) and not shelf.parentof(mshelf):
- shelf.merge_with(mshelf)
+ mshelf = mdoc.shelf()
+ shelf = self.shelf()
- return rc.ALL_OK
+ if not mshelf.ancestorof(shelf) and not shelf.parentof(mshelf):
+ shelf.merge_with(mshelf, user=user)
- def share(self, message, user):
- if self._cabinet.is_main():
- return True # always shared
+ return True
+ finally:
+ lock.release()
- main = self.shared_version()
- local = self.shelf()
+ def share(self, message):
+ lock = self.library._lock()
+ try:
+ print "sharing from", self._cabinet, self._cabinet.username
+
+ if self._cabinet.ismain():
+ return True # always shared
- no_changes = True
+ if self._cabinet.username is None:
+ raise ValueError("Can only share documents from personal cabinets.")
+
+ user = self._cabinet.username
- # Case 1:
- # * local
- # |
- # * <- can also be here!
- # /|
- # / |
- # main * *
- # | |
- # The local branch has been recently updated,
- # so we don't need to update yet again, but we need to
- # merge down to default branch, even if there was
- # no commit's since last update
+ main = self.shared().shelf()
+ local = self.shelf()
- if main.ancestorof(local):
- main.merge_with(local, user=user, message=message)
- no_changes = False
-
- # Case 2:
- #
- # main * * local
- # |\ |
- # | \|
- # | *
- # | |
- #
- # Default has no changes, to update from this branch
- # since the last merge of local to default.
- elif main.has_common_ancestor(local):
- if not local.parentof(main):
+ no_changes = True
+
+ # Case 1:
+ # * local
+ # |
+ # * <- can also be here!
+ # /|
+ # / |
+ # main * *
+ # | |
+ # The local branch has been recently updated,
+ # so we don't need to update yet again, but we need to
+ # merge down to default branch, even if there was
+ # no commit's since last update
+
+ if main.ancestorof(local):
main.merge_with(local, user=user, message=message)
no_changes = False
- # Case 3:
- # main *
- # |
- # * <- this case overlaps with previos one
- # |\
- # | \
- # | * local
- # | |
- #
- # There was a recent merge to the defaul branch and
- # no changes to local branch recently.
- #
- # Use the fact, that user is prepared to see changes, to
- # update his branch if there are any
- elif local.ancestorof(main):
- if not local.parentof(main):
+ # Case 2:
+ #
+ # main * * local
+ # |\ |
+ # | \|
+ # | *
+ # | |
+ #
+ # Default has no changes, to update from this branch
+ # since the last merge of local to default.
+ elif local.has_common_ancestor(main):
+ if not local.parentof(main):
+ main.merge_with(local, user=user, message=message)
+ no_changes = False
+
+ # Case 3:
+ # main *
+ # |
+ # * <- this case overlaps with previos one
+ # |\
+ # | \
+ # | * local
+ # | |
+ #
+ # There was a recent merge to the defaul branch and
+ # no changes to local branch recently.
+ #
+ # Use the fact, that user is prepared to see changes, to
+ # update his branch if there are any
+ elif local.ancestorof(main):
+ if not local.parentof(main):
+ local.merge_with(main, user=user, message='Local branch update.')
+ no_changes = False
+ else:
local.merge_with(main, user=user, message='Local branch update.')
- no_changes = False
- else:
- local.merge_with(main, user=user, message='Local branch update.')
- self._refresh()
- local = self.shelf()
+ self._refresh()
+ local = self.shelf()
- main.merge_with(local, user=user, message=message)
+ main.merge_with(local, user=user, message=message)
+ finally:
+ lock.release()
def shared(self):
- return self.library.document(self._fileid)
+ return self.library.main_cabinet.retrieve(self._name)
+
+ def exists(self):
+ return self._cabinet.exists(self._fileid)
@property
def size(self):
return self._filectx.size()
-
def shelf(self):
- return self._shelf
+ return MercurialShelf(self.library, self._filectx.node())
@property
def last_modified(self):
def __str__(self):
return u"Document(%s->%s)" % (self._cabinet.name, self._name)
+ def __eq__(self, other):
+ return self._filectx == other._filectx
+
+
class MercurialShelf(wlrepo.Shelf):
- def __init__(self, cabinet, changectx):
- super(MercurialShelf, self).__init__(cabinet)
- self._changectx = changectx
+ def __init__(self, lib, changectx):
+ super(MercurialShelf, self).__init__(lib)
+
+ if isinstance(changectx, str):
+ self._changectx = lib._changectx(changectx)
+ else:
+ self._changectx = changectx
@property
def _rev(self):
def __str__(self):
return self._changectx.hex()
+ def __repr__(self):
+ return "MercurialShelf(%s)" % self._changectx.hex()
def ancestorof(self, other):
- pass
+ nodes = list(other._changectx._parents)
+ while nodes[0].node() != nullid:
+ v = nodes.pop(0)
+ if v == self._changectx:
+ return True
+ nodes.extend( v._parents )
+ return False
+
+ def parentof(self, other):
+ return self._changectx in other._changectx._parents
+
+ def has_common_ancestor(self, other):
+ a = self._changectx.ancestor(other._changectx)
+ print a, self._changectx.branch(), a.branch()
+
+ return (a.branch() == self._changectx.branch())
+
+ def merge_with(self, other, user, message):
+ lock = self._library._lock(True)
+ try:
+ self._library._checkout(self._changectx.node())
+ self._library._merge(other._changectx.node())
+ finally:
+ lock.release()
+
+ def __eq__(self, other):
+ return self._changectx.node() == other._changectx.node()
+
class MergeStatus(object):
def __init__(self, mstatus):
shutil.rmtree(self.path, True)
pass
- def testOpening(self):
+ def test_opening(self):
library = MercurialLibrary(self.path + '/cleanrepo')
- def testMainCabinet(self):
+ def test_main_cabinett(self):
library = MercurialLibrary(self.path + '/cleanrepo')
mcab = library.main_cabinet
- assert_equal(mcab.maindoc_name(), '')
+ assert_equal(mcab.maindoc_name, '')
# @type mcab MercurialCabinet
doclist = mcab.documents()
assert_equal( list(doclist), ['valid_file'])
- def testReadDocument(self):
+ def test_read_document(self):
library = MercurialLibrary(self.path + '/testrepoI')
doc = library.main_cabinet.retrieve('valid_file')
assert_equal(doc.read().strip(), 'Ala ma kota')
- def testReadUTF8Document(self):
+ def test_read_UTF8_document(self):
library = MercurialLibrary(self.path + '/testrepoI')
doc = library.main_cabinet.retrieve('polish_file')
assert_equal(doc.read().strip(), u'Gąska!'.encode('utf-8'))
- def testWriteDocument(self):
+ def test_write_document(self):
library = MercurialLibrary(self.path + '/testrepoI')
doc = library.main_cabinet.retrieve('valid_file')
assert_equal(doc.read(), STRING)
- def testCreateDocument(self):
+ def test_create_document(self):
repopath = os.path.join(self.path, 'testrepoI')
library = MercurialLibrary(repopath)
- doc = library.main_cabinet.create("another_file")
- doc.write("Some text")
+ doc = library.main_cabinet.create("another_file", "Some text")
assert_equal( doc.read(), "Some text")
assert_true( os.path.isfile( os.path.join(repopath, "pub_another_file.xml")) )
- def testSwitchBranch(self):
+ def test_switch_branch(self):
library = MercurialLibrary(self.path + '/testrepoII')
tester_cab = library.cabinet("valid_file", "tester", create=False)
assert_equal( list(tester_cab.documents()), ['valid_file'])
@raises(wlrepo.CabinetNotFound)
- def testNoBranch(self):
+ def test_branch_not_found(self):
library = MercurialLibrary(self.path + '/testrepoII')
tester_cab = library.cabinet("ugh", "tester", create=False)
+ def test_no_branches(self):
+ library = MercurialLibrary(self.path + '/testrepoII')
+ n4 = library.shelf(4)
+ n3 = library.shelf(3)
+ n2 = library.shelf(2)
+ n1 = library.shelf(1)
+ n0 = library.shelf(0)
+
+ assert_true( n3.parentof(n4) )
+ assert_false( n4.parentof(n3) )
+ assert_true( n0.parentof(n1) )
+ assert_false( n1.parentof(n0) )
+ assert_false( n0.parentof(n4) )
+
+ # def test_ancestor_of_simple(self):
+ assert_true( n3.ancestorof(n4) )
+ assert_true( n2.ancestorof(n4) )
+ assert_true( n1.ancestorof(n4) )
+ assert_true( n0.ancestorof(n4) )
+
+ assert_true( n2.ancestorof(n3) )
+ assert_true( n1.ancestorof(n3) )
+ assert_true( n0.ancestorof(n3) )
+
+ assert_false( n4.ancestorof(n4) )
+ assert_false( n4.ancestorof(n3) )
+ assert_false( n3.ancestorof(n2) )
+ assert_false( n3.ancestorof(n1) )
+ assert_false( n3.ancestorof(n0) )
+
+ # def test_common_ancestor_simple(self):
+ assert_true( n3.has_common_ancestor(n4) )
+ assert_true( n3.has_common_ancestor(n3) )
+ assert_true( n3.has_common_ancestor(n3) )
+
+
+ def test_once_branched(self):
+ library = MercurialLibrary(self.path + '/test3')
+
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+ n5 = library.shelf(5)
+ n4 = library.shelf(4)
+ n3 = library.shelf(3)
+ n2 = library.shelf(2)
+
+ assert_true( n2.parentof(n3) )
+ assert_false( n3.parentof(n2) )
+
+ assert_true( n2.parentof(n5) )
+ assert_false( n5.parentof(n2) )
+
+ assert_false( n2.parentof(n4) )
+ assert_false( n2.parentof(n6) )
+ assert_false( n3.parentof(n5) )
+ assert_false( n5.parentof(n3) )
+
+ # def test_ancestorof_branched(self):
+ assert_true( n2.ancestorof(n7) )
+ assert_false( n7.ancestorof(n2) )
+ assert_true( n2.ancestorof(n6) )
+ assert_false( n6.ancestorof(n2) )
+ assert_true( n2.ancestorof(n5) )
+ assert_false( n5.ancestorof(n2) )
+
+ assert_false( n3.ancestorof(n5) )
+ assert_false( n5.ancestorof(n3) )
+ assert_false( n4.ancestorof(n5) )
+ assert_false( n5.ancestorof(n4) )
+ assert_false( n3.ancestorof(n7) )
+ assert_false( n7.ancestorof(n3) )
+ assert_false( n4.ancestorof(n6) )
+ assert_false( n6.ancestorof(n4) )
+
+ # def test_common_ancestor_branched(self):
+ assert_true( n2.has_common_ancestor(n4) )
+ assert_true( n2.has_common_ancestor(n7) )
+ assert_true( n2.has_common_ancestor(n6) )
+
+ # cause it's not in the right branch
+ assert_false( n5.has_common_ancestor(n3) )
+ assert_false( n7.has_common_ancestor(n4) )
+
+ def test_after_merge(self):
+ library = MercurialLibrary(self.path + '/test4')
+ n8 = library.shelf(8)
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+
+ assert_true( n7.parentof(n8) )
+ assert_false( n8.parentof(n7) )
+
+ assert_true( n7.ancestorof(n8) )
+ assert_true( n6.ancestorof(n8) )
+
+
+ assert_true( n7.has_common_ancestor(n8) )
+ # cause it's not in the right branch
+ assert_false( n8.has_common_ancestor(n7) )
+
+
+ def test_after_merge_and_local_commit(self):
+ library = MercurialLibrary(self.path + '/test5b')
+ n9 = library.shelf(9)
+ n8 = library.shelf(8)
+ n7 = library.shelf(7)
+ n6 = library.shelf(6)
+
+ assert_true( n7.parentof(n8) )
+ assert_false( n8.parentof(n7) )
+
+ assert_true( n9.has_common_ancestor(n8) )
+ # cause it's not in the right branch
+ assert_false( n8.has_common_ancestor(n9) )
+
+
+ def test_merge_personal_to_default(self):
+ library = MercurialLibrary(self.path + '/test3')
+
+ main = library.shelf(2)
+ local = library.shelf(7)
+
+ document = library.document("ala", "admin")
+ shared = document.shared()
+ print document, shared
+
+ document.share("Here is my copy!")
+
+ assert_equal( document.shelf(), local) # local didn't change
+
+
+ new_main = shared.shelf()
+ assert_not_equal( new_main, main) # main has new revision
+
+ # check for parents
+ assert_true( main.parentof(new_main) )
+ assert_true( local.parentof(new_main) )
+
+
def testCreateBranch(self):
repopath = os.path.join(self.path, 'testrepoII')
-
\ No newline at end of file
+
line-height: 12px;
}
-.toolbar button {
- border: none;
- padding: 2px 0.5em;
- background: #AAA;
- font-family: Sans-Serif;
-}
-
.toolbar div {
background: green;
margin: 0px;
background: #DDD;
}
-.toolbar-button-groups-container p {
+.toolbar-buttons-container {
background: #DDD;
padding-top: 2px;
padding-bottom: 2px;
}
-.toolbar-button-groups-container button {
+.toolbar-buttons-container button {
background: #DDD;
+ border: none;
+ padding: 2px 0.5em;
+ background: #AAA;
+ font-family: Sans-Serif;
}
-.toolbar-button-groups-container button:hover {
+.toolbar-buttons-container button:hover {
background: #EEE;
}
-.toolbar-button-groups-container button:active {
+.toolbar-buttons-container button:active {
background: yellow;
}
+.panel-toolbar-extra button {
+ background: inherit;
+}
+
/*
.toolbar, .toolbar ol {
display: block;
$(this.contentDiv).html('');
// disconnect the toolbar
- $('div.panel-toolbar span.panel-toolbar-extra', this.wrap).empty();
+ $('div.panel-toolbar span.panel-toolbar-extra', this.wrap).html(
+ '<span />');
this.callHook('unload');
this.hooks = null; // flush the hooks
if(toolbar.length === 0) return;
// move the extra
- var extra_buttons = $('span.panel-toolbar-extra', toolbar);
- var placeholder = $('div.panel-toolbar span.panel-toolbar-extra', this.wrap);
- placeholder.replaceWith(extra_buttons);
- placeholder.hide();
+ var extra_buttons = $('span.panel-toolbar-extra button', toolbar);
+ var placeholder = $('div.panel-toolbar span.panel-toolbar-extra > span', this.wrap);
+ placeholder.replaceWith(extra_buttons);
var action_buttons = $('button', extra_buttons);
hash.t.success();\r
});\r
\r
- if($('#id_splitform-autoxml').is(':checked'))\r
+ /* if($('#id_splitform-autoxml').is(':checked'))\r
$('#split-form-dc-subform').show();\r
else\r
$('#split-form-dc-subform').hide();\r
$('#split-form-dc-subform').show();\r
else\r
$('#split-form-dc-subform').hide();\r
- });\r
+ }); */\r
}; \r
\r
$.ajax({\r
</select>
<div class="content-view"></div>
</script>
+
+ <script type="text/html" charset="utf-8" id="xml-view-template">
+ <div class="xmlview" style="position: absolute; top: 40px; left:0px; right:0px; bottom: 0px;">
+ <textarea name="text">Ala ma kota</textarea>
+ </div>
+ </script>
+
<script type="text/html" charset="utf-8" id="html-view-template">
<p>Hej! Jestem widokiem HTML!</p>
</script>
- <script type="text/html" charset="utf-8" id="xml-view-template">
- <p>Hej! Jestem widokiem XML!</p>
- </script>
{% endblock extrahead %}
{% block extrabody %}
{% block maincontent %}
<div id="splitview">
- <div id="left-panel-container" class='panel-container'>
- <select name="select-left-panel" id="panel-left-select">
- {% for panel_type in availble_panels %}
- <option value="{% url panel_view path=fileid,name=panel_type.id %}" p:panel-name="{{ panel_type.id }}">{{panel_type.display_name}}</option>
- {% endfor %}
- </select>
- <div id="panel-left-content" class="panel-content"></div>
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
- </div>
- <div id="right-panel-container" class='panel-container'>
- {# <select name="select-right-panel" id="panel-right-select"> #}
- {# {% for panel_type in availble_panels %} #}
- {# <option value="{% url panel_view path=fileid,name=panel_type.id %}" p:panel-name="{{ panel_type.id }}">{{panel_type.display_name}}</option> #}
- {# {% endfor %} #}
- {# </select> #}
- {# <div id="panel-right-content" class="panel-content"></div> #}
- <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p></div>
- </div>
+ <div id="left-panel-container" class='panel-container'></div>
+ <div id="right-panel-container" class='panel-container'></div>
+ </div>
- <div id="commit-dialog" class="jqmWindow">
- <form action="{% url file_commit fileid %}" method="POST">
- <label for="message">Commit message:</label>
- <textarea cols="60" rows="10" name="message" id="commit-dialog-message"></textarea>
- <p id="commit-dialog-error-empty-message">Wiadomość nie może być pusta.</p>
- <fieldset id="commit-dialog-related-issues"
- ui:ajax-src="http://localhost:3000/publications/issues/{{fileid}}">
- <legend>Related issues</legend>
- <div class="loading-box" style="display: none;">
- <p>Loading related issues...</p>
- </div>
- <div class="container-box">No related issues.</div>
- </fieldset>
- <p>
- <input type="button" value="Save" id="commit-dialog-save-button" />
- <input type="reset" value="Cancel" id="commit-dialog-cancel-button" />
- </p>
- </form>
- </div>
- <div id="split-dialog" class="jqmWindow">
- <div class="container-box"> </div>
- <div class="loading-box" style="display: none;">
- <p>Loading dialog contents...</p>
- <!-- <p><button type="button" class="dialog-close-button">Close</button></p> -->
- </div>
- <div class="fatal-error-box" style="display: none;">
- <p>Server error, while loading dialog :(</p>
- <p><button type="button" class="dialog-close-button">Close</button></p>
- </div>
+ <div id="commit-dialog" class="jqmWindow">
+ <form action="{% url file_commit fileid %}" method="POST">
+ <label for="message">Commit message:</label>
+ <textarea cols="60" rows="10" name="message" id="commit-dialog-message"></textarea>
+ <p id="commit-dialog-error-empty-message">Wiadomość nie może być pusta.</p>
+ <fieldset id="commit-dialog-related-issues"
+ ui:ajax-src="http://localhost:3000/publications/issues/{{fileid}}">
+ <legend>Related issues</legend>
+ <div class="loading-box" style="display: none;">
+ <p>Loading related issues...</p>
+ </div>
+ <div class="container-box">No related issues.</div>
+ </fieldset>
+ <p>
+ <input type="button" value="Save" id="commit-dialog-save-button" />
+ <input type="reset" value="Cancel" id="commit-dialog-cancel-button" />
+ </p>
+ </form>
+ </div>
+
+ <div id="split-dialog" class="jqmWindow">
+ <div class="container-box"> </div>
+ <div class="loading-box" style="display: none;">
+ <p>Loading dialog contents...</p>
+ <!-- <p><button type="button" class="dialog-close-button">Close</button></p> -->
+ </div>
+ <div class="fatal-error-box" style="display: none;">
+ <p>Server error, while loading dialog :(</p>
+ <p><button type="button" class="dialog-close-button">Close</button></p>
</div>
+ </div>
{% endblock maincontent %}
<fieldset id="split-form-dc-subform" style="display: none;">\r
<legend>Dublin Core</legend>\r
{{ dcform.as_p }}\r
- </fieldset> \r
+ </fieldset>\r
<p>\r
<button type="submit" id="split-dialog-button-accept">Split</button>\r
<button type="button" id="split-dialog-button-close">Close</button>\r