Neuer Editor

Und Suche sollte nun laufen - das war eine alte File?!?!?
This commit is contained in:
Holger Trampe 2019-12-16 16:52:35 +01:00
parent d1f4b868c6
commit 89fa8910de
24 changed files with 77 additions and 44 deletions

View File

@ -42,7 +42,7 @@ urlpatterns = [
if settings.DEBUG: if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [ #urlpatterns += [
path('ckeditor/upload/', login_required(upload), name='ckeditor_upload'), # path('ckeditor/upload/', login_required(upload), name='ckeditor_upload'),
path('ckeditor/', include('ckeditor_uploader.urls')), # path('ckeditor/', include('ckeditor_uploader.urls')),
] #]

View File

@ -2,7 +2,7 @@ from bootstrap_datepicker_plus import DatePickerInput
from django import forms from django import forms
from django.forms import ModelForm from django.forms import ModelForm
from .models import News from .models import News
from ckeditor.widgets import CKEditorWidget #from ckeditor.widgets import CKEditorWidget
class NewsAddNews(forms.ModelForm): class NewsAddNews(forms.ModelForm):
@ -13,14 +13,15 @@ class NewsAddNews(forms.ModelForm):
labels = { labels = {
"name" : "Titel", "name" : "Titel",
"go_online_on" : "Veröffentlichen", "go_online_on" : "Veröffentlichen",
"go_offline_on" : "Ins Archiv" "go_offline_on" : "Ins Archiv",
"content" : "Inhalt"
} }
fields = ['name', 'go_online_on', 'go_offline_on'] fields = ['name', 'go_online_on', 'go_offline_on', 'content']
widgets = { widgets = {
'go_online_on': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}), 'go_online_on': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}),
'go_offline_on': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}), 'go_offline_on': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}),
} }
'''
class NewsAddNewsEditor(forms.ModelForm): class NewsAddNewsEditor(forms.ModelForm):
class Meta: class Meta:
@ -29,7 +30,4 @@ class NewsAddNewsEditor(forms.ModelForm):
"content" : "Inhalt" "content" : "Inhalt"
} }
fields = ['content'] fields = ['content']
'''

View File

@ -3,14 +3,15 @@ from django.contrib.auth.models import User
from users.models import Agency from users.models import Agency
from django.urls import reverse from django.urls import reverse
import datetime import datetime
from ckeditor_uploader.fields import RichTextUploadingField #from ckeditor_uploader.fields import RichTextUploadingField
from bootstrap_datepicker_plus import DatePickerInput from bootstrap_datepicker_plus import DatePickerInput
class News(models.Model): class News(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.CASCADE) agency = models.ForeignKey(Agency, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=False, default="") name = models.CharField(max_length=200, blank=False, default="")
content = RichTextUploadingField(blank=True, verbose_name='Inhalt') #content = RichTextUploadingField(blank=True, verbose_name='Inhalt')
content = models.TextField(blank=True, verbose_name='Inhalt')
created_by = models.ForeignKey(User, on_delete=models.PROTECT) created_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_date = models.DateTimeField(default=datetime.datetime.now(), blank=True) created_date = models.DateTimeField(default=datetime.datetime.now(), blank=True)

View File

@ -8,11 +8,16 @@
{% csrf_token %} {% csrf_token %}
{{normalForm.media}} {{normalForm.media}}
{{normalForm|crispy}} {{normalForm|crispy}}
{{editorForm.media}}
{{editorForm}}
<hr> <hr>
<button type="submit" class="btn btn-success" href="{% url 'news-add' %} ">News speichern</button>&nbsp; <button type="submit" class="btn btn-success" href="{% url 'news-add' %} ">News speichern</button>&nbsp;
<a class="btn" href="{% url 'news-management' %} ">Abbrechen</a> <a class="btn" href="{% url 'news-management' %} ">Abbrechen</a>
</form> </form>
</div> </div>
<script type="text/javascript">
$(document).ready(function() {
$('#id_content').summernote({
height: 400
});
});
</script>
{% endblock content %} {% endblock content %}

View File

