SpontaneousCMS/spontaneous

View on GitHub
application/js/views/page_piece_view.js

Summary

Maintainability
B
5 hrs
Test Coverage
// console.log('Loading PageEntry...')

Spontaneous.Views.PagePieceView = (function($, S) {
    'use strict';
    var dom = S.Dom;

    var PagePieceView = new JS.Class(Spontaneous.Views.PieceView, {
        // will eventually overwrite panel()
        panel: function() {
            var self = this;
            var wrapper = dom.div(['entry-wrap page no-boxes', self.alias_class(), self.fields_class(), self.depth_class(), self.visibility_class()]);
            var contents = dom.div('.entry-contents');
            var inside = dom.div('.entry-inner');
            var outline = dom.div('.white-bg').mouseover(self.mouseover.bind(self)).mouseout(self.mouseout.bind(self)).click(self.edit.bind(self));
            inside.append(outline);
            contents.append(self.action_buttons(contents));
            if (self.content.type().is_alias()) {
                contents.append(self.alias_target_panel());
            } else {
                contents.append(self.page_title_panel());
            }

            var modification = new S.ModificationStatusPanel(self.content);
            this._subviews.push(modification);
            var modificationPanel = modification.panel();
            contents.append(modificationPanel);

            var entry = dom.div('.entry');
            var fields = new Spontaneous.FieldPreview(self, '', true);
            var fields_panel = fields.panel();
            entry.append(fields_panel);
            inside.append(entry);
            var preview_area = self.create_edit_wrapper(inside);
            contents.append(preview_area);
            wrapper.append(contents, self.entry_spacer());
            self.wrapper = wrapper;
            self.outline = outline;
            self.fields_preview = fields_panel;
            return wrapper;
        },
        page_title_panel: function() {
            var self = this;
            var content = self.content;
            var wrapper = dom.div();
            var load = function() {
                S.Location.load_id(self.id());
            }
            var header = dom.div('.page-title').click(load);
            var path = dom.div('.page-path').text(content.content.path).click(load);
            var title = dom.a().html(content.title());
            var type = dom.span('.content-type').text(content.type().display_title(content));
            content.title_field().watch('value', function(t) { title.html(t); }.bind(this));
            header.append(title, type);
            wrapper.append(header, path);
            return wrapper;
        },
        // shows both a link to the alias and a link to the alias target
        alias_target_panel: function() {
            var content = this.content;
            var wrapper = dom.div();
            var click = function() { S.Location.load_id(content.id()); };
            var alias_click = function() { S.Location.load_id(content.target().page_id); };
            var target = dom.div('.alias-target');//.click(click);
            var icon = content.alias_icon;
            var type = dom.span('.content-type').text(content.type().display_title(content));
            var title = dom.a('.alias-title').html(content.content.title).click(click);
            var alias_title = dom.a('.alias-target-title').html(content.content.alias_title).click(alias_click);

            if (!content.has_fields()) { wrap.addClass('no-fields'); }

            if (icon) {
                var img = new Spontaneous.Image(icon);
                target.append(img.icon(60, 60).click(click));
            }
            var path = dom.div('.page-path').text(content.content.path).click(click);

            target.append(title, alias_title, type);
            return wrapper.append(target, path);
        },
    });
    return PagePieceView;
}(jQuery, Spontaneous));