except:
pass
else:
- max_length = getattr(model_field, 'max_length', None)
- if max_length:
- wdvalue = wdvalue[:max_length]
+ if isinstance(wdvalue, str):
+ max_length = getattr(model_field, 'max_length', None)
+ if max_length:
+ wdvalue = wdvalue[:max_length]
setattr(self, attname, wdvalue)
def wikidata_link(self):
def split(self, slug, title='', **kwargs):
""" Create an empty chunk after this one """
- self.book.chunk_set.filter(number__gt=self.number).update(
- number=models.F('number')+1)
+ # Single update makes unique constr choke on postgres.
+ for chunk in self.book.chunk_set.filter(number__gt=self.number).order_by('-number'):
+ chunk.number += 1
+ chunk.save()
new_chunk = None
while not new_chunk:
new_slug = self.book.make_chunk_slug(slug)
# find the chapter's title
name_elem = deepcopy(element)
- for tag in 'extra', 'motyw', 'pa', 'pe', 'pr', 'pt', 'uwaga':
+ for tag in 'extra', 'motyw', 'pa', 'pe', 'pr', 'pt', 'ptrad', 'uwaga':
for a in name_elem.findall('.//' + tag):
a.text=''
del a[:]
* Przypisy w tekście
*/
-.htmlview .annotation-inline-box {
- &:hover > span[x-annotation-box] {
- display: block;
+.htmlview .annotation-inline-box,
+.htmlview .reference-inline-box {
+ &:hover {
+ > span[x-annotation-box],
+ > span[x-preview]
+ {
+ display: block;
+ }
}
- > span[x-annotation-box] {
+ > span[x-annotation-box],
+ > span[x-preview]
+ {
display: none;
width: 300px;
font-size: 10pt;
}
}
}
+
+
+
+div[x-node="numeracja"] {
+ background: lightblue;
+ margin: 2em;
+ padding: 2em;
+ border-radius: 1em;
+ &::before {
+ content: "Reset numeracji";
+ }
+}
+
+*[x-number]::before {
+ display: block;
+ content: attr(x-number);
+ position: absolute;
+ text-align: right;
+ width: 40px;
+ left: -60px;
+ font-size: .9em;
+ opacity: .8;
+
+}
}
/* Convert HTML fragment to plaintext */
- var ANNOT_FORBIDDEN = ['pt', 'pa', 'pr', 'pe', 'begin', 'end', 'motyw'];
+ var ANNOT_FORBIDDEN = ['pt', 'pa', 'pr', 'pe', 'ptrad', 'begin', 'end', 'motyw'];
function html2plainText(fragment){
var text = "";
element: source,
stripOuter: true,
success: function(text){
- $('textarea', $overlay).val($.trim(text));
+ let ttext = $.trim(text);
+ $('textarea', $overlay).val(ttext);
setTimeout(function(){
$('textarea', $overlay).elastic().focus();
$('*[x-annotation-box]', editable).css({
}).show();
}
+ if (editable.is('.reference-inline-box')) {
+ let preview = $('*[x-preview]', editable);
+ preview.show();
+ let link = $("a", preview);
+ let href = link.attr('href');
+ if (link.attr('title') == '?' && href.startsWith('https://www.wikidata.org/wiki/')) {
+ link.attr('title', '…');
+ let qid = href.split('/').reverse()[0];
+ $.ajax({
+ url: 'https://www.wikidata.org/w/rest.php/wikibase/v1/entities/items/' + qid + '?_fields=labels',
+ dataType: "json",
+ success: function(data) {
+ link.attr(
+ 'title',
+ data['labels']['pl'] || data['labels']['en']
+ );
+ },
+ });
+ }
+ }
});
self.caret = new Caret(element);
callback();
}
+ let self = this;
xml2html({
xml: this.doc.text,
base: this.doc.getBase(),
var htmlView = $('#html-view');
htmlView.html(element);
+ self.renumber();
if ('PropertiesPerspective' in $.wiki.perspectives)
$.wiki.perspectives.PropertiesPerspective.enable();
}
})
}
+
+ renumber() {
+ let number = 0;
+ $('#html-view *').each((i, e) => {
+ let $e = $(e);
+ if ($e.closest('[x-node="abstrakt"]').length) return;
+ if ($e.closest('[x-node="nota_red"]').length) return;
+ let node = $e.attr('x-node');
+ if (node == 'numeracja') {
+ number = 0;
+ } else if (['werset', 'akap', 'wers'].includes(node)) {
+ number ++;
+ $e.attr('x-number', number);
+ }
+ })
+ }
}
$.wiki.VisualPerspective = VisualPerspective;
$.xmlns["rdf"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
$('rdf|RDF', doc).remove();
if (params.noFootnotes) {
- $('pa, pe, pr, pt', doc).remove();
+ $('pa, pe, pr, pt, ptrad', doc).remove();
}
if (params.noThemes) {
$('motyw', doc).remove();
<a href='#' class="nav-link refresh" title="Przypisy tłumacza" data-tag="pt">pt</a>
</li>
<li class="nav-item">
- <a href='#' class="nav-link refresh" title="Wszystkie przypisy" data-tag="pa,pe,pr,pt">{% trans "all" %}</a>
+ <a href='#' class="nav-link refresh" title="Przypisy tradycyjne" data-tag="ptrad">ptrad</a>
+ </li>
+ <li class="nav-item">
+ <a href='#' class="nav-link refresh" title="Wszystkie przypisy" data-tag="pa,pe,pr,pt,ptrad">{% trans "all" %}</a>
</li>
</ul>
<div id="annotations-container">
</div>
</xsl:template>
+ <xsl:template match="numeracja">
+ <div>
+ <xsl:call-template name="standard-attributes" />
+ <div>
+ <xsl:attribute name="data-start">
+ <xsl:value-of select="@start" />
+ </xsl:attribute>
+ <xsl:attribute name="data-link">
+ <xsl:value-of select="@link" />
+ </xsl:attribute>
+ </div>
+ </div>
+ </xsl:template>
+
<!--
********
STROFA
<xsl:with-param name="extra-class" select="'reference-inline-box'" />
</xsl:call-template>
<a class="reference">📌</a>
+ <span x-preview="true" x-pass-thru="true">
+ <a target="wiki" title="?">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@href" />
+ </xsl:attribute>
+ <xsl:value-of select="@href" />
+ </a>
+ </span>
</span>
</xsl:template>