@ -8,11 +8,16 @@
{% csrf_token %} {% csrf_token %}
{{normalForm.media}} {{normalForm.media}}
{{normalForm|crispy}} {{normalForm|crispy}}
{{editorForm.media}}
{{editorForm}}
<hr> <hr>
<button type="submit" class="btn btn-success" href="{% url 'news-update' news_id %} ">Aktualisieren</button>&nbsp; <button type="submit" class="btn btn-success" href="{% url 'news-update' news_id %} ">Aktualisieren</button>&nbsp;
<a class="btn" href="{% url 'news-management' %} ">Abbrechen</a> <a class="btn" href="{% url 'news-management' %} ">Abbrechen</a>
</form> </form>
</div> </div>
<script type="text/javascript">
$(document).ready(function() {
$('#id_content').summernote({
height: 400
});
});
</script>
{% endblock content %} {% endblock content %}

View File

@ -3,7 +3,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .models import News from .models import News
from .forms import NewsAddNews, NewsAddNewsEditor from .forms import NewsAddNews
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from datetime import datetime from datetime import datetime
from django.contrib import messages from django.contrib import messages
@ -31,14 +31,15 @@ class NewsAddNews(LoginRequiredMixin, CreateView):
def NewsAdd(request): def NewsAdd(request):
if request.method == 'POST': if request.method == 'POST':
normalForm = NewsAddNews(request.POST, instance=request.user) normalForm = NewsAddNews(request.POST, instance=request.user)
editorForm = NewsAddNewsEditor(request.POST, instance=request.user) #editorForm = NewsAddNewsEditor(request.POST, instance=request.user)
if editorForm.is_valid() and normalForm.is_valid(): #if editorForm.is_valid() and normalForm.is_valid():
if normalForm.is_valid():
normalForm.agency = request.user.profile.agency normalForm.agency = request.user.profile.agency
normalForm.created_by = request.user normalForm.created_by = request.user
normalForm.last_modified_by = request.user normalForm.last_modified_by = request.user
normalForm.save() normalForm.save()
editorForm.save() #editorForm.save()
new_news = News() new_news = News()
new_news.agency = request.user.profile.agency new_news.agency = request.user.profile.agency
new_news.created_by = request.user new_news.created_by = request.user
@ -48,7 +49,7 @@ def NewsAdd(request):
new_news.last_modified_on = datetime.now() new_news.last_modified_on = datetime.now()
new_news.name = normalForm.cleaned_data['name'] new_news.name = normalForm.cleaned_data['name']
new_news.content = editorForm.cleaned_data['content'] new_news.content = normalForm.cleaned_data['content']
new_news.go_online_on = normalForm.cleaned_data['go_online_on'] new_news.go_online_on = normalForm.cleaned_data['go_online_on']
new_news.go_offline_on = normalForm.cleaned_data['go_offline_on'] new_news.go_offline_on = normalForm.cleaned_data['go_offline_on']
@ -58,12 +59,12 @@ def NewsAdd(request):
else: else:
normalForm = NewsAddNews(instance=request.user) normalForm = NewsAddNews(instance=request.user)
editorForm = NewsAddNewsEditor(instance=request.user) #editorForm = NewsAddNewsEditor(instance=request.user)
context = { context = {
'normalForm' : normalForm, 'normalForm' : normalForm,
'editorForm' : editorForm, #'editorForm' : editorForm,
'active_link' : 'newsmanagement' 'active_link' : 'newsmanagement'
} }
return render(request, 'news/news_addnews.html', context) return render(request, 'news/news_addnews.html', context)
@ -73,28 +74,28 @@ def NewsUpdate(request, id):
news = News.objects.get(pk=id) news = News.objects.get(pk=id)
if request.method == 'POST': if request.method == 'POST':
normalForm = NewsAddNews(request.POST, instance=news) normalForm = NewsAddNews(request.POST, instance=news)
editorForm = NewsAddNewsEditor(request.POST, instance=news) #editorForm = NewsAddNewsEditor(request.POST, instance=news)
if editorForm.is_valid() and normalForm.is_valid(): if normalForm.is_valid():
news = News.objects.get(pk=id) news = News.objects.get(pk=id)
news.last_modified_by = request.user news.last_modified_by = request.user
news.last_modified_on = datetime.now() news.last_modified_on = datetime.now()
news.go_online_on = normalForm.cleaned_data['go_online_on'] news.go_online_on = normalForm.cleaned_data['go_online_on']
news.go_offline_on = normalForm.cleaned_data['go_offline_on'] news.go_offline_on = normalForm.cleaned_data['go_offline_on']
news.name = normalForm.cleaned_data['name'] news.name = normalForm.cleaned_data['name']
news.content = editorForm.cleaned_data['content'] news.content = normalForm.cleaned_data['content']
news.save() news.save()
messages.success(request, f'News aktualisiert!') messages.success(request, f'News aktualisiert!')
return redirect('/news') return redirect('/news')
else: else:
normalForm = NewsAddNews(instance=news) normalForm = NewsAddNews(instance=news)
editorForm = NewsAddNewsEditor(instance=news) #editorForm = NewsAddNewsEditor(instance=news)
context = { context = {
'normalForm' : normalForm, 'normalForm' : normalForm,
'editorForm' : editorForm, #'editorForm' : editorForm,
'active_link' : 'newsmanagement', 'active_link' : 'newsmanagement',
'news_id' : news.pk, 'news_id' : news.pk,
} }

