Subversion Repositories SmartDukaan

Rev

Rev 35583 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
35549 ranu 1
<style>
2
    .quill-editor {
3
        height: 250px;
4
    }
5
 
6
    .quill-editor .ql-editor {
7
        min-height: 200px;
8
        font-size: 14px;
9
    }
10
 
11
    .uploaded-file-item {
12
        margin-top: 6px;
13
        font-size: 13px;
14
        color: #3a8bbf;
15
        font-weight: 500;
16
    }
17
 
18
    .uploaded-file-item i {
19
        margin-right: 6px;
20
        color: #3a8bbf;
21
    }
22
 
23
</style>
24
 
25
 
26
<section class="wrapper">
27
    <div class="row">
28
        <div class="col-lg-12">
29
            <h3 class="page-header"><i class="icon_document_alt"></i>Post Bulletin</h3>
30
            <ol class="breadcrumb">
31
                <li><i class="fa fa-home"></i><a href="${rc.contextPath}/dashboard">Home</a></li>
32
                <li><i class="icon_document_alt"></i>Post Bulletin</li>
33
            </ol>
34
        </div>
35
    </div>
36
    <div class="row">
37
        <div class="col-lg-12">
38
            <form method="post" action="${rc.contextPath}/bulletin/save">
39
 
40
                <div class="row">
41
                    <div class="col-md-8">
42
                        <!-- Title -->
43
                        <div class="form-group">
44
                            <label>Title</label>
45
                            <input type="text" id="btitle" class="form-control" required>
46
                        </div>
47
                    </div>
48
 
49
                    <div class="col-md-4">
50
                        <!-- Region -->
51
                        <div class="form-group">
52
                            <label>Region</label>
53
                            <select id="bregionId" class="form-control" required>
54
                                #foreach($region in $regionList)
55
                                    <option value="$region.getId()">$region.getName()</option>
56
                                #end
57
                            </select>
58
                        </div>
59
                    </div>
60
                </div>
61
 
62
                <div class="row">
63
                    <div class="col-md-12">
64
 
65
                        <div class="form-group">
66
                            <img id="imgPreview" style="max-width:200px; display:none; margin-top:10px;"/>
67
                        </div>
68
                        <div class="form-group">
69
                            <div id="uploadedFileList"></div>
70
                        </div>
71
                    </div>
72
                </div>
73
 
74
                <!-- Description (Editor) -->
75
                <div class="form-group">
76
                    <label>Description</label>
77
                    <div id="bulletinEditor" class="quill-editor"></div>
78
                </div>
79
 
80
 
81
                <button type="submit" class="btn btn-primary post-bulletin-button">
82
                    Post Bulletin
83
                </button>
84
            </form>
85
        </div>
86
    </div>
87
</section>
88
 
89
 
90
<form id="uploadForm" enctype="multipart/form-data" style="display:none">
91
    <input type="file" id="uploadFileInput" name="file"
92
           accept="image/*,.pdf,.csv,.xls,.xlsx">
93
</form>
94
 
95
<input type="hidden" id="bulletinDocumentIds"/>
96
 
97
 
98
<script>
99
    var quill;
100
    var uploadedDocumentIds = [];
101
 
102
    $(document).ready(function () {
103
        quill = new Quill('#bulletinEditor', {
104
            theme: 'snow',
105
            modules: {
106
                toolbar: {
107
                    container: [
108
                        [{font: []}, {size: []}],
109
                        ['bold', 'italic', 'underline'],
110
                        [{color: []}, {background: []}],
111
                        [{header: 1}, {header: 2}],
112
                        [{list: 'ordered'}, {list: 'bullet'}],
113
                        [{align: []}],
114
                        ['link', 'image'],   // image button kept
115
                        ['clean']
116
                    ],
117
                    handlers: {
118
                        image: imageHandler
119
                    }
120
                }
121
            }
122
        });
123
    });
124
 
125
    function imageHandler() {
126
        const input = document.getElementById('uploadFileInput');
127
        input.value = '';
128
        input.click();
129
 
130
        input.onchange = function () {
131
            const file = input.files[0];
132
            if (!file) return;
133
            const fileList = document.getElementById("uploadedFileList");
134
 
135
            // Show preview ONLY for image
136
            if (file.type.startsWith("image/")) {
137
                const preview = document.getElementById("imgPreview");
138
                preview.src = URL.createObjectURL(file);
139
                preview.style.display = "block";
140
            }
141
            // NON-IMAGE FILE (PDF, CSV, XLS)
142
            else {
143
                const fileItem = document.createElement("div");
144
                fileItem.className = "uploaded-file-item";
145
                fileItem.innerHTML = `
146
            <i class="fa fa-file"></i>
147
            <span>${file.name}</span>
148
        `;
149
                fileList.appendChild(fileItem);
150
            }
151
 
152
            // ✅ Reuse existing working upload method
153
            uploadDocument(file, function (documentId) {
154
 
155
                // Store document id
156
                uploadedDocumentIds.push(documentId);
157
                $("#bulletinDocumentIds").val(uploadedDocumentIds.join(","));
158
                // Success message
159
                bootbox.alert("File uploaded successfully");
160
 
161
            });
162
        };
163
    }
164
</script>
165
 
166