v/pol
1
0
mirror of https://github.com/taroved/pol synced 2025-05-27 19:40:09 -07:00

posts html preview

This commit is contained in:
Alexandr Nesterenko 2017-08-22 20:22:52 +00:00
parent 69c4732455
commit 136b892181
4 changed files with 60 additions and 18 deletions

View File

@ -19,6 +19,8 @@ def build_xpath_results(selectors, file_name):
feed_result = None
field_results = {}
extracted_posts = []
success = True
post_elems = None
try:
@ -30,6 +32,7 @@ def build_xpath_results(selectors, file_name):
for elem in post_elems:
selected_required = True
selected_link = True
extracted_post = {}
for name, xpath in field_xpathes.iteritems():
if not (name in field_results):
field_results[name] = {}
@ -39,15 +42,19 @@ def build_xpath_results(selectors, file_name):
if name == 'link':
if not extracts:
selected_link = False
else:
extracted_post[name] = u''.join(extracts)
else:
if not extracts:
selected_required = False
else:
extracted_post[name] = u''.join(extracts)
except ValueError as ex:
success = False
field_results[name]['error'] = ex.message
for name, xpath in field_xpathes.iteritems():
if selected_required:
if selected_required:
for name, xpath in field_xpathes.iteritems():
if name == 'link':
if selected_link:
if 'count' in field_results[name]:
@ -59,6 +66,8 @@ def build_xpath_results(selectors, file_name):
field_results[name]['count'] += 1
else:
field_results[name]['count'] = 1
extracted_posts.append(extracted_post)
else:
for name, xpath in field_xpathes.iteritems():
xpath = xpath.strip()
@ -75,4 +84,4 @@ def build_xpath_results(selectors, file_name):
feed_result = {'error': ex.message}
success = False
return [[feed_result, field_results], success]
return [[feed_result, field_results], extracted_posts, success]

View File

@ -116,6 +116,34 @@ function changed() {
return ch;
}
function showPosts(posts) {
$('.ext-result:not(:first)').remove(); // clear results
$post_tpl = $('.ext-result:first');
posts.forEach(function(post){
var i = 0;
var $post = $post_tpl.clone();
var $post_fields = $post.find('dl > dd > pre');
var $post_dts = $post.find('dl > dt');
var $post_dds = $post.find('dl > dd');
['title', 'link', 'description'].forEach(function(name){
if (name in post) {
$($post_fields[i]).text(post[name].trim());
$($post_fields[i]).addClass('prettyprint');
}
else {
$($post_dts[i]).remove();
$($post_dds[i]).remove();
}
i++;
});
$post.appendTo($post_tpl.parent());
$post[0].style.display = null; // show
});
$('#ext-results')[0].style.display = posts.length > 0 ? 'block' : 'none';
PR.prettyPrint();
}
function active() {
return _active;
}
@ -139,6 +167,9 @@ function show_ext(show) {
$("#st-clicker-trigger")[0].style.display = show ? "inline-block" : "none";
$("#st-extended")[0].style.display = show ? "block" : "none";
$("#st-clicker")[0].style.display = !show ? "block" : "none";
if (!show)
$('#ext-results')[0].style.display = 'none';
_active = show;
}
@ -196,6 +227,7 @@ $(document).ready(function(){
loader(true);
validateSelectors().then(function(res){
ET.updateUIMessages(res.messages);
showPosts(res.posts);
hide_check_show_create(res.success);
//unfreez UI
loader(false);
@ -218,7 +250,6 @@ $(document).ready(function(){
return true;
});*/
PR.prettyPrint()
});

View File

@ -123,7 +123,7 @@
</div>
<style>
.ext-results {
#ext-results {
position: relative;
margin: 15px 0;
padding: 19px 9px 4px;
@ -133,8 +133,8 @@
-moz-border-radius: 4px;
border-radius: 4px;
}
.ext-results:after {
content: "Результат";
#ext-results:after {
content: "{% trans 'setup.found_posts' %}";
position: absolute;
top: -1px;
left: -1px;
@ -148,20 +148,22 @@
-moz-border-radius: 4px 0 4px 0;
border-radius: 4px 0 4px 0;
}
.ext-results pre.prettyprint {
#ext-results pre.prettyprint {
display: inline-block;
margin: 0;
}
</style>
<div class="ext-results" style="display:block; clear: both">
<div id="ext-results" style="display:none; clear:both">
<ol>
<li>
<li class="ext-result" style="display:none">
<dl>
<dt>Title:</dt>
<dd><pre class="prettyprint lang-html">&lt;body&gt;&lt;h1&gt;Hello world!&lt;/h1&gt;&lt;/body&gt;</pre></dd>
<dt>Description:</dt>
<dd><pre class="prettyprint lang-html">&lt;body&gt;&lt;h1&gt;Hello world!&lt;/h1&gt;&lt;/body&gt;</pre></dd>
<dt>{% trans 'setup.title' %}:</dt>
<dd><pre class="lang-html"></pre></dd>
<dt>{% trans 'setup.link' %}:</dt>
<dd><pre class="lang-html"></pre></dd>
<dt>{% trans 'setup.description' %}:</dt>
<dd><pre class="lang-html"></pre></dd>
</dl>
</li>
</ol>

View File

@ -170,9 +170,9 @@ def setup_validate_selectors(request):
if not validated_selectors:
return HttpResponseBadRequest('selectors are invalid')
results, success = build_xpath_results(validated_selectors, file_name)
messages, posts, success = build_xpath_results(validated_selectors, file_name)
return HttpResponse(json.dumps({'success': success, 'messages': results}))
return HttpResponse(json.dumps({'success': success, 'messages': messages, 'posts': posts}))
def setup_create_feed_ext(request):
if request.method == 'POST':
@ -191,14 +191,14 @@ def setup_create_feed_ext(request):
if not validated_selectors:
return HttpResponseBadRequest('selectors are invalid')
results, success = build_xpath_results(validated_selectors, file_name)
messages, posts, success = build_xpath_results(validated_selectors, file_name)
if success:
url = obj['url']
feed_id = _create_feed(url, validated_selectors, True)
return HttpResponse(json.dumps({'success': True, 'url': reverse('preview', args=(feed_id,))}))
else:
return HttpResponse(json.dumps({'success': False, 'messages': results}))
return HttpResponse(json.dumps({'success': False, 'messages': messages}))
def preview(request, feed_id):
if request.method == 'GET':