View File

@ -77,9 +77,6 @@ function connectorDefaults(connector) {
connector.targetDecorator.shape = 'None'; connector.targetDecorator.shape = 'None';
connector.type = 'Orthogonal'; connector.type = 'Orthogonal';
connector.style.strokeColor = 'gray'; connector.style.strokeColor = 'gray';
console.log(connector);
return connector; return connector;
} }

View File

@ -13,8 +13,9 @@ class StandardAddStandard(forms.ModelForm):
"name" : "Titel", "name" : "Titel",
"area" : "Übergeordneter Bereich", "area" : "Übergeordneter Bereich",
"task" : "Aufgabenbereich", "task" : "Aufgabenbereich",
"content": "Inhalt"
} }
fields = ['name', 'area', 'task'] fields = ['name', 'area', 'task', 'content']
''' '''
Hier werden die Elemente für die DropDowns erstellt, damit Hier werden die Elemente für die DropDowns erstellt, damit
@ -59,8 +60,9 @@ class StandardUpdateStandard(forms.ModelForm):
"name" : "Titel", "name" : "Titel",
"area" : "Übergeordneter Bereich", "area" : "Übergeordneter Bereich",
"task" : "Aufgabenbereich", "task" : "Aufgabenbereich",
"content": "Inhalt"
} }
fields = ['name', 'area', 'task'] fields = ['name', 'area', 'task', 'content']
''' '''
Hier werden die Elemente für die DropDowns erstellt, damit Hier werden die Elemente für die DropDowns erstellt, damit

View File

@ -6,7 +6,7 @@ from areas.models import Areas
from tasks.models import Tasks from tasks.models import Tasks
import datetime import datetime
from django.utils import timezone from django.utils import timezone
from ckeditor_uploader.fields import RichTextUploadingField #from ckeditor_uploader.fields import RichTextUploadingField
class Standards(models.Model): class Standards(models.Model):
@ -14,7 +14,8 @@ class Standards(models.Model):
area = models.ForeignKey(Areas, on_delete=models.CASCADE) area = models.ForeignKey(Areas, on_delete=models.CASCADE)
task = models.ForeignKey(Tasks, on_delete=models.CASCADE) task = models.ForeignKey(Tasks, on_delete=models.CASCADE)
name = models.CharField(max_length=200, blank=False, default="") name = models.CharField(max_length=200, blank=False, default="")
content = RichTextUploadingField(blank=True, verbose_name='Inhalt') #content = RichTextUploadingField(blank=True, verbose_name='Inhalt')
content = models.TextField(blank=True, verbose_name='Inhalt')
created_standard_by = models.ForeignKey(User, on_delete=models.PROTECT) created_standard_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_standard_date = models.DateTimeField(default=datetime.datetime.now(), blank=True) created_standard_date = models.DateTimeField(default=datetime.datetime.now(), blank=True)

View File

@ -7,8 +7,7 @@
<form method="POST" id="taskareaform"> <form method="POST" id="taskareaform">
{% csrf_token %} {% csrf_token %}
{{normalForm|crispy}} {{normalForm|crispy}}
{{editorForm.media}}
{{editorForm}}
<p>Wenn ein Standard erstellt wurde, kann er nur von einer Person mit dem Recht <i>Standards bearbeiten und freischalten</i> veröffentlicht werden.</p> <p>Wenn ein Standard erstellt wurde, kann er nur von einer Person mit dem Recht <i>Standards bearbeiten und freischalten</i> veröffentlicht werden.</p>
<hr> <hr>
@ -32,5 +31,11 @@ $("#id_area").change(function () {
} }
}); });
}); });
$(document).ready(function() {
$('#id_content').summernote({
height: 400
});
});
</script> </script>
{% endblock content %} {% endblock content %}

