mirror of
https://github.com/taroved/pol
synced 2025-05-27 19:40:09 -07:00
posts html preview
This commit is contained in:
parent
69c4732455
commit
136b892181
@ -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]
|
||||
|
@ -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()
|
||||
});
|
||||
|
||||
|
||||
|
@ -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"><body><h1>Hello world!</h1></body></pre></dd>
|
||||
<dt>Description:</dt>
|
||||
<dd><pre class="prettyprint lang-html"><body><h1>Hello world!</h1></body></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>
|
||||
|
@ -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':
|
||||
|
Loading…
x
Reference in New Issue
Block a user