View File

@ -7,8 +7,7 @@
<form method="POST" id="taskareaform"> <form method="POST" id="taskareaform">
{% csrf_token %} {% csrf_token %}
{{normalForm|crispy}} {{normalForm|crispy}}
{{editorForm.media}}
{{editorForm}}
<p>Wenn ein Standard bearbeitet wurde, kann er nur von einer Person mit dem Recht <i>Standards bearbeiten und freischalten</i> wieder veröffentlicht werden. Ein Standard wird nach Bearbeitung als <i>Nicht veröffentlicht</i> gesetzt.</p> <p>Wenn ein Standard bearbeitet wurde, kann er nur von einer Person mit dem Recht <i>Standards bearbeiten und freischalten</i> wieder veröffentlicht werden. Ein Standard wird nach Bearbeitung als <i>Nicht veröffentlicht</i> gesetzt.</p>
<hr> <hr>
<button type="submit" class="btn btn-success" href="{% url 'standard-update' standard_id %} ">Aktualisieren</button>&nbsp; <button type="submit" class="btn btn-success" href="{% url 'standard-update' standard_id %} ">Aktualisieren</button>&nbsp;
@ -39,6 +38,10 @@ $("#id_area").change(function () {
} }
}); });
}); });
$(document).ready(function() {
$('#id_content').summernote({
height: 400
});
});
</script> </script>
{% endblock content %} {% endblock content %}

View File

@ -76,6 +76,7 @@ def StandardAdd(request):
def StandardUpdate(request, id): def StandardUpdate(request, id):
standard = Standards.objects.get(pk=id) standard = Standards.objects.get(pk=id)
if request.method == 'POST': if request.method == 'POST':
#normalForm = StandardUpdateStandard(request.POST, instance=standard)
normalForm = StandardUpdateStandard(request.POST, instance=standard) normalForm = StandardUpdateStandard(request.POST, instance=standard)
editorForm = StandardUpdateStandardEditor(request.POST, instance=standard) editorForm = StandardUpdateStandardEditor(request.POST, instance=standard)
@ -108,6 +109,7 @@ def StandardUpdate(request, id):
return redirect('/standards') return redirect('/standards')
else: else:
#normalForm = StandardUpdateStandard(instance=standard)
normalForm = StandardUpdateStandard(instance=standard) normalForm = StandardUpdateStandard(instance=standard)
editorForm = StandardUpdateStandardEditor(instance=standard) editorForm = StandardUpdateStandardEditor(instance=standard)

View File

@ -28,6 +28,10 @@
<!--<link href="{%static 'users/css/bootstrap.min.css' %}" rel="stylesheet">--> <!--<link href="{%static 'users/css/bootstrap.min.css' %}" rel="stylesheet">-->
<link href='https://fonts.googleapis.com/css?family=Roboto&display=swap' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Roboto&display=swap' rel='stylesheet' type='text/css'>
<!-- include summernote css/js -->
<link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/summernote.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/summernote.js"></script>
</head> </head>
<body id="page-top"> <body id="page-top">
@ -315,6 +319,7 @@
<!-- Page level custom scripts --> <!-- Page level custom scripts -->
<!--<script src="js/demo/chart-area-demo.js"></script>--> <!--<script src="js/demo/chart-area-demo.js"></script>-->
<!--<script src="js/demo/chart-pie-demo.js"></script>--> <!--<script src="js/demo/chart-pie-demo.js"></script>-->
</body> </body>
</html> </html>

View File

@ -14,5 +14,12 @@
</form> </form>
</div> </div>
<script type="text/javascript">
$(document).ready(function() {
$('#id_problem').summernote({
height: 400
});
});
</script>
{% endblock content %} {% endblock content %}

View File

@ -423,6 +423,7 @@ def GlobalSearch(request):
final_results_st.append(tempele) final_results_st.append(tempele)
i += 1 i += 1
''' '''
#return JsonResponse({'standards' : final_results_st}) #return JsonResponse({'standards' : final_results_st})
html = render_to_string('users/searchres.html', {'res_standard': res_standard, 'res_areas': res_areas, 'res_tasks': res_tasks, 'res_pers': res_pers}) html = render_to_string('users/searchres.html', {'res_standard': res_standard, 'res_areas': res_areas, 'res_tasks': res_tasks, 'res_pers': res_pers})
return HttpResponse(html) return HttpResponse(html)