Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Файл - page.js:
- 991. + if (cur.module == 'feed' && !isVisible(ge('feed_news_bar'))) {
- 992. + cur.onFeedBarShow = Wall.setDraft.pbind(data);
- 993. + return;
- 994. + }
- 1479. - if (top < 0 || top > lastWindowHeight - 200) {
- 1480. + if (top < 0 || top > lastWindowHeight) {
- 1503. - WkView.wallShowPreviousReplies(reply);
- 1504. + WkView.wallShowPreviousPosts(reply);
- 2001. - shift: [(reply && !(reply % 2)) ? 329 : 64, 0, 0],
- 2002. + shift: [(reply && !(reply % 2)) ? 300 : 35, -3, 0],
- 2961. - }
- 2962. - var nameStr = ev[3].replace('mem_link', 'author').replace('memLink', 'author');
- 2963. - if (ev[6].indexOf('id="wpfo') != -1) {
- 2964. - nameStr += '<span class="page_fronly inl_bl" onmouseover="Wall.foTT(this, false, {oid: \'' + oid + '\', pid: \'' + ev[2] + '\'})"></span>';
- 2968. - name: nameStr,
- 2969. + name: ev[3].replace('mem_link', 'author').replace('memLink', 'author'),
- 2982. - date_postfix: '',
- 2983. + date_postfix: (ev[6].indexOf('id="wpfo') != -1) ? '<span class="page_fronly inl_bl" onmouseover="Wall.foTT(this, false, {oid: \'' + oid + '\', pid: \'' + ev[2] + '\'})"></span>' : '',
- 3449. - } else {
- 3450. - updH = el.offsetHeight - startH;
- 3451. - updY = getXY(highlight ? newEl : openEl)[1];
- 3452. - Wall.repliesSideSetup(post_id);
- 3453. - }
- 3454. - break;
- 3455. -
- 3456. - case 'del_reply':
- 3457. - if (cur.wallMyDeleted[post_id] || !el) break;
- 3458. - updH = -el.offsetHeight;
- 3459. - updY = getXY(el, fixed)[1];
- 3460. - // debugLog(ev, post_id, el);
- 3461. - if (cur.layerpost) {
- 3462. - hide(el);
- 3463. - cur.count--;
- 3464. - cur.loaded--;
- 3465. - } else if (cur.onepost) {
- 3466. - hide(el);
- 3467. - cur.pgOffset--;
- 3468. - cur.pgCount--;
- 3469. - } else {
- 3470. - var post = el.parentNode.id.match(/replies(-?\d+_\d+)/);
- 3471. - re(el);
- 3472. - if (post) {
- 3473. - Wall.repliesSideSetup(post[1]);
- 3474. - }
- 3475. - }
- 3476. - break;
- 3477. -
- 3478. - case 'like_post':
- 3479. - case 'like_reply':
- 3480. - if (!el) break;
- 3481. - var likePost = ev_type == 'like_reply' ? post_id.replace('_', '_wall_reply') : post_id,
- 3482. - likeLayerPost = layer && post_id == window.cur.wallLayer,
- 3483. - cntEl = likeLayerPost ? ge('wk_like_count') : ge('like_count' + likePost),
- 3484. - iconEl = likeLayerPost ? ge('wk_like_icon') : ge('like_icon' + likePost),
- 3485. - ttEl = iconEl && iconEl.parentNode,
- 3486. - cnum = intval(val(cntEl)),
- 3487. - num = intval(ev[3]);
- 3488. -
- 3489. - animateCount(cntEl, num);
- 3490. - val('like_real_count_wall' + post_id, num);
- 3491. - toggleClass(iconEl, 'no_likes', num <= 0);
- 3492. - if (ttEl && ttEl.tt && !isVisible(ttEl.tt.container)) {
- 3493. - ttEl && ttEl.tt && ttEl.tt.destroy();
- 3494. - }
- 3495. - setStyle(iconEl, {opacity: '', visibility: ''});
- 3496. - break;
- 3497. -
- 3498. - case 'vote_poll':
- 3499. - if (!el) break;
- 3500. - Wall.updatePollResults(post_id, ev[3]);
- 3501. - break;
- 3502. -
- 3503. -
- 3504. - case 'upd_ci':
- 3505. - var edit = ge('current_info'), info = ev[2], el = edit || ge('page_current_info');
- 3506. - switch (ev[3]) {
- 3507. - case 'audio':
- 3508. - var attr = edit ? '' : (' onmouseover="showTooltip(this, {forcetoup: true, text: \'' + cur.options.ciAudioTip + '\', black: 1, shift: [13, 0, 0]})" onclick="Profile.playCurrent(this, this.getAttribute(\'data-audio\'), \'' + cur.options.ciAudioHash + '\')" data-audio="' + ev[4] + '"');
- 3509. - info = '<a class="current_audio"' + attr + '>' + info + '</a>';
- 3510. - break;
- 3511. -
- 3512. - case 'app':
- 3513. - var shift = ev[6] ? '[11, 0, 0]' : '[13, 0, 0]', addCls = ev[6] ? ' current_app_icon' : '';
- 3514. - var attr = edit ? (' onclick="cur.ciApp = ' + ev[4] + '"') : (' onmouseover="showTooltip(this, {forcetoup: true, text: \'' + cur.options.ciAppTip + '\', black: 1, shift: ' + shift + '})" href="' + ev[5] + '?ref=14" onclick="return showApp(event, ' + ev[4] + ', 1, 14, cur.oid)"');
- 3515. - if (ev[6]) attr += ' style="background-image: url(\'' + ev[6] + '\')"';
- 3516. - info = '<a class="current_app' + addCls + '"' + attr + '>' + info + '</a>';
- 3517. - break;
- 3518. -
- 3519. - default:
- 3520. - info = info ? ('<span class="current_text">' + info + '</span>') : info;
- 3521. - break;
- 3522. - }
- 3523. - if (edit) {
- 3524. - var cls = info ? 'my_current_info' : 'no_current_info';
- 3525. - info = '<span class="' + cls + '">' + (info || getLang('change_current_info')) + '</span>';
- 3526. - val(el.parentNode.nextSibling, info);
- 3527. - if (!isVisible('currinfo_editor') && cur.oid > 0) {
- 3528. - toggle('currinfo_audio', ev[3] != 'app');
- 3529. - toggle('currinfo_app', ev[3] == 'app');
- 3530. - addClass('currinfo_app', 'on');
- 3531. - }
- 3532. - }
- 3533. - val(el, info);
- 3534. - setStyle(el.firstChild, {backgroundColor: '#FEFAE4'});
- 3535. - animate(el.firstChild, {backgroundColor: '#FFF'}, 6000, function () {
- 3536. - setStyle(el.firstChild, {backgroundColor: ''});
- 3537. - });
- 3538. - break;
- 3539. - }
- 3540. - if (updH && (layer ? (updY < 0) : (curST > updY))) {
- 3541. - curST += updH;
- 3542. - }
- 3543. - });
- 3544. - var endST = scrollGetY();
- 3545. - if (curST != startST && startST > 100/* && Math.abs(startST - endST) > 100*/) {
- 3546. - if (layer) {
- 3547. - wkLayerWrap.scrollTop = curST;
- 3548. - } else {
- 3549. - scrollToY(curST, 0);
- 3550. - }
- 3551. - }
- 3552. - Wall.update();
- 3553. - },
- 3554. -
- 3555. - initUpdates: function (key) {
- 3556. - if (!key || !window.Notifier) {
- 3557. - return;
- 3558. - }
- 3559. - var wasKey = cur.wallAddQueue,
- 3560. - checkCb = function () {if (cur.wallAddQueue) Notifier.addKey(cur.wallAddQueue, Wall.updated.pbind(false));};
- 3561. -
- 3562. - cur.wallAddQueue = key;
- 3563. - checkCb();
- 3564. - if (!wasKey) {
- 3565. - checkInt = setInterval(checkCb, 10000);
- 3566. - cur.destroy.push(function () {clearInterval(checkInt)});
- 3567. - }
- 3568. - },
- 3569. -
- 3570. - initWallOptions: function (opts) {
- 3571. - extend(cur, {
- 3572. - wallType: opts.wall_type,
- 3573. - wallTpl: opts.wall_tpl,
- 3574. - wallMyDeleted: {},
- 3575. - tsDiff: opts.wall_tpl && opts.wall_tpl.abs_timestamp ? Math.round((vkNow() / 1000 - opts.wall_tpl.abs_timestamp) / 900.0) * 900 : 0,
- 3576. - wallMyOpened: {},
- 3577. - wallMyReplied: {},
- 3578. - wallMyRepliesCnt: 0
- 3579. - });
- 3580. - if (opts.wall_tpl && opts.wall_tpl.lang) {
- 3581. - cur.lang = extend(cur.lang || {}, opts.wall_tpl.lang);
- 3582. - }
- 3583. -
- 3584. - window.Notifier && Notifier.addRecvClbk('wall_reply_multiline', 'wall', function(data) {
- 3585. - Wall.onReplySubmitChanged(data.value, 1);
- 3586. - }, true);
- 3587. - },
- 3588. -
- 3589. - init: function(opts) {
- 3590. - Wall.initWallOptions(opts);
- 3591. -
- 3592. - extend(cur, {
- 3593. - wallInited: true,
- 3594. - postField: ge('post_field'),
- 3595. - wallPage: ge('profile') || ge('group') || ge('public'),
- 3596. - wallPageNarrow: ge('profile_narrow') || ge('group_narrow'),
- 3597. - wallPageWide: false,
- 3598. - wallUploadOpts: opts.upload || false,
- 3599. - deletedCnts: {own: 0, all: 0}
- 3600. - });
- 3601. -
- 3602. - cur.destroy.push(function(c) {
- 3603. - cleanElems(c.postField);
- 3604. - });
- 3605. - var rem = removeEvent.pbind(document, 'click', Wall.hideEditPostReply);
- 3606. -
- 3607. - if (cur._back) {
- 3608. - cur._back.hide.push(rem);
- 3609. - cur._back.show.push(rem);
- 3610. - cur._back.show.push(addEvent.pbind(document, 'click', Wall.hideEditPostReply));
- 3611. - } else {
- 3612. - cur.destroy.push(rem);
- 3613. - }
- 3614. - var ownCnt = ge('page_wall_count_own');
- 3615. - if (cur.wallType == 'own' && !intval(ownCnt && ownCnt.value)) {
- 3616. - cur.wallType = ge('page_wall_posts').className = 'all';
- 3617. - }
- 3618. - Wall.update();
- 3619. - Wall.initUpdates(opts.add_queue_key);
- 3620. -
- 3621. - // Times update interval. For relative time correction
- 3622. - if (opts.wall_tpl) {
- 3623. - cur.timeUpdateInt = setInterval(function () {Wall.updateTimes(opts.wallCont);}, 10000);
- 3624. - cur.destroy.push(function () {clearInterval(cur.timeUpdateInt);});
- 3625. - }
- 3626. -
- 3627. - if (opts.draft) {
- 3628. - Wall.setDraft(opts.draft);
- 3629. - }
- 3630. -
- 3631. - var scrollNode = browser.msie6 ? pageNode : window;
- 3632. - addEvent(scrollNode, 'scroll', Wall.scrollCheck);
- 3633. - addEvent(window, 'resize', Wall.scrollCheck);
- 3634. - cur.destroy.push(function () {
- 3635. - removeEvent(scrollNode, 'scroll', Wall.scrollCheck);
- 3636. - removeEvent(window, 'resize', Wall.scrollCheck);
- 3637. - });
- 3638. - cur.wallAutoMore = opts.automore;
- 3639. -
- 3640. - placeholderSetup(cur.postField);
- 3641. -
- 3642. - removeEvent(document, 'click', Wall.hideEditPostReply);
- 3643. - addEvent(document, 'click', Wall.hideEditPostReply);
- 3644. -
- 3645. - if (opts.media_types) {
- 3646. - cur.wallAddMedia = initAddMedia(ge('page_add_media').firstChild, 'media_preview', opts.media_types, {
- 3647. - onMediaAdd: function() {
- 3648. - if (cur.module == 'profile' || cur.module == 'feed' || cur.module == 'wall') {
- 3649. - Wall.postChanged(val('post_field'), true);
- 3650. - }
- 3651. - }
- 3652. - });
- 3653. - cur.wallAddMedia.onChange = function() {
- 3654. - //Wall.checkPostLen('post_field', 'post_warn', val('post_field'), true);
- 3655. - }
- 3656. - }
- 3657. - cur.withUpload = window.WallUpload && !(browser.msie111 || browser.safari_mobile) && (cur.wallType == 'all' || cur.wallType == 'own' || cur.wallType == 'feed') && Wall.withMentions && cur.wallUploadOpts;
- 3658. - if (cur.withUpload && WallUpload.checkDragDrop()) {
- 3659. - var clean = function () {
- 3660. - removeEvent(document, 'dragover dragenter drop dragleave', cb);
- 3661. - },
- 3662. - cb = function (e) {
- 3663. - if (dragtimer !== false) {
- 3664. - clearTimeout(dragtimer);
- 3665. - dragtimer = false;
- 3666. - }
- 3667. - if (cur.uploadInited) {
- 3668. - clean();
- 3669. - return cancelEvent(e);
- 3670. - }
- 3671. - switch (e.type) {
- 3672. - case 'drop':
- 3673. - started = false;
- 3674. - delete cur.wallUploadFromDrag;
- 3675. - hide('post_upload_dropbox');
- 3676. - break;
- 3677. -
- 3678. - case 'dragleave':
- 3679. - dragtimer = setTimeout(function () {
- 3680. - started = false;
- 3681. - delete cur.wallUploadFromDrag;
- 3682. - hide('post_upload_dropbox');
- 3683. - }, 100);
- 3684. - break;
- 3685. -
- 3686. - case 'dragover':
- 3687. - case 'dragenter':
- 3688. - if (!started) {
- 3689. - started = (e.target && (e.target.tagName == 'IMG' || e.target.tagName == 'A')) ? 1 : 2;
- 3690. - if (started == 2) {
- 3691. - setTimeout(Wall.showEditPost, 0);
- 3692. - }
- 3693. - }
- 3694. - if (started == 2) {
- 3695. - cur.wallUploadFromDrag = 1;
- 3696. - }
- 3697. - }
- 3698. - return cancelEvent(e);
- 3699. - },
- 3700. - started = false,
- 3701. - dragtimer = false;
- 3702. - addEvent(document, 'dragover dragenter drop dragleave', cb);
- 3703. - cur.destroy.push(clean);
- 3704. - }
- 3705. - cur.nav.push(function(changed, old, n) {
- 3706. - if (!changed[0] && changed.fixed != undefined) {
- 3707. - Page.toggleFixedPost(cur.oid+'_'+cur.options['fixed_post_id']);
- 3708. - nav.setLoc(n);
- 3709. - return false;
- 3710. - }
- 3711. - });
- 3712. - },
- 3713. - switchOwner: function(obj, sw) {
- 3714. - obj.innerHTML = '<div class="progress_inline"></div>';
- 3715. - nav.change({owners_only: sw});
- 3716. - }
- 3717. - }
- 3718. -
- 3719. - var wall = extend(Wall, {
- 3720. - showDeletePost: Wall._animDelX.pbind(0.3),
- 3721. - hideDeletePost: Wall._animDelX.pbind(0),
- 3722. - activeDeletePost: function(post, tt, action) {
- 3723. - Wall._animDelX(1, 1, post, action);
- 3724. - if (tt) showTooltip(ge((action || 'delete_post') + post), {text: tt, showdt: 0, black: 1, shift: [14, 3, 3]});
- 3725. - },
- 3726. - deactiveDeletePost: Wall._animDelX.pbind(0.3, 0)
- 3727. - });
- 3728. -
- 3729. - WallUpload = {
- 3730. - photoUploaded: function(info, params) {
- 3731. - var i = info.ind !== undefined ? info.ind : info,
- 3732. - fileName = info.fileName ? info.fileName : info,
- 3733. - ind = info.fileName ? i + '_' + info.fileName : info,
- 3734. - prg = ge('upload' + ind + '_progress_wrap');
- 3735. -
- 3736. - prg && hide(geByClass1('progress_x', prg));
- 3737. - ajax.post('al_photos.php', extend({act: 'choose_uploaded'}, params), {
- 3738. - onDone: function(media, data) {
- 3739. - cur.wallAddMedia.chooseMedia('photo', media, extend(data, {upload_ind: i + '_' + fileName}));
- 3740. - },
- 3741. - onFail: WallUpload.uploadFailed.pbind(info)
- 3742. - });
- 3743. - },
- 3744. - uploadFailed: function(info, code) {
- 3745. - var i = info.ind !== undefined ? info.ind : info, fileName = info.fileName ? info.fileName : info;
- 3746. - if (Upload.types[i] == 'fileApi' && !Upload.options[i].wiki_editor) {
- 3747. - var lnkId, ind = info.fileName ? i+'_'+info.fileName : info;
- 3748. - if (cur.imMedia) {
- 3749. - re('upload'+ind+'_progress_wrap');
- 3750. - lnkId = cur.imMedia.lnkId;
- 3751. - cur.addMedia[lnkId].unchooseMedia();
- 3752. - } else if (cur.addMedia) {
- 3753. - re('upload'+ind+'_progress_wrap');
- 3754. - lnkId = (cur.attachMediaIndexes || {})[fileName];
- 3755. - if (lnkId) cur.addMedia[lnkId].unchooseMedia();
- 3756. - }
- 3757. - }
- 3758. - // hide(box.progress);
- 3759. - topError('Upload failed', {dt: -1, type: 102, url: (ge('file_uploader_form' + i) || {}).action});
- 3760. - Upload.embed(i);
- 3761. - },
- 3762. - show: function () {
- 3763. - if (!cur.uploadInited) return;
- 3764. - var s = {};
- 3765. - if (cur.wallType == 'feed') {
- 3766. - removeClass(cur.uploadWrap, 'post_upload_min_wrap');
- 3767. - s.width = 515;
- 3768. - s[vk.rtl ? 'paddingLeft' : 'paddingRight'] = 35;
- 3769. - } else {
- 3770. - show(cur.uploadWrap);
- 3771. - s.width = 340;
- 3772. - s[vk.rtl ? 'paddingLeft' : 'paddingRight'] = 35;
- 3773. - }
- 3774. - setStyle('post_field', s);
- 3775. - },
- 3776. - hide: function () {
- 3777. - if (!cur.uploadInited) return;
- 3778. - var s = {};
- 3779. - if (cur.wallType == 'feed') {
- 3780. - addClass(cur.uploadWrap || ge('post_preupload_wrap'), 'post_upload_min_wrap');
- 3781. - s.width = 515;
- 3782. - s[vk.rtl ? 'paddingLeft' : 'paddingRight'] = 35;
- 3783. - } else {
- 3784. - hide(cur.uploadWrap);
- 3785. - s.width = 372;
- 3786. - s[vk.rtl ? 'paddingLeft' : 'paddingRight'] = 3;
- 3787. - }
- 3788. - setStyle('post_field', s);
- 3789. - hide('post_upload_dropbox');
- 3790. - },
- 3791. - checkDragDrop: function() {
- 3792. - var b = browser, bv = floatval(browser.version);
- 3793. - if (!(b.msie && bv >= 9 || b.mozilla && bv >= 3.5 || b.chrome || b.safari)) { // Drag'n'Drop reqs
- 3794. - return false;
- 3795. - }
- 3796. - return (window.XMLHttpRequest || window.XDomainRequest) &&
- 3797. - (window.FormData || window.FileReader && (window.XMLHttpRequest && XMLHttpRequest.sendAsBinary || window.ArrayBuffer && window.Uint8Array && (window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)));
- 3798. - },
- 3799. - preinit: function () {
- 3800. - var data = cur.wallUploadOpts,
- 3801. - field = ge('post_field'),
- 3802. - tt = WallUpload.checkDragDrop() ? ' onmouseover="showTooltip(this, {text: \'' + (data.opts.lang.wall_photos_drag_hint || 'You can also drop files here') + '\', black: 1, shift: [3, -6, 0]})"' : '';
- 3803. - field.parentNode.insertBefore(cur.uploadWrap = ce('div', {
- 3804. - className: 'post_upload_wrap post_upload_min_wrap',
- 3805. - id: 'post_preupload_wrap',
- 3806. - innerHTML: '<div id="post_field_upload" class="post_upload"' + tt + '><input class="file" type="file" size="28" onchange="data(this, \'changed\', true); Wall.showEditPost();" ' + (browser.opera ? '' : 'multiple="true" ') + 'accept="image/jpeg,image/png,image/gif" name="photo"/></div>'
- 3807. - }), field);
- 3808. - },
- 3809. - init: function () {
- 3810. - removeEvent(bodyNode, 'dragover dragenter');
- 3811. - var preinited = ge('post_preupload_wrap'),
- 3812. - fileinput = preinited && geByTag1('input', preinited),
- 3813. - data = cur.wallUploadOpts,
- 3814. - field = ge('post_field'),
- 3815. - tt = WallUpload.checkDragDrop() ? ' onmouseover="showTooltip(this, {text: \'' + (data.opts.lang.wall_photos_drag_hint || 'You can also drop files here') + '\', black: 1, shift: [3, -10, 0]})"' : '';
- 3816. -
- 3817. - if (preinited) {
- 3818. - var btn = preinited.firstChild;
- 3819. - if (btn.tt && btn.tt.el) {
- 3820. - btn.tt.destroy();
- 3821. - }
- 3822. - re(preinited);
- 3823. - }
- 3824. - field.parentNode.insertBefore(cur.uploadWrap = ce('div', {
- 3825. - className: 'post_upload_wrap fl_r',
- 3826. - innerHTML: '<div id="post_field_upload" class="post_upload"' + tt + '></div>'
- 3827. - }), field);
- 3828. - var submitBox = ge('submit_post_box');
- 3829. - submitBox.insertBefore(ce('div', {
- 3830. - id: 'post_upload_dropbox',
- 3831. - className: 'post_upload_dropbox',
- 3832. - innerHTML: '<div class="post_upload_dropbox_inner noselect"><span class="post_upload_drop_label">' + (data.opts.lang.wall_drop_photos_here || 'Drop files here') + '</span><span class="post_upload_release_label">' + (data.opts.lang.wall_release_photos_here || 'Release button to attach files') + '</span></div>'
- 3833. - }), submitBox.firstChild);
- 3834. -
- 3835. - Upload.init('post_field_upload', data.url, data.params, {
- 3836. - file_name: 'photo',
- 3837. - file_size_limit: 1024 * 1024 * 5, // 5Mb
- 3838. - file_types_description: 'Image files (*.jpg, *.png, *.gif)',
- 3839. - file_types: '*.jpg;*.JPG;*.png;*.PNG;*.gif;*.GIF',
- 3840. - file_input: fileinput,
- 3841. - accept: 'image/jpeg,image/png,image/gif',
- 3842. - file_match: data.opts.ext_re,
- 3843. - lang: data.opts.lang,
- 3844. - wiki_editor: 0,
- 3845. -
- 3846. - onUploadStart: function(info, res) {
- 3847. - var i = info.ind !== undefined ? info.ind : info, options = Upload.options[i];
- 3848. - if (Upload.types[i] == 'form') {
- 3849. - // show(box.progress);
- 3850. - geByClass1('file', ge('choose_photo_upload')).disabled = true;
- 3851. - }
- 3852. - if (Upload.types[i] == 'fileApi') {
- 3853. - if (cur.notStarted) {
- 3854. - boxQueue.hideLast();
- 3855. - delete cur.notStarted;
- 3856. - }
- 3857. - if (options.multi_progress) this.onUploadProgress(info, 0, 0);
- 3858. - }
- 3859. - },
- 3860. - onUploadComplete: function(info, res) {
- 3861. - var params, i = info.ind !== undefined ? info.ind : info, fileName = info.fileName ? info.fileName : info;
- 3862. - try {
- 3863. - params = eval('(' + res + ')');
- 3864. - } catch(e) {
- 3865. - params = q2ajx(res);
- 3866. - }
- 3867. - if (!params.photos) {
- 3868. - Upload.onUploadError(info);
- 3869. - return;
- 3870. - }
- 3871. - WallUpload.photoUploaded(info, params);
- 3872. - },
- 3873. - onUploadProgress: function(info, bytesLoaded, bytesTotal) {
- 3874. - var i = info.ind !== undefined ? info.ind : info;
- 3875. - if (Upload.types[i] == 'fileApi') {
- 3876. - var lnkId = (cur.attachMediaIndexes || {})[i];
- 3877. - if (lnkId === undefined || lnkId && cur.addMedia[lnkId].chosenMedia || cur.imMedia) {
- 3878. - var data = {loaded: bytesLoaded, total: bytesTotal};
- 3879. - if (info.fileName) data.fileName = info.fileName;
- 3880. - cur.wallAddMedia.showMediaProgress('photo', i, data);
- 3881. - }
- 3882. - }
- 3883. - },
- 3884. - onUploadError: WallUpload.uploadFailed,
- 3885. - onCheckServerFailed: function () {
- 3886. - delete cur.uploadInited;
- 3887. - WallUpload.hide();
- 3888. - },
- 3889. - onUploadCompleteAll: function (i) {
- 3890. - if (Upload.types[i] == 'form') {
- 3891. - Upload.embed(i);
- 3892. - }
- 3893. - },
- 3894. - onDragEnter: function () {
- 3895. - Wall.showEditPost();
- 3896. - var dropEl = ge('post_upload_dropbox').firstChild,
- 3897. - h = ge('submit_post_box').offsetHeight - (browser.webkit || browser.chrome ? 2 : 0);
- 3898. - if (cur.wallType != 'feed') {
- 3899. - h -= 16;
- 3900. - }
- 3901. - setStyle(dropEl, {height: h});
- 3902. - },
- 3903. -
- 3904. - noFlash: 1,
- 3905. - multiple: 1,
- 3906. - multi_progress: 1,
- 3907. - max_files: 10,
- 3908. - chooseBox: 1,
- 3909. - clear: 1,
- 3910. - type: 'photo',
- 3911. - max_attempts: 3,
- 3912. - server: data.opts.server,
- 3913. - error: data.opts.default_error,
- 3914. - error_hash: data.opts.error_hash,
- 3915. - dropbox: 'post_upload_dropbox',
- 3916. - label: data.opts.label,
- 3917. - dragEl: bodyNode
- 3918. - });
- 3919. - cur.uploadInited = true;
- 3920. - WallUpload.show();
- 3921. - if (cur.wallUploadFromDrag) {
- 3922. - if (cur.wallUploadFromDrag == 1) {
- 3923. - var dropEl = ge('post_upload_dropbox'),
- 3924. - h = ge('submit_post_box').offsetHeight - (browser.webkit || browser.chrome ? 2 : 0);
- 3925. - if (cur.wallType != 'feed') {
- 3926. - h -= 16;
- 3927. - }
- 3928. - setStyle(dropEl.firstChild, {height: h});
- 3929. - show(dropEl);
- 3930. - }
- 3931. - delete cur.wallUploadFromDrag;
- 3932. - }
- 3933. - }
- 3934. - };
- 3935. -
- 3936. - function initCustomMedia(lnk, types, opts) {
- 3937. - lnk = ge(lnk);
- 3938. - if (!lnk) return false;
- 3939. -
- 3940. - opts = opts || {};
- 3941. -
- 3942. - if (!window.__addMediaIndex) __addMediaIndex = 0;
- 3943. - var menuId = ++__addMediaIndex;
- 3944. -
- 3945. - if (opts.bgsprite) {
- 3946. - var icons = opts.bgsprite;
- 3947. - } else if (window.devicePixelRatio >= 2) {
- 3948. - var icons = '/images/icons/attach_icons_2x.png?3';
- 3949. - opts.bgSize = '20px 198px';
- 3950. - } else {
- 3951. - var icons = '/images/icons/attach_icons.png?3';
- 3952. - }
- 3953. - vkImage().src = icons;
- 3954. -
- 3955. - var html = '<div class="rows"><div class="add_media_head"><nobr>' + lnk.innerHTML + '</nobr></div></div>';
- 3956. -
- 3957. - if (!window.customMenuNode) {
- 3958. - window.customMenuNode = domFC(domFC(pageNode.appendChild(ce('div', {
- 3959. - id: '',
- 3960. - innerHTML: '<div class="scroll_fix" id="custom_menu_wrap" style="width:' + (lastInnerWidth - 1) + 'px"><div id="custom_menu_cont"></div></div>'
- 3961. - }))));
- 3962. - }
- 3963. - var menuNode = ce('div', {
- 3964. - id: 'add_media_menu_' + menuId,
- 3965. - className: 'add_media_menu',
- 3966. - innerHTML: '<div class="add_media_rows">' + html + '</div>'
- 3967. - }, {position: 'absolute'}), rowsNode = geByClass1('rows', menuNode, 'div');
- 3968. - customMenuNode.appendChild(menuNode);
- 3969. -
- 3970. - var _hideTimer, mediaMenu = {
- 3971. - id: menuId,
- 3972. - fixed: -1,
- 3973. - menuNode: menuNode,
- 3974. - updateFixed: function(newVal) {
- 3975. - if (mediaMenu.fixed != -1 && newVal != -1 && newVal !== undefined && mediaMenu.fixed == newVal) {
- 3976. - return;
- 3977. - }
- 3978. - if (mediaMenu.fixed == -1 || newVal !== undefined) {
- 3979. - if (newVal === undefined || newVal == -1) {
- 3980. - var el = lnk;
- 3981. - mediaMenu.fixed = false;
- 3982. - while (el) {
- 3983. - if (getStyle(el, 'position') == 'fixed') {
- 3984. - mediaMenu.fixed = true;
- 3985. - break;
- 3986. - }
- 3987. - el = el.offsetParent;
- 3988. - }
- 3989. - } else {
- 3990. - mediaMenu.fixed = newVal;
- 3991. - }
- 3992. - if (mediaMenu.fixed) {
- 3993. - setStyle(customMenuNode, {position: ''});
- 3994. - addClass(customMenuNode, 'fixed');
- 3995. - } else {
- 3996. - setStyle(customMenuNode, {position: 'absolute'});
- 3997. - removeClass(customMenuNode, 'fixed');
- 3998. - }
- 3999. - if (isVisible(menuNode)) {
- 4000. - mediaMenu._updatePosition(true);
- 4001. - }
- 4002. - }
- 4003. - },
- 4004. - show: function() {
- 4005. - clearTimeout(_hideTimer);
- 4006. - if (menuNode && !isVisible(menuNode)) {
- 4007. - lnk.blur();
- 4008. - mediaMenu.updateFixed(-1);
- 4009. - var h = mediaMenu._updatePosition(), el = menuNode.firstChild;
- 4010. -
- 4011. - if (browser.msie && browser.version < 9 || browser.mobile) {
- 4012. - show(menuNode);
- 4013. - } else {
- 4014. - setStyle(el, {height: 26, overflow: 'hidden'});
- 4015. - fadeIn(menuNode, 200);
- 4016. - if (mediaMenu.reverse) {
- 4017. - setStyle(el, {position: 'absolute', bottom: '-25px', width: getSize(el.firstChild)[0]});
- 4018. - setStyle(el.firstChild, {position: 'absolute', bottom: '0px'});
- 4019. - }
- 4020. - animate(el, {height: h - 2}, 200, function() {
- 4021. - setStyle(el.firstChild, {position: 'relative', bottom: ''});
- 4022. - setStyle(el, {height: '', overflow: '', position: 'static'});
- 4023. - });
- 4024. - }
- 4025. - opts.onShow && opts.onShow();
- 4026. - }
- 4027. - },
- 4028. - _updatePosition: function(visible) {
- 4029. - var coords = getXY(lnk, mediaMenu.fixed);
- 4030. - var top = coords[1] - 4 + (browser.msie && browser.version < 8 ? 1 : 0);
- 4031. - var rowsEl = menuNode.firstChild, more = geByClass1('add_media_more', menuNode);
- 4032. - if (vk.rtl) {
- 4033. - var right = (lastInnerWidth - 1) - (coords[0] + getSize(lnk)[0] + 8);
- 4034. - setStyle(menuNode, {right: right, top: top});
- 4035. - } else {
- 4036. - var left = coords[0] - 8 + (browser.msie6 ? 1 : 0);
- 4037. - setStyle(menuNode, {left: left, top: top});
- 4038. - }
- 4039. -
- 4040. - // Showing to up in case of little widget height
- 4041. - if (!visible) {
- 4042. - setStyle(menuNode, {visibility: 'hidden', display: 'block'});
- 4043. - if (more) {
- 4044. - hide(more);
- 4045. - show(more.nextSibling);
- 4046. - }
- 4047. - }
- 4048. - var countSize = getSize(rowsEl), st = (mediaMenu.fixed ? 0 : scrollGetY()), size = countSize;
- 4049. - if (!visible) {
- 4050. - if (more) {
- 4051. - show(more);
- 4052. - hide(more.nextSibling);
- 4053. - size = getSize(rowsEl);
- 4054. - }
- 4055. - setStyle(menuNode, {visibility: '', display: 'none'});
- 4056. - }
- 4057. -
- 4058. - var needReverse = false;
- 4059. - if (countSize[1] - 25 < top - st && lastWindowHeight + st < top + countSize[1]) {
- 4060. - setStyle(rowsEl, 'marginTop', -size[1] + 25);
- 4061. - if (!mediaMenu.reverse) needReverse = true;
- 4062. - } else {
- 4063. - setStyle(rowsEl, 'marginTop', -4);//(/mac/.test(_ua) && browser.mozilla ? 22 : 20));
- 4064. - if (mediaMenu.reverse) needReverse = true;
- 4065. - }
- 4066. - if (needReverse) {
- 4067. - var els = rowsNode.childNodes, len = els.length, el = (mediaMenu.moreWrap || {}).lastChild || {};
- 4068. - while (len--) {
- 4069. - rowsNode.appendChild(els[len]);
- 4070. - }
- 4071. - els = el.childNodes; len = (els || []).length;
- 4072. - while (len--) {
- 4073. - el.appendChild(els[len]);
- 4074. - }
- 4075. - mediaMenu.reverse = !mediaMenu.reverse;
- 4076. - (mediaMenu.reverse ? addClass : removeClass)(menuNode, 'add_media_rev');
- 4077. - }
- 4078. -
- 4079. - return size[1];
- 4080. - },
- 4081. - hide: function(noTimeout) {
- 4082. - clearTimeout(_hideTimer);
- 4083. - var hideFunc = (browser.msie && browser.version < 9 || browser.mobile) ? hide.pbind(menuNode) : fadeOut.pbind(menuNode, 100);
- 4084. - if (noTimeout === true) {
- 4085. - hideFunc();
- 4086. - } else {
- 4087. - _hideTimer = setTimeout(hideFunc, 300);
- 4088. - }
- 4089. - opts.onHide && opts.onHide();
- 4090. - },
- 4091. - setItems: function(types) {
- 4092. - for (var f = rowsNode.firstChild, l = rowsNode.lastChild; f != l; f = rowsNode.firstChild, l = rowsNode.lastChild) {
- 4093. - rowsNode.removeChild(f.className == 'add_media_head' ? l : f);
- 4094. - }
- 4095. - var test = '';
- 4096. - var spec_style = (/mac/.test(_ua) && browser.mozilla) ? {height: 19, paddingTop: 3} : {};
- 4097. - var moreNode = false;
- 4098. -
- 4099. - var needHide = (types.length > 6 && getLang('global_add_media_more'));
- 4100. - mediaMenu.moreWrap = false;
- 4101. -
- 4102. - each(types, function(i, v) { // [id, name, bg-position, onclick, href, bg-url, customStyle]
- 4103. -
- 4104. - var attrs = {
- 4105. - innerHTML: '<nobr>' + v[1].replace(/\s/g, ' ') + '</nobr>',
- 4106. - className: 'add_media_type_' + menuId + '_' + v[0] + ' add_media_item'
- 4107. - }, style = v[6] || {
- 4108. - backgroundImage: 'url(' + (v[5] || icons) + ')',
- 4109. - backgroundPosition: (v[2] || '0 0')
- 4110. - }, row;
- 4111. - if (opts.bgSize) {
- 4112. - style.backgroundSize = opts.bgSize;
- 4113. - }
- 4114. -
- 4115. - if (needHide && i == 3) {
- 4116. - var rowsEl = menuNode.firstChild;
- 4117. - var moreWrap = rowsNode.appendChild(ce('div', {
- 4118. - className: "add_media_more_wrap"
- 4119. - }));
- 4120. - addEvent(moreWrap, 'mouseover click', function() {
- 4121. - clearTimeout(mediaMenu.moreHide);
- 4122. - if (isVisible(moreWrap.lastChild)) return;
- 4123. - show(moreWrap.lastChild);
- 4124. - hide(moreWrap.firstChild);
- 4125. - if (!mediaMenu.reverse) return;
- 4126. - var size = getSize(rowsEl);
- 4127. - setStyle(rowsEl, 'marginTop', -size[1] + 25);
- 4128. - });
- 4129. - addEvent(moreWrap, 'mouseout', function () {
- 4130. - clearTimeout(mediaMenu.moreHide);
- 4131. - mediaMenu.moreHide = setTimeout(function() {
- 4132. - hide(moreWrap.lastChild);
- 4133. - show(moreWrap.firstChild);
- 4134. - if (!mediaMenu.reverse) return;
- 4135. - var size = getSize(rowsEl);
- 4136. - setStyle(rowsEl, 'marginTop', -size[1] + 25);
- 4137. - }, 300);
- 4138. - });
- 4139. - row = moreWrap.appendChild(ce('a', {
- 4140. - className: 'add_media_more add_media_item',
- 4141. - innerHTML: '<nobr>'+getLang('global_add_media_more')+'</nobr>'
- 4142. - }));
- 4143. - moreNode = ce('div', {
- 4144. - className: 'add_media_more_node',
- 4145. - innerHTML: '<div class="unshown"></div>'
- 4146. - }, {
- 4147. - display: 'none'
- 4148. - });
- 4149. - row = moreWrap.appendChild(moreNode);
- 4150. - mediaMenu.moreWrap = moreWrap;
- 4151. - }
- 4152. -
- 4153. - extend(style, spec_style);
- 4154. - if (v[4]) {
- 4155. - attrs.href = v[4];
- 4156. - }
- 4157. - row = (moreNode ? moreNode : rowsNode).appendChild(ce('a', attrs, style));
- 4158. - if (v[3]) {
- 4159. - addEvent(row, 'click', function () {
- 4160. - mediaMenu.hide(true);
- 4161. - if (opts.onItemClick && !opts.onItemClick(v[0])) {
- 4162. - return false;
- 4163. - }
- 4164. - v[3]();
- 4165. - return false;
- 4166. - });
- 4167. - }
- 4168. - });
- 4169. - }
- 4170. - };
- 4171. -
- 4172. - types && mediaMenu.setItems(types);
- 4173. -
- 4174. - removeEvent(lnk, 'mouseover');
- 4175. - addEvent(lnk, 'mouseover click', mediaMenu.show);
- 4176. - addEvent(lnk, 'mouseout', mediaMenu.hide);
- 4177. - addEvent(menuNode, 'mouseover', mediaMenu.show);
- 4178. - addEvent(menuNode, 'mouseout', mediaMenu.hide);
- 4179. - addEvent(menuNode, 'click', cancelEvent);
- 4180. - addEvent(geByClass1('add_media_header', menuNode), 'click', function(e) {
- 4181. - mediaMenu.show(true);
- 4182. - cancelEvent(e);
- 4183. - });
- 4184. -
- 4185. - cur.destroy.push(function() {
- 4186. - cleanElems(menuNode);
- 4187. - re(menuNode);
- 4188. - removeEvent(lnk, 'click', mediaMenu.show);
- 4189. - });
- 4190. -
- 4191. - return mediaMenu;
- 4192. - }
- 4193. -
- 4194. - var urlActiveExp = /([!()?., \n\r\t \u00A0]|^)((https?:\/\/)?((?:[a-z0-9_\-]+\.)+[a-z]{2,6})(\/.*?)?)( |[ \t\r\n \u00A0])/i,
- 4195. - urlInactiveExp = /([!()?., \n\r\t \u00A0]|^)((https?:\/\/)?((?:[a-z0-9_\-]+\.)+[a-z]{2,6})(\/.*?)?)( |[ \t\r\n \u00A0]|$)/i;
- 4196. -
- 4197. - function initAddMedia(lnk, previewId, mediaTypes, opts) {
- 4198. - var types = [], bgposes = {graffiti: -152, video: -20, photo: 3, audio: -42, poll: -108, doc: -64, map: -86, note: -130, postpone: -173}, addMedia;
- 4199. - opts = opts || {};
- 4200. - each (mediaTypes || [], function (i, v) {
- 4201. - if (!v[1]) return;
- 4202. - var handler = false, toId = opts.toId || cur.postTo, params = {to_id: toId, scrollbar_width: sbWidth()};
- 4203. - params.mail_add = opts.mail || nav.strLoc.match(/^(mail|im|al_mail\.php|al_im\.php)($|\?)/) ? 1 : '';
- 4204. - switch (v[0]) {
- 4205. - case 'graffiti':
- 4206. - if ((browser.chrome || browser.opera || browser.mobile || browser.safari || browser.mozilla || browser.msie && intval(browser.version) > 8) &&
- 4207. - document.createElement('canvas').getContext) {
- 4208. - handler = showBox.pbind('al_wall.php', {act: 'canvas_draw_box', to_id: toId, flash: browser.flash}, {cache: 1});
- 4209. - } else {
- 4210. - handler = showBox.pbind('al_wall.php', {act: 'draw_box', to_id: toId, flash: browser.flash}, {cache: 1});
- 4211. - }
- 4212. - break;
- 4213. - case 'photos_list':
- 4214. - handler = showBox.pbind('al_photos.php', extend(params, {act: 'choose_photo'}), {cache: 1, stat: ['photos.js', 'photos.css', 'upload.js']});
- 4215. - break;
- 4216. - case 'photo':
- 4217. - handler = showBox.pbind('al_photos.php', extend(params, {act: 'choose_photo'}), {cache: 1, stat: ['photos.js', 'photos.css', 'upload.js']});
- 4218. - break;
- 4219. - case 'video':
- 4220. - handler = showBox.pbind('video.php', extend(params, {act: 'a_choose_video_box'}), {cache: 1});
- 4221. - break;
- 4222. - case 'audio':
- 4223. - handler = showBox.pbind('audio', extend(params, {act: 'a_choose_audio_box'}), {cache: 1});
- 4224. - break;
- 4225. - case 'poll':
- 4226. - handler = function () {addMedia.chooseMedia('poll', '', v[2])};
- 4227. - break;
- 4228. - case 'app':
- 4229. - handler = showBox.pbind('apps.php', {act: 'a_choose_app_box', to_id: toId, aid: v[2]}, {stat: ['apps_flash.js'], cache: 1});
- 4230. - break;
- 4231. - case 'doc':
- 4232. - handler = showBox.pbind('docs.php', extend(params, {act: 'a_choose_doc_box'}), {stat: ['docs.css']});
- 4233. - break;
- 4234. - case 'map':
- 4235. - handler = showBox.pbind('al_places.php', extend(params, {act: 'a_choose_place_box'}), {stat: ['places.css', 'map.css', 'maps.js', 'ui_controls.css', 'ui_controls.js', 'boxes.css'], cache: 1, width: 640, bodyStyle: 'padding: 0px;'});
- 4236. - break;
- 4237. - case 'note':
- 4238. - handler = showWiki.pbind({note: 'new'}, true);
- 4239. - break;
- 4240. - case 'postpone':
- 4241. - handler = function () {addMedia.chooseMedia('postpone', v[1], v[2])};
- 4242. - break;
- 4243. - }
- 4244. - var isApp = (v[0] == 'app');
- 4245. - var icon = isApp ? v[4] : false;
- 4246. - var bgpos = isApp ? '5px 5px' : ('3px ' + bgposes[v[0]] + 'px');
- 4247. - var url = isApp ? ('/app' + v[2] + '?to_id=' + toId) : false;
- 4248. - var name = v[1].replace(/\s/g, ' ');
- 4249. - types.push([v[0], v[1], bgpos, handler, url, icon]);
- 4250. - });
- 4251. -
- 4252. - var limit = opts.limit || 10,
- 4253. - multi = limit > 1;
- 4254. -
- 4255. - var menu = initCustomMedia(lnk, types, {
- 4256. - onShow: function () {
- 4257. - cur.chooseMedia = addMedia.chooseMedia;
- 4258. - cur.showMediaProgress = addMedia.showMediaProgress;
- 4259. - cur.attachCount = addMedia.attachCount;
- 4260. - },
- 4261. - onItemClick: function(type) {
- 4262. - if (multi && addMedia.attachCount() >= limit && type !== 'postpone') {
- 4263. - showFastBox(getLang('global_error'), getLang('attachments_limit', limit));
- 4264. - return false;
- 4265. - }
- 4266. - return true;
- 4267. - }
- 4268. - });
- 4269. -
- 4270. - if (!menu) return;
- 4271. - previewId = previewId || 'media_preview';
- 4272. -
- 4273. - var lnkId = menu.id,
- 4274. - previewEl = ge(previewId),
- 4275. - progressEl, picsEl, docsEl;
- 4276. -
- 4277. - if (multi) {
- 4278. - val(previewEl, '<div id="page_pics_preview' + lnkId + '" class="page_pics_preview media_preview clear_fix"></div><div id="page_docs_preview' + lnkId + '" class="page_docs_preview media_preview clear_fix"></div><div id="page_progress_preview' + lnkId + '" class="page_progress_preview media_preview clear_fix"></div>');
- 4279. - var picsEl = previewEl.childNodes[0],
- 4280. - docsEl = previewEl.childNodes[1],
- 4281. - progressEl = previewEl.childNodes[2];
- 4282. - removeClass(previewEl, 'media_preview');
- 4283. - addClass(previewEl, 'multi_media_preview');
- 4284. - }
- 4285. -
- 4286. - addMedia = {
- 4287. - _addMediaLink: lnk,
- 4288. - lnkId: lnkId,
- 4289. - menu: menu,
- 4290. - handlers: {},
- 4291. - chosenMedias: [],
- 4292. - _showAddMedia: function() {
- 4293. - menu.show();
- 4294. - },
- 4295. - _hideAddMedia: function(noTimeout) {
- 4296. - menu.hide(noTimeout);
- 4297. - },
- 4298. - chooseMedia: function(type, media, data, url, noboxhide) {
- 4299. - if (addMedia.onChange && addMedia.onChange(type, media, data) === false) {
- 4300. - return false;
- 4301. - }
- 4302. - if (inArray(type, opts.disabledTypes || [])) {
- 4303. - return false;
- 4304. - }
- 4305. - if (addMedia.attachCount() >= limit && data.upload_ind === undefined && type !== 'postpone') {
- 4306. - if (multi) {
- 4307. - return false;
- 4308. - } else {
- 4309. - addMedia.unchooseMedia();
- 4310. - }
- 4311. - }
- 4312. - var already = false, alreadyTypes = {};
- 4313. - if (multi) {
- 4314. - each (addMedia.chosenMedias, function () {
- 4315. - if (this[0] == type && this[1] == media) {
- 4316. - already = true;
- 4317. - return false;
- 4318. - }
- 4319. - alreadyTypes[this[0]] = alreadyTypes[this[0]] ? alreadyTypes[this[0]] + 1 : 1;
- 4320. - });
- 4321. - if (already) {
- 4322. - return false;
- 4323. - }
- 4324. - }
- 4325. - var preview = '', postview = '', toPics = false, oncl;
- 4326. - switch (type) {
- 4327. - case 'graffiti':
- 4328. - if (!isObject(data)) {
- 4329. - data = {thumb: data || ''};
- 4330. - }
- 4331. - preview = '<div class="fl_l page_preview_graffiti"><img class="page_preview_graffiti" src="' + data.thumb + '" /></div>';
- 4332. - toPics = true;
- 4333. - break;
- 4334. -
- 4335. - case 'photos_list':
- 4336. - hide(this._addMediaLink);
- 4337. - vkImage().src = data[1];
- 4338. - oncl = opts.nocl ? '' : ' onclick="return showPhoto(\'' + data[4] + '\', \'' + data[2] + '\', ' + data[3].replace(/"/g, '"') + ');"';
- 4339. - preview = '<div' + oncl + ' class="fl_l page_preview_photo"><img class="page_preview_photo" src="' + data[1] + '" /></div>';
- 4340. - toPics = true;
- 4341. - break;
- 4342. -
- 4343. - case 'photo':
- 4344. - vkImage().src = data[1];
- 4345. - if (!isObject(data)) {
- 4346. - data = {
- 4347. - thumb_m: data[0] || '',
- 4348. - thumb_s: data[1] || '',
- 4349. - list: data[2] || '',
- 4350. - view_opts: data[3] || '',
- 4351. - upload_ind: data.upload_ind || undefined
- 4352. - };
- 4353. - }
- 4354. - oncl = opts.nocl ? '' : ' onclick="return showPhoto(\'' + media + '\', \'' + data.list + '\', ' + data.view_opts.replace(/"/g, '"') + ');"';
- 4355. - preview = '<div ' + oncl + ' class="fl_l page_preview_photo"><img class="page_preview_photo" src="' + data.thumb_m + '" /></div>';
- 4356. - toPics = true;
- 4357. - break;
- 4358. -
- 4359. - case 'video':
- 4360. - if (!isObject(data)) {
- 4361. - data = {
- 4362. - thumb: data || ''
- 4363. - };
- 4364. - }
- 4365. - oncl = opts.nocl ? '' : ' onclick="return showVideo(\'' + media + '\');"';
- 4366. - preview = '<div' + oncl + ' class="fl_l page_preview_video"><img class="page_preview_video" src="' + data.thumb + '" /></div>';
- 4367. - toPics = true;
- 4368. - break;
- 4369. -
- 4370. - case 'audio':
- 4371. - if (!data.info) return false;
- 4372. - preview = Page.addAudioPreview(media, data);
- 4373. - break;
- 4374. -
- 4375. - case 'app':
- 4376. - preview = '<div class="app fl_l"><img src="' + data[0] + '" /><span>' + data[1] + '</span></div>';
- 4377. - each(geByClass('add_media_type_' + lnkId + '_app', menu.menuNode, 'a'), function () {hide(this);});
- 4378. - break;
- 4379. -
- 4380. - case 'doc':
- 4381. - if (!data.lang) return false;
- 4382. - if (data.thumb && data.thumb_s) {
- 4383. - preview = '<a target="_blank" href="' + data.href + '" class="fl_l"><div class="page_preview_doc_photo"><img src="' + data.thumb_s + '" align="center"></div><div class="page_preview_doc_photo_hint">' + data.title + '</div></a>';
- 4384. - toPics = true;
- 4385. - } else {
- 4386. - preview = '<a target="_blank" href="' + data.href + '" class="medadd_h medadd_h_doc inl_bl">' + data.lang.profile_choose_doc + '</a>';
- 4387. - postview = '<div class="medadd_c medadd_c_doc"><a target="_blank" href="' + data.href + '">' + data.title + '</a></div>';
- 4388. - }
- 4389. - break;
- 4390. -
- 4391. - case 'share':
- 4392. - if (alreadyTypes.share || alreadyTypes.page || !data.lang) {
- 4393. - return false;
- 4394. - }
- 4395. - if (isArray(data)) {
- 4396. - data = {
- 4397. - domain: data[0],
- 4398. - url: data[1],
- 4399. - initialPattern: data[2],
- 4400. - title: data[3],
- 4401. - description: data[4],
- 4402. - images: [data[5]],
- 4403. - user_id: data[6],
- 4404. - photo_id: data[7]
- 4405. - };
- 4406. - };
- 4407. - preview = '<a target="_blank" href="/away.php?to=' + encodeURIComponent(data.url) + '" class="medadd_h medadd_h_link inl_bl">' + data.lang.profile_choose_link + '</a>';
- 4408. - addMedia.shareData = extend(addMedia.shareData || {}, data, {imagesStyles: ['']});
- 4409. - break;
- 4410. -
- 4411. - case 'poll':
- 4412. - if (!data.lang) return false;
- 4413. - preview = '<div class="medadd_h medadd_h_poll inl_bl">' + data.lang.q + '</div>';
- 4414. - hide(geByClass1('add_media_type_' + lnkId + '_poll', menu.menuNode, 'a'));
- 4415. - break;
- 4416. -
- 4417. - case 'map':
- 4418. - preview = '<div class="fl_l"><a onclick="return showBox(\'al_places.php\', {act: \'geo_box\', lat: '+data[0]+', long: '+data[1]+', provider: '+intval(data[3])+'});"><div class="page_media_map_point"></div><img class="page_preview_map" width="180" height="70" src="'+locProtocol+'//maps.googleapis.com/maps/api/staticmap?center='+data[0]+','+data[1]+'&zoom=11&size='+(window.devicePixelRatio >= 2 ? '360x140' : '180x70')+'&sensor=false&language='+data[2]+'" /></a></div>';
- 4419. - toPics = true;
- 4420. - hide(geByClass1('add_media_type_' + lnkId + '_map', ge('add_media_menu_' + lnkId)));
- 4421. - break;
- 4422. -
- 4423. - case 'page':
- 4424. - if (alreadyTypes.share || alreadyTypes.page || !data.lang) {
- 4425. - return false;
- 4426. - }
- 4427. - var lst = data.media.split('_');
- 4428. - preview = '<a href="/page' + data.media + '" onclick="return showWiki({oid: ' + lst[0] + ', id: ' + lst[1] + '}, false, event)" class="medadd_h medadd_h_page inl_bl">' + data.lang.profile_choose_page + '</a>';
- 4429. - break;
- 4430. -
- 4431. - case 'album':
- 4432. - vkImage().src = data[1];
- 4433. - oncl = opts.nocl ? '' : ' href="/album' + media + '" onclick="return nav.change({z: \'album' + media + '\'}, event)"';
- 4434. - var cls = 'fl_l page_preview_album wall_album_cover_wrap' + (data.thumb ? '' : ' wall_album_nocover');
- 4435. - preview = '<a class="' + cls + '" ' + oncl + '>\
- 4436. - ' + (data.thumb ? '<img class="wall_album_cover" src="' + data.thumb + '"/>' : '') + '\
- 4437. - <div class="wall_album_caption">\
- 4438. - <div class="wall_album_title_wrap clear_fix">\
- 4439. - <div class="wall_album_title fl_l">' + data.title + '</div>\
- 4440. - <div class="wall_album_count fl_r">' + data.count + '</div>\
- 4441. - </div>\
- 4442. - </div>\
- 4443. - </a>';
- 4444. - toPics = true;
- 4445. - break;
- 4446. -
- 4447. - case 'note':
- 4448. - if (!data.lang) return false;
- 4449. - preview = '<a onclick="showWiki({w: \'note' + data.raw + '\', edit: 1}, true, event)" class="medadd_h medadd_h_note inl_bl">' + data.lang.profile_choose_note + '</a>';
- 4450. - postview = '<div class="medadd_c medadd_c_note"><a onclick="showWiki({w: \'note' + data.raw + '\', edit: 1}, true, event)" id="share_note_title' + data.raw + '">' + data.title + '</a></div>';
- 4451. - break;
- 4452. -
- 4453. - case 'postpone':
- 4454. - preview = '<div class="medadd_h medadd_h_timer inl_bl">' + data.lang.profile_choose_timer + '<span id="postpone_preview' + lnkId + '"></span></div>';
- 4455. -
- 4456. - if (cur.editingPost && domPN(docsEl).id == 'wpe_media_preview') {
- 4457. - media = intval(media);
- 4458. - if (media) {
- 4459. - data.date = media;
- 4460. - } else {
- 4461. - data.date = intval(cur.editingPost[6]);
- 4462. - }
- 4463. - var exp = geByClass1('medadd_c_timersett', docsEl);
- 4464. - if (exp) {
- 4465. - var pn = domPN(exp);
- 4466. - exp = pn.innerHTML;
- 4467. - re(pn);
- 4468. - } else {
- 4469. - exp = '';
- 4470. - }
- 4471. - geByTag1('button', geByClass1('button_blue', ge('post'+cur.editingPost[0]))).innerHTML = getLang('global_save');
- 4472. - } else {
- 4473. - if (cur.postponedLastDate) {
- 4474. - data.date = intval(cur.postponedLastDate) + 14400;
- 4475. - }
- 4476. - var chk = ge('official');
- 4477. - if (chk) {
- 4478. - if (!isChecked(chk)) {
- 4479. - checkbox(chk);
- 4480. - toggle('signed', true);
- 4481. - }
- 4482. - addClass(chk, 'disabled');
- 4483. - }
- 4484. - var btn = ge('send_post');
- 4485. - if (btn) {
- 4486. - btn.innerHTML = data['lang']['profile_wall_postpone_btn'];
- 4487. - }
- 4488. - }
- 4489. - hide(geByClass1('add_media_type_' + lnkId + '_postpone', menu.menuNode, 'a'));
- 4490. - break;
- 4491. - }
- 4492. -
- 4493. - if (multi) {
- 4494. - var medias = addMedia.chosenMedias,
- 4495. - ind = medias.length,
- 4496. - mediaEl = (type == 'photos_list') ?
- 4497. - se('<div class="page_preview_' + type + '_wrap" style="position: relative">' + preview + '<div class="page_photos_count">' + media.split(',').length + '</div></div>') :
- 4498. - se('<div class="page_preview_' + type + '_wrap"' + (opts.nocl ? ' style="cursor: default"' : '') + '>' + preview + '<div class="page_media_x_wrap inl_bl" '+ (browser.msie ? 'title' : 'tootltip') + '="'+getLang('dont_attach')+'" onmouseover="if (browser.msie) return; showTooltip(this, {text: this.getAttribute(\'tootltip\'), shift: [14, 3, 3], black: 1})" onclick="cur.addMedia['+addMedia.lnkId+'].unchooseMedia(' + ind + ')"><div class="page_media_x"></div></div>' + postview + '</div>');
- 4499. - addClass(mediaEl, toPics ? 'fl_l' : 'clear_fix');
- 4500. - if (data.upload_ind !== undefined) re('upload' + data.upload_ind + '_progress_wrap');
- 4501. - (toPics ? picsEl : docsEl).appendChild(mediaEl);
- 4502. - medias.push([type, media, mediaEl, url]);
- 4503. -
- 4504. - toggle(picsEl, picsEl.childNodes.length > 0);
- 4505. - toggle(docsEl, docsEl.childNodes.length > 0);
- 4506. - toggle(progressEl, progressEl.childNodes.length > 0);
- 4507. - if (opts.toggleLnk) toggle(lnk, addMedia.attachCount() < limit);
- 4508. - } else {
- 4509. - val(previewEl, '<div class="fl_l">' + preview + '</div><div class="x fl_l" onmouseover="showTooltip(this, {text: \'' + getLang('dont_attach') + '\', shift: [0, 3, 3]})" onclick="cur.addMedia[' + lnkId + '].unchooseMedia()"></div>');
- 4510. - show(previewEl);
- 4511. - addMedia.chosenMedia = [type, media];
- 4512. - addMedia.chosenMediaData = data;
- 4513. - }
- 4514. -
- 4515. - if (type == 'share') {
- 4516. - if (data.title && !url) {
- 4517. - cur.shareShowImg = 0;
- 4518. - addMedia.showPreview(true);
- 4519. - addMedia.shareData.images = false;
- 4520. - } else {
- 4521. - addMedia.showExternalPreview();
- 4522. - }
- 4523. - } else if (type == 'page') {
- 4524. - if (!data['nopreview']) {
- 4525. - cur.shareShowImg = 0;
- 4526. - addMedia.shareData = extend(addMedia.shareData || {}, data, {images: false});
- 4527. - addMedia.showPreview();
- 4528. - }
- 4529. - } else if (type == 'poll') {
- 4530. - addMedia.createPoll(data);
- 4531. - } else if (type == 'postpone') {
- 4532. - addMedia.setupPostpone(data, exp);
- 4533. - }
- 4534. -
- 4535. - if (!cur.fileApiUploadStarted && noboxhide !== true && type != 'poll' && type != 'share' && type != 'page' && type != 'postpone') {
- 4536. - boxQueue.hideLast();
- 4537. - }
- 4538. -
- 4539. - cur.lastPostMsg = false;
- 4540. - if (opts.onMediaAdd) {
- 4541. - opts.onMediaAdd();
- 4542. - }
- 4543. -
- 4544. - if (data.upload_ind !== undefined) {
- 4545. - delete data.upload_ind;
- 4546. - }
- 4547. - return false;
- 4548. - },
- 4549. - unchooseMedia: function(ind) {
- 4550. - if (addMedia.onChange && addMedia.onChange(false, ind) === false) {
- 4551. - return false;
- 4552. - }
- 4553. - if (multi) {
- 4554. - if (ind === undefined) {
- 4555. - each (addMedia.chosenMedias, function (k, v) {
- 4556. - if (v && k !== undefined) addMedia.unchooseMedia(k);
- 4557. - });
- 4558. - addMedia.urlsCancelled = [];
- 4559. - return;
- 4560. - }
- 4561. - var medias = addMedia.chosenMedias, x;
- 4562. - if (medias[ind]) {
- 4563. - if ((x = geByClass1('page_media_x_wrap', medias[ind][2], 'div')) && x.tt && x.tt.el) {
- 4564. - x.tt.destroy();
- 4565. - }
- 4566. - re(medias[ind][2]);
- 4567. - switch (medias[ind][0]) {
- 4568. - case 'page':
- 4569. - case 'share':
- 4570. - addMedia.shareData = {};
- 4571. - re(addMedia.sharePreview);
- 4572. - delete addMedia.sharePreview;
- 4573. - break;
- 4574. -
- 4575. - case 'poll':
- 4576. - re(addMedia.pollPreview);
- 4577. - addMedia.pollPreview = false;
- 4578. - show(geByClass1('add_media_type_' + lnkId + '_poll', menu.menuNode, 'a'));
- 4579. - break;
- 4580. -
- 4581. - case 'app':
- 4582. - each(geByClass('add_media_type_' + lnkId + '_app', menu.menuNode, 'a'), function () {show(this);});
- 4583. - break;
- 4584. -
- 4585. - case 'map':
- 4586. - show(geByClass1('add_media_type_' + lnkId + '_map', ge('add_media_menu_' + lnkId)));
- 4587. - break;
- 4588. -
- 4589. - case 'postpone':
- 4590. - var exp = geByClass1('medadd_c_timersett', addMedia.postponePreview);
- 4591. - if (cur.editingPost && exp) {
- 4592. - re(domFC(addMedia.postponePreview));
- 4593. - } else {
- 4594. - re(addMedia.postponePreview);
- 4595. - }
- 4596. - addMedia.postponePreview = false;
- 4597. - removeClass('official', 'disabled');
- 4598. - if (!cur.editingPost) {
- 4599. - ge('send_post').innerHTML = getLang('wall_send');
- 4600. - } else {
- 4601. - geByTag1('button', geByClass1('button_blue', ge('post'+cur.editingPost[0]))).innerHTML = getLang('wall_publish_now');
- 4602. - }
- 4603. - show(geByClass1('add_media_type_' + lnkId + '_postpone', menu.menuNode, 'a'));
- 4604. - break;
- 4605. - }
- 4606. - medias[ind] = false;
- 4607. - }
- 4608. - if (opts.toggleLnk) toggle(lnk, addMedia.attachCount() < limit);
- 4609. - toggle(picsEl, picsEl.childNodes.length > 0);
- 4610. - toggle(docsEl, docsEl.childNodes.length > 0);
- 4611. - toggle(progressEl, progressEl.childNodes.length > 0);
- 4612. - } else {
- 4613. - var share, x;
- 4614. - if (addMedia.chosenMedia) {
- 4615. - if ((x = previewEl.firstChild.nextSibling) && x.tt && x.tt.el) {
- 4616. - x.tt.destroy();
- 4617. - }
- 4618. - addMedia.chosenMedia = false;
- 4619. - addMedia.chosenMediaData = false;
- 4620. - val(previewEl, '');
- 4621. - hide(previewEl);
- 4622. - }
- 4623. - if (share = addMedia.shareData) {
- 4624. - if (share.url) {
- 4625. - addMedia.urlsCancelled.push(share.url);
- 4626. - }
- 4627. - if (share.initialPattern) {
- 4628. - addMedia.urlsCancelled.push(share.initialPattern);
- 4629. - }
- 4630. - addMedia.shareData = {};
- 4631. - }
- 4632. - each([addMedia.sharePreview, addMedia.pollPreview, addMedia.postponePreview], function () {re(this);});
- 4633. - addMedia.sharePreview = addMedia.pollPreview = addMedia.postponePreview = false;
- 4634. - }
- 4635. -
- 4636. - cur.lastPostMsg = false;
- 4637. - if ((cur.module == 'profile' || cur.module == 'feed' || cur.module == 'wall') && cur.postTo) {
- 4638. - setTimeout(function() {
- 4639. - Wall.postChanged(val('post_field'), true);
- 4640. - }, 0);
- 4641. - }
- 4642. -
- 4643. - if (addMedia.onChange) addMedia.onChange(false);
- 4644. - },
- 4645. - showMediaProgress: function(type, i, info) {
- 4646. - if (addMedia.onProgress && addMedia.onProgress(type, i, info) === false) {
- 4647. - return false;
- 4648. - }
- 4649. - var frac = info.loaded / info.total, percent = intval(frac * 100),
- 4650. - fileName = info.fileName || info.name || '',
- 4651. - // ind = i,
- 4652. - ind = fileName ? i + '_' + fileName : i,
- 4653. - label = fileName ? (fileName.length > 33 ? fileName.substr(0, 30) + '...' : fileName) : '';
- 4654. -
- 4655. - var prg = ge('upload' + ind + '_progress');
- 4656. - if (!prg) {
- 4657. - if (!cur.attachMediaIndexes) cur.attachMediaIndexes = {};
- 4658. - cur.attachMediaIndexes[ind] = lnkId;
- 4659. -
- 4660. - var progress = '\
- 4661. - <div class="fl_l"><div class="page_attach_progress_wrap" style="margin-top: 3px; margin-bottom: 4px;">\
- 4662. - <div id="upload' + ind + '_progress" class="page_attach_progress"></div>\
- 4663. - </div></div></div>' + (label ? '<div class="attach_label fl_l">' + label + '</div>' : '') + '<div class="progress_x fl_l" onmouseover="animate(this, {opacity: 1}, 200); showTooltip(this, {text: \'' + getLang('dont_attach') + '\', shift: [6, 3, 3]})" onmouseout="animate(this, {opacity: 0.6}, 200);" onclick="Upload.terminateUpload(' + i + ', \'' + (fileName || i) + '\');"></div>';
- 4664. -
- 4665. - if (multi) {
- 4666. - progressEl.appendChild(ce('div', {id: 'upload' + ind + '_progress_wrap', innerHTML: progress, className: 'clear_fix upload_' + i + '_progress'}, {marginTop: '6px'}));
- 4667. - show(progressEl);
- 4668. - if (opts.toggleLnk) toggle(lnk, addMedia.attachCount() < limit);
- 4669. - } else {
- 4670. - val(previewEl, progress);
- 4671. - addMedia.chosenMedia = 'progress';
- 4672. - }
- 4673. - prg = ge('upload' + ind + '_progress');
- 4674. - prg.full = false;//intval(getStyle(prg.parentNode, 'width'));
- 4675. -
- 4676. - if (percent) {
- 4677. - setStyle(prg, {width: prg.full ? (intval(prg.full * frac) + 'px') : percent + '%'})
- 4678. - } else {
- 4679. - setStyle(prg, {width: '1px'});
- 4680. - hide(prg);
- 4681. - }
- 4682. - } else {
- 4683. - show(prg);
- 4684. - if (prg.full) {
- 4685. - var tw = data(prg, 'tween'), w = intval(prg.full * frac);
- 4686. - if (tw && tw.isTweening) {
- 4687. - tw.to.width = w;
- 4689. - animate(prg, {width: w + 'px'}, 500);
- 4690. - }
- 4691. - } else {
- 4692. - setStyle(prg, {width: percent + '%'});
- 4693. - }
- 4694. - }
- 4695. - // show(previewEl);
- 4696. - },
- 4697. -
- 4698. - attachCount: function() {
- 4699. - if (addMedia.attachedCount) {
- 4700. - return addMedia.attachedCount();
- 4701. - }
- 4702. - if (!previewEl) {
- 4703. - return 0;
- 4704. - }
- 4705. - if (!multi) {
- 4706. - return previewEl.childNodes.length;
- 4707. - }
- 4708. - var num = picsEl.childNodes.length + docsEl.childNodes.length + progressEl.childNodes.length;
- 4709. - if (addMedia.sharePreview) {
- 4710. - num--;
- 4711. - }
- 4712. - if (addMedia.pollPreview) {
- 4713. - num--;
- 4714. - }
- 4715. - if (addMedia.postponePreview) {
- 4716. - num -= 2;
- 4717. - }
- 4718. - return num;
- 4719. - },
- 4720. -
- 4721. - // Inline Polls
- 4722. - createPoll: function(data) {
- 4723. - var h = (browser.msie6 || data.question) ? '' : '1px', html = [], ans;
- 4724. - var incCl = data[4 + (10 - 1) * 2] ? 'disabled' : '', decCl = data[4 + 2 * 2] ? '' : 'disabled';
- 4725. - addMedia.pollPreview = docsEl.appendChild(ce('div', {className: 'medadd_c medadd_c_poll', innerHTML: '\
- 4726. - <input onkeydown="cur.addMedia[' + lnkId + '].keyPoll(this, event)" class="text medadd_c_pollq" id="create_poll_question' + lnkId + '" value="' + (data.question || '') + '" />\
- 4727. - <div class="medadd_c_pollh">' + data.lang.a + '</div>\
- 4728. - <div class="medadd_c_pollans" id="create_poll_answers' + lnkId + '"></div>\
- 4729. - <div class="medadd_c_polladd_wr" id="create_poll_add' + lnkId + '">\
- 4730. - <div class="medadd_c_polladd" onclick="cur.addMedia[' + lnkId + '].incPoll()">' + data.lang.i + '</div>\
- 4731. - </div>' + (data.edit ? '' : '<div class="checkbox medadd_c_pollcb" id="create_poll_anonymous' + lnkId + '" onclick="checkbox(this)"><div></div>' + data.lang.c + '</div>')}));
- 4732. - if (!data.answers) data.answers = [[0, ''], [0, '']];
- 4733. - cur.pollAnswerTemplate = '<input onkeydown="cur.addMedia[%lnkid%].keyPoll(this, event)" class="text medadd_c_polla" %attrs%/><div class="page_media_x_wrap medadd_c_pollrem inl_bl" '+ (browser.msie ? 'title' : 'tootltip') + '="'+data.lang.d+'" onmouseover="if (browser.msie) return; showTooltip(this, {text: this.getAttribute(\'tootltip\'), shift: [14, 3, 3], black: 1})" onclick="cur.addMedia[%lnkid%].decPoll(this)"><div class="page_media_x"></div></div>';
- 4734. - for (var i = 0, l = data.answers.length; i < l; ++i) {
- 4735. - ans = data.answers[i];
- 4736. - html.push('<div class="medadd_c_polla_wr">' + rs(cur.pollAnswerTemplate, {
- 4737. - attrs: (ans[0] ? 'id="create_poll_ans' + ans[0] + '" value="' + ans[1] + '" ' : ''),
- 4738. - lnkid: lnkId
- 4739. - }) + '</div>');
- 4740. - if (i == 9) hide('create_poll_add' + lnkId);
- 4741. - }
- 4742. - val('create_poll_answers' + lnkId, html.join(''));
- 4743. - if (browser.msie6 || data.question) {
- 4744. - elfocus('create_poll_question' + lnkId);
- 4745. - return;
- 4746. - }
- 4747. - addMedia.pollPreview.style.height = h;
- 4748. - animate(addMedia.pollPreview, {height: 166}, 200, function() {
- 4749. - addMedia.pollPreview.style.height = 'auto';
- 4750. - elfocus('create_poll_question' + lnkId);
- 4751. - });
- 4752. - },
- 4753. - incPoll: function() {
- 4754. - var answers = ge('create_poll_answers' + lnkId), l = answers.childNodes.length;
- 4755. - if (l < 10) {
- 4756. - elfocus(geByTag1('input', answers.appendChild(ce('div', {
- 4757. - className: 'medadd_c_polla_wr',
- 4758. - innerHTML: rs(cur.pollAnswerTemplate, {attrs: '', lnkid: lnkId})
- 4759. - }))));
- 4760. - }
- 4761. - toggle('create_poll_add' + lnkId, l < 9);
- 4762. - },
- 4763. - decPoll: function(el) {
- 4764. - if (el.tt && el.tt.destroy) el.tt.destroy();
- 4765. - re(domPN(el));
- 4766. - show('create_poll_add' + lnkId);
- 4767. - },
- 4768. - keyPoll: function(el, ev) {
- 4769. - ev = ev || window.event;
- 4770. - if (ev && (ev.keyCode == 10 || ev.keyCode == 13 || ev.keyCode == 9)) {
- 4771. - var n = hasClass(el, 'medadd_c_pollq') ? domFC(domNS(domNS(el))) : domNS(domPN(el));
- 4772. - if (n) {
- 4773. - elfocus(geByTag1('input', n));
- 4774. - } else {
- 4775. - this.incPoll();
- 4776. - }
- 4777. - return cancelEvent(ev);
- 4778. - }
- 4779. - },
- 4780. - pollData: function() {
- 4781. - var answers = ge('create_poll_answers' + lnkId), q = trim(val('create_poll_question' + lnkId)), a;
- 4782. - var result = {media: q, anonymous: isChecked('create_poll_anonymous' + lnkId)}, ind = 0, found = false;
- 4783. - for (var el = domFC(answers); el; el = domNS(el)) {
- 4784. - a = trim(val(domFC(el)));
- 4785. - if (a) {
- 4786. - var id = -intval((domFC(el).id.match(/^create_poll_ans(\d+)$/) || [0, -(ind++)])[1]); // -id or ind
- 4787. - result['answers[' + id + ']'] = a;
- 4788. - found = true;
- 4789. - }
- 4790. - }
- 4791. - if (!q) {
- 4792. - notaBene('create_poll_question' + lnkId);
- 4793. - return false;
- 4794. - }
- 4795. - if (!found) {
- 4796. - if (!domFC(answers)) cur.addMedia[lnkId].incPoll();
- 4797. - notaBene(domFC(domFC(answers)));
- 4798. - return false;
- 4799. - }
- 4800. - return result;
- 4801. - },
- 4802. -
- 4803. - // Inline Share
- 4804. - urlsCancelled: [],
- 4805. - shareData: {},
- 4806. - checkMessageURLs: function(message, inactive) {
- 4807. - if (addMedia.chosenMedia || addMedia.urlAttachmentLoading && addMedia.urlAttachmentLoading[0] > vkNow() - 10000) {
- 4808. - return;
- 4809. - }
- 4810. - var rx = inactive ? urlInactiveExp : urlActiveExp,
- 4811. - matches;
- 4812. - while (message && (matches = message.match(rx))) {
- 4813. - message = message.substr(matches.index + matches[0].length);
- 4814. - var url = matches[2],
- 4815. - query = matches[5] || '',
- 4816. - initialUrl = url;
- 4817. - if (!url.match(/^https?:\/\//)) {
- 4818. - url = 'http://' + url;
- 4819. - }
- 4820. - if (inArray(url, addMedia.urlsCancelled)) {
- 4821. - continue;
- 4822. - }
- 4823. - var valid = true;
- 4824. - if (matches[4].match(/(^|\.|\/\/)vkontakte\.ru|vk\.com/)) {
- 4825. - valid = query.match(/(#photo|^\/(photo|video|album|page|audio)|z=(album|photo|video)|w=(page))(-?\d+_)?\d+|\.(jpg|png|gif)$/) ? true : false;
- 4826. - }
- 4827. - if (valid) {
- 4828. - addMedia.checkURL(initialUrl);
- 4829. - return;
- 4830. - }
- 4831. - }
- 4832. - },
- 4833. - onCheckURLDone: function(result, data) {
- 4834. - var url = '';
- 4835. - if (addMedia.urlAttachmentLoading) {
- 4836. - re(addMedia.urlAttachmentLoading[2]);
- 4837. - toggle(progressEl, progressEl.childNodes > 0);
- 4838. - url = addMedia.urlAttachmentLoading[1];
- 4839. - addMedia.urlAttachmentLoading = false;
- 4840. - setStyle(bodyNode, {cursor: 'default'});
- 4841. - }
- 4842. - if (result) {
- 4843. - addMedia.chooseMedia(data[0], data[1], data[2], url, true);
- 4844. - }
- 4845. - },
- 4846. - checkURL: function(url) {
- 4847. - if (!url) return;
- 4848. - addMedia.urlsCancelled.push(url);
- 4849. - addMedia.urlAttachmentLoading = [vkNow(), url];
- 4850. -
- 4851. - re(addMedia.checkURLForm);
- 4852. - addMedia.checkURLForm = ce('div', {innerHTML: '<iframe name="share_parse_iframe' + lnkId + '"></iframe>'});
- 4853. - utilsNode.appendChild(addMedia.checkURLForm);
- 4854. - var parseForm = addMedia.checkURLForm.appendChild(ce('form', {
- 4855. - action: 'share.php?act=url_attachment',
- 4856. - method: 'post',
- 4857. - target: 'share_parse_iframe' + lnkId
- 4858. - }));
- 4859. -
- 4860. - each({hash: cur.options.share.timehash || '', index: lnkId, url: url}, function(i, v) {
- 4861. - parseForm.appendChild(ce('input', {type: 'hidden', name: i, value: v}));
- 4862. - });
- 4863. -
- 4864. - // var progress = ce('div', {className: 'share_parse_progress progress'});
- 4865. - // progressEl.appendChild(progress);
- 4866. - // show(progressEl);
- 4867. - // addMedia.urlAttachmentLoading.push(progress);
- 4868. - setStyle(bodyNode, {cursor: 'wait'});
- 4869. -
- 4870. - window.onUploadDone = addMedia.onCheckURLDone.pbind(true);
- 4871. - window.onUploadFail = addMedia.onCheckURLDone.pbind(false);
- 4872. -
- 4873. - parseForm.submit();
- 4874. - },
- 4875. - addPreview: function(progress) {
- 4876. - return (addMedia.sharePreview = docsEl.appendChild(ce('div', {className: 'medadd_c medadd_c_link', innerHTML: '\
- 4877. - <div class="medadd_c_linkcon"><div></div>' + (progress ? '<div class="progress medadd_c_linkprg"></div>' : '') + '</div>'})));
- 4878. - },
- 4879. - showPreview: function(fast) {
- 4880. - var data = addMedia.shareData,
- 4881. - prev = addMedia.sharePreview || addMedia.addPreview();
- 4882. -
- 4883. - if (data.failed) {
- 4884. - var html = getLang('page_not_loaded');
- 4885. - } else {
- 4886. - var html = (data.images && data.images[cur.shareShowImg] ? '<img class="medadd_c_linkimg fl_l" src="' + data.images[cur.shareShowImg] + '" ' + (data.imagesStyles && data.imagesStyles[cur.shareShowImg] || '') + ' />' : '') + (data.title ? '<h4 class="medadd_c_linkhead">' + data.title + '</h4>' : '') + (data.description ? '<div class="medadd_c_linkdsc">' + data.description + '</div>' : '') + '<div class="clear"></div>';
- 4887. - }
- 4888. -
- 4889. - if (fast) {
- 4890. - val(domFC(prev), html);
- 4891. - domFC(prev).style.height = 'auto';
- 4892. - } else {
- 4893. - var hidden = !isVisible(docsEl);
- 4894. - show(docsEl);
- 4895. - var tmpDiv = ge(previewId).appendChild(ce('div', {
- 4896. - innerHTML: '<div class="medadd_c_linkcon">' + html + '</div>'
- 4897. - }, {
- 4898. - position: 'absolute',
- 4899. - width: getSize(prev)[0] - 10,
- 4900. - visibility: 'hidden'
- 4901. - }));
- 4902. - var height = getSize(tmpDiv)[1];
- 4903. - re(tmpDiv);
- 4904. -
- 4905. - animate(domFC(prev), {height: height}, 200, function () {
- 4906. - val(domFC(prev), html);
- 4907. - });
- 4908. - }
- 4909. - },
- 4910. - showExternalPreview: function () {
- 4911. - var data = addMedia.shareData;
- 4912. - if (!data.images || !data.images.length) {
- 4913. - cur.shareShowImg = 0;
- 4914. - addMedia.showPreview();
- 4915. - return;
- 4916. - } else {
- 4917. - cur.shareShowImg = -1;
- 4918. - addMedia.addPreview(true);
- 4919. - }
- 4920. - data.imagesStyles = {};
- 4921. - var fast = false;
- 4922. -
- 4923. - cur.shareShowNext = function () {
- 4924. - var tmpImg = vkImage();
- 4925. - cur.shareShowImg += 1;
- 4926. -
- 4927. - if (cur.shareShowImg > data.images.length - 1) {
- 4928. - cur.shareShowImg = 0;
- 4929. - } else if (cur.shareShowImg == 0) {
- 4930. - for (var i = 1; i < data.images.length - 1; i++) {
- 4931. - var t = vkImage();
- 4932. - t.src = data.images[i];
- 4933. - }
- 4934. - }
- 4935. - if (!data.images.length || isEmpty(data.images) || data.images[cur.shareShowImg] === undefined) {
- 4936. - addMedia.showPreview(fast);
- 4937. - fast = true;
- 4938. - return;
- 4939. - }
- 4940. - tmpImg.src = data.images[cur.shareShowImg];
- 4941. -
- 4942. - var imgLoadTimeout = setTimeout(function() {
- 4943. - if (cur.shareImgInterval === true) return;
- 4944. - data.images.splice(cur.shareShowImg, 1);
- 4945. - cur.shareShowNext();
- 4946. - }, 5000);
- 4947. -
- 4948. - var updatePreview = function() {
- 4949. - if (tmpImg.width || tmpImg.height) {
- 4950. - var w = tmpImg.width, h = tmpImg.height;
- 4951. - var imgStyle = '';
- 4952. - var imgParams = '';
- 4953. - if (imgLoadTimeout) {
- 4954. - clearTimeout(imgLoadTimeout);
- 4955. - }
- 4956. - clearInterval(cur.shareImgInterval);
- 4957. - if (w < 20 || h < 20) {
- 4958. - data.images.splice(cur.shareShowImg, 1);
- 4959. - if (data.images.length) {
- 4960. - return setTimeout(cur.shareShowNext, 0);
- 4961. - }
- 4962. - } else {
- 4963. - if (w > h && w > 150) {
- 4964. - h = 150 * h / w;
- 4965. - w = 150;
- 4966. - } else if (h > 150) {
- 4967. - w = 150 * w / h;
- 4968. - h = 150;
- 4969. - }
- 4970. - imgStyle = 'width: ' + w + 'px; height: ' + h + 'px;';
- 4971. - }
- 4972. - if (data.images.length > 1) {
- 4973. - imgStyle += 'cursor: pointer';
- 4974. - imgParams = ' onclick="cur.shareShowNext();"';
- 4975. - }
- 4976. - data.imagesStyles[cur.shareShowImg] = 'style="' + imgStyle + '"' + imgParams;
- 4977. - addMedia.showPreview(fast);
- 4978. - fast = true;
- 4979. - }
- 4980. - }
- 4981. - clearInterval(cur.shareImgInterval);
- 4982. - cur.shareImgInterval = setInterval(updatePreview, 300);
- 4983. - setTimeout(updatePreview, 0);
- 4984. - }
- 4985. - cur.shareShowNext();
- 4986. - },
- 4987. - uploadShare: function(callback) {
- 4988. - var data = addMedia.shareData, prev = addMedia.sharePreview;
- 4989. - var uploadCont = prev.appendChild(ce('div', {innerHTML: '<iframe class="upload_frame" name="share_upload_iframe' + lnkId + '"></iframe>'})),
- 4990. - uploadForm = uploadCont.appendChild(ce('form', {action: '/share.php', method: 'post', target: 'share_upload_iframe' + lnkId})),
- 4991. - photoUrl = data.images[cur.shareShowImg];
- 4992. - each({
- 4993. - act: 'a_photo',
- 4994. - url: data.url,
- 4995. - index: lnkId,
- 4996. - image: photoUrl,
- 4997. - extra: data.extra || 0
- 4998. - }, function (i, v) {
- 4999. - uploadForm.appendChild(ce('input', {type: 'hidden', name: i, value: v}));
- 5000. - });
- 5001. - window.onUploadDone = function(index, params) {
- 5002. - window.onUploadFail = window.onUploadDone = function () {};
- 5003. - prev.removeChild(uploadCont);
- 5004. - addMedia.shareData = extend(addMedia.shareData, {
- 5005. - user_id: params.user_id,
- 5006. - photo_id: params.photo_id,
- 5007. - photo_url: photoUrl,
- 5008. - images: []
- 5009. - });
- 5010. - callback();
- 5011. - }
- 5012. - window.onUploadFail = function(index, msg) {
- 5013. - window.onUploadFail = window.onUploadDone = function () {};
- 5014. - prev.removeChild(uploadCont);
- 5015. - addMedia.shareData.images = [];
- 5016. - callback();
- 5017. - }
- 5018. - uploadForm.submit();
- 5019. - },
- 5020. -
- 5021. - setupPostpone: function(data, export_row) {
- 5022. - var ed = (cur.editingPost && domPN(docsEl).id == 'wpe_media_preview'), h = (browser.msie6 || ed) ? '' : '1px';
- 5023. - var html = '<div class="clear_fix">\
- 5024. - <div class="fl_l"><input type="hidden" id="postpone_date' + lnkId + '" value="' + (data.date || '') + '" /></div>\
- 5025. - <div class="fl_l medadd_c_timerat">' + data.lang.profile_wall_postpone_at + '</div>\
- 5026. - <div class="fl_l"><input type="hidden" id="postpone_time' + lnkId + '"/></div></div>';
- 5027. - if (cur.editingPost && data.friends_only != undefined) {
- 5028. - html += '<div class="medadd_c_timersett">';
- 5029. - if (data.status_export != undefined) {
- 5030. - html += '<div class="checkbox_status_export' + (data.status_export ? ' on' : '') + ' fl_l" id="status_export' + lnkId + '" onclick="checkbox(this)" onmouseover="showTooltip(this, {text: \'' + data.lang.export_to_twitter + '\', black: 1, shift: [12,4,0]});"><div></div></div>';
- 5031. - }
- 5032. - if (data.facebook_export != undefined) {
- 5033. - html += '<div class="checkbox_facebook_export' + (data.facebook_export ? ' on' : '') + ' fl_l" id="facebook_export' + lnkId + '" onclick="checkbox(this)" onmouseover="showTooltip(this, {text: \'' + data.lang.export_to_facebook + '\', black: 1, shift: [12,4,0]});"><div></div></div>';
- 5034. - }
- 5035. - html += '<div class="checkbox' + (data.friends_only ? ' on' : '') + ' fl_l" id="friends_only' + lnkId + '" onclick="checkbox(this);checkbox(\'status_export' + lnkId + '\',!isChecked(this));checkbox(\'facebook_export' + lnkId + '\',!isChecked(this));"><div></div>'+ data.lang.friends_only +'</div></div>';
- 5036. - } else if (cur.editingPost && export_row) {
- 5037. - html += export_row;
- 5038. - }
- 5039. - addMedia.postponePreview = docsEl.appendChild(ce('div', {className: 'medadd_c medadd_c_timer clear_fix', innerHTML: html}));
- 5040. - addMedia.postponePreview.style.height = h;
- 5041. - stManager.add(['ui_controls.css', 'ui_controls.js', 'datepicker.css', 'datepicker.js'], function() {
- 5042. - new Datepicker('postpone_date' + lnkId, {time: 'postpone_time' + lnkId, width: 120, noPast: true});
- 5043. - if (!browser.msie6 && !ed) {
- 5044. - animate(addMedia.postponePreview, {height: 33}, 200, function() {
- 5045. - addMedia.postponePreview.style.height = '';
- 5046. - });
- 5047. - }
- 5048. - });
- 5049. - }
- 5050. - }
- 5051. -
- 5052. - if (!cur.addMedia) {
- 5053. - cur.addMedia = {};
- 5054. - }
- 5055. -
- 5056. - cur.addMedia[lnkId] = addMedia;
- 5057. - return addMedia;
- 5058. - };
- 5059. -
- 5060. - Composer = {
- 5061. - init: function (el, options) {
- 5062. - if (!(el = ge(el))) {
- 5063. - return null;
- 5064. - }
- 5065. -
- 5066. - var composer = data(el, 'composer');
- 5067. - if (composer) {
- 5068. - return composer;
- 5069. - }
- 5070. - composer = {
- 5071. - input: el,
- 5072. - inited: false,
- 5073. - options: options
- 5074. - };
- 5075. -
- 5076. - data(el, 'composer', composer);
- 5077. -
- 5078. - el.parentNode.insertBefore(
- 5079. - composer.wddWrap = ce('div', {
- 5080. - className: 'composer_wdd clear_fix ' + (options.wddClass || ''),
- 5081. - id: el.id + '_composer_wdd',
- 5082. - innerHTML: '<input type="hidden" id="' + el.id + '_composer_wdd_term"/>'
- 5083. - }, {
- 5084. - width: options.width || getSize(el)[0]
- 5085. - }),
- 5086. - el.nextSibling
- 5087. - );
- 5088. -
- 5089. - composer.wddInput = composer.wddWrap.firstChild;
- 5090. - composer.wdd = WideDropdown.initSelect(composer.wddWrap, extend({
- 5091. - text: composer.wddInput,
- 5092. - url: 'hints.php',
- 5093. - params: {act: 'a_json_friends', from: 'composer'},
- 5094. - noResult: options.lang.noResult || '',
- 5095. - introText: options.lang.introText || '',
- 5096. - onItemSelect: Composer.onItemSelect.bind(Composer).pbind(composer)
- 5097. - }, options.wddOpts || {}));
- 5098. -
- 5099. - el.dd = composer.wddWrap.id;
- 5100. -
- 5101. - Composer.initEvents(composer);
- 5102. -
- 5103. - if (options.media) {
- 5104. - composer.addMedia = initAddMedia(options.media.lnk, options.media.preview, options.media.types, options.media.options);
- 5105. - }
- 5106. -
- 5107. - setStyle(composer.wddWrap, 'width', '');
- 5108. -
- 5109. - composer.inited = true;
- 5110. -
- 5111. - return composer;
- 5112. - },
- 5113. - initEvents: function (composer) {
- 5114. - addEvent(composer.input, 'keyup keydown keypress', Composer.onKeyEvent.pbind(composer));
- 5115. - addEvent(composer.input, 'click mousedown mouseup focus blur paste', Composer.onMouseEvent.pbind(composer));
- 5116. - },
- 5117. - destroy: function (composer) {
- 5118. - WideDropdown.deinit(composer.wddWrap);
- 5119. - cleanElems(composer.input, composer.wddWrap);
- 5120. - re(composer.wddWrap);
- 5121. - composer.inited = false;
- 5122. - data(composer.input, 'composer', null);
- 5123. - },
- 5124. -
- 5125. - onKeyEvent: function (composer, event) {
- 5126. - var controlEvent = composer.wdd && inArray(event.keyCode, [KEY.UP, KEY.DOWN, KEY.RETURN]);
- 5127. - if (event.type == 'keypress' || event.type == 'keydown') {
- 5128. - if (event.keyCode == KEY.RETURN || event.keyCode == 10) {
- 5129. - if (!composer.select || !composer.select.isVisible()) {
- 5130. - if (event.ctrlKey && isFunction(composer.options.onSubmit)) {
- 5131. - // composer.input.blur();
- 5132. - // composer.options.onSubmit();
- 5133. - return true;
- 5134. - }
- 5135. - } else {
- 5136. - triggerEvent(document, event.type, event);
- 5137. - return cancelEvent(event);
- 5138. - }
- 5139. - }
- 5140. - if (event.keyCode == KEY.TAB) {
- 5141. - var input = composer.input,
- 5142. - value = val(input),
- 5143. - curPos = Composer.getCursorPosition(input);
- 5144. - curValue = value.substr(0, curPos) + "\001" + value.substr(curPos),
- 5145. - matches = curValue.match(/^[\s\S]*(@|\*)[\S]+\s*\([\s\S]*?\001[\s\S]*?\)\s*/);
- 5146. -
- 5147. - if (matches) {
- 5148. - var pos = matches[0].length - 1;
- 5149. - elfocus(composer.input, pos, pos);
- 5150. - return cancelEvent(event);
- 5151. - }
- 5152. - }
- 5153. - if (controlEvent && isVisible(composer.wdd.listWrap)) {
- 5154. - if (event.type == (browser.opera ? 'keypress' : 'keydown')) {
- 5155. - WideDropdown._textEvent(event);
- 5156. - }
- 5157. - return cancelEvent(event);
- 5158. - }
- 5159. - }
- 5160. -
- 5161. - if (event.type == 'keyup' && !controlEvent) {
- 5162. - if (event.keyCode == 65 && event.ctrlKey) { // fix Ctrl+A
- 5163. - return;
- 5164. - }
- 5165. - if (composer.wdd && inArray(event.keyCode, [KEY.SPACE, KEY.HOME, 190, 191, 78, 55, 49])) {
- 5166. - Composer.hideSelectList(composer);
- 5167. - }
- 5168. - Composer.updateAutoComplete(composer, event);
- 5169. - }
- 5170. - },
- 5171. - onMouseEvent: function (composer, event) {
- 5172. - if (event.type == 'blur') {
- 5173. - Composer.hideSelectList(composer);
- 5174. - return;
- 5175. - }
- 5176. - if (event.type == 'focus' || event.type == 'click') {
- 5177. - Composer.updateAutoComplete(composer, event);
- 5178. - }
- 5179. - if (event.type == 'paste') {
- 5180. - setTimeout(Composer.updateAutoComplete.pbind(composer, event), 0);
- 5181. - }
- 5182. - },
- 5183. - updateAutoComplete: function (composer, event) {
- 5184. - var input = composer.input,
- 5185. - value = val(input),
- 5186. - curPos = Composer.getCursorPosition(input),
- 5187. - prefValue = value.substr(0, curPos),
- 5188. - pos = Math.max(prefValue.lastIndexOf('@'), prefValue.lastIndexOf('*')),
- 5189. - term = pos > -1 ? prefValue.substr(pos + 1) : false;
- 5190. -
- 5191. - if (term && term.match(/ |[,\.\(\)\?\!\s\n \u00A0]|\#/)) {
- 5192. - term = false;
- 5193. - }
- 5194. - composer.curValue = value;
- 5195. - composer.curTerm = term;
- 5196. - composer.curPos = pos;
- 5197. - val(composer.wddInput, term);
- 5198. - Composer.toggleSelectList(composer);
- 5199. -
- 5200. - if (event.type == 'keyup' || event.type == 'paste') {
- 5201. - if (composer.options.onValueChange) {
- 5202. - composer.options.onValueChange(prefValue, event.type != 'keyup');
- 5203. - }
- 5204. - if (composer.addMedia) {
- 5205. - composer.addMedia.checkMessageURLs(prefValue, event.type != 'keyup');
- 5206. - }
- 5207. - if (composer.options.checkLen) {
- 5208. - composer.options.checkLen(value);
- 5209. - }
- 5210. - }
- 5211. - },
- 5212. - toggleSelectList: function (composer) {
- 5213. - var term = composer.curTerm;
- 5214. - if (term === false) {
- 5215. - Composer.hideSelectList(composer);
- 5216. - } else {
- 5217. - Composer.showSelectList(composer, term);
- 5218. - }
- 5219. - },
- 5220. - hideSelectList: function (composer) {
- 5221. - composer.wddInput.focused = false;
- 5222. - WideDropdown._hideList(composer.wdd);
- 5223. - },
- 5224. - showSelectList: function (composer, term) {
- 5225. - composer.wddInput.focused = true;
- 5226. - WideDropdown._updateList(composer.wdd, false, term);
- 5227. - },
- 5228. - onItemSelect: function (composer, item) {
- 5229. - if (!item) {
- 5230. - return false;
- 5231. - }
- 5232. -
- 5233. - var mention = item[2].replace('@', ''),
- 5234. - alias = replaceEntities(item[1]),
- 5235. - prefValue = composer.curValue.substr(0, composer.curPos),
- 5236. - suffValue = composer.curValue.substr(composer.curPos),
- 5237. - aliasStartPos, aliasEndPos;
- 5238. -
- 5239. - if (!mention) {
- 5240. - if (itemId > 0) {
- 5241. - mention = 'id' + itemId;
- 5242. - } else {
- 5243. - mention = 'club' + Math.abs(itemId);
- 5244. - }
- 5245. - }
- 5246. -
- 5247. - var noAlias = prefValue.match(/\#[\w_\.\u0400-\u04FF]+$/i) ? true : false;
- 5248. -
- 5249. - suffValue = suffValue.replace(/^(@|\*)[^\s]*(?:\s+\((?:(.*?)\))?\s*)?/, function (whole, asterisk, prevAlias) {
- 5250. - var replacement = asterisk + mention + ' ';
- 5251. -
- 5252. - if (noAlias) {
- 5253. - aliasStartPos = aliasEndPos = replacement.length;
- 5254. - } else {
- 5255. - replacement += ' (';
- 5256. - aliasStartPos = replacement.length;
- 5257. - replacement += alias.replace(/[\(\)\]\[]/g, '');
- 5258. - aliasEndPos = replacement.length;
- 5259. - replacement += ')';
- 5260. - }
- 5261. -
- 5262. - return replacement;
- 5263. - });
- 5264. -
- 5265. - aliasStartPos += composer.curPos;
- 5266. - aliasEndPos += composer.curPos;
- 5267. -
- 5268. - Composer.hideSelectList(composer);
- 5269. - val(composer.input, prefValue + suffValue);
- 5270. - elfocus(composer.input, aliasStartPos, aliasEndPos);
- 5271. - return false;
- 5272. - },
- 5273. - getCursorPosition: function (node) {
- 5274. - if (node.selectionStart) {
- 5275. - return node.selectionStart;
- 5276. - } else if (!document.selection) {
- 5277. - return 0;
- 5278. - }
- 5279. -
- 5280. - var c = "\001",
- 5281. - sel = document.selection.createRange(),
- 5282. - txt = sel.text,
- 5283. - dup = sel.duplicate(),
- 5284. - len = 0;
- 5285. -
- 5286. - try {
- 5287. - dup.moveToElementText(node);
- 5288. - } catch(e) {
- 5289. - return 0;
- 5290. - }
- 5291. - sel.text = txt + c;
- 5292. - len = (dup.text.indexOf(c));
- 5293. - sel.moveStart('character',-1);
- 5294. - sel.text = '';
- 5295. - if (browser.msie && len == -1) {
- 5296. - return node.value.length;
- 5297. - }
- 5298. - return len;
- 5299. - },
- 5300. - getSendParams: function(composer, delayedCallback) {
- 5301. - var addMedia = composer.addMedia || {},
- 5302. - media = addMedia.chosenMedia || {},
- 5303. - medias = clone(addMedia.chosenMedias || []),
- 5304. - share = (addMedia.shareData || {}),
- 5305. - limit = composer && composer.options.media && composer.options.media.options.limit || 0,
- 5306. - input = composer.input,
- 5307. - message = trim(val(input)),
- 5308. - params = {message: message},
- 5309. - attachI = 0;
- 5310. -
- 5311. - if (isArray(media) && media.length) {
- 5312. - medias.push(clone(media));
- 5313. - }
- 5314. -
- 5315. - setStyle(bodyNode, {cursor: 'default'});
- 5316. -
- 5317. - if (isArray(medias) && medias.length) {
- 5318. - var delayed = false;
- 5319. - each (medias, function (k, v) {
- 5320. - if (!v) {
- 5321. - return;
- 5322. - }
- 5323. - if (attachI >= limit) {
- 5324. - return false;
- 5325. - }
- 5326. - var type = this[0],
- 5327. - attachVal = this[1];
- 5328. -
- 5329. - switch (type) {
- 5330. - case 'poll':
- 5331. - var poll = addMedia.pollData();
- 5332. - if (!poll) {
- 5333. - params.delayed = true;
- 5334. - return false;
- 5335. - }
- 5336. - if (intval(attachVal)) {
- 5337. - params.poll_id = intval(attachVal);
- 5338. - }
- 5339. - attachVal = poll.media;
- 5340. - delete poll.media;
- 5341. - params = extend(params, poll);
- 5342. - break;
- 5343. -
- 5344. - case 'share':
- 5345. - if (share.failed || !share.url ||
- 5346. - !share.title && (!share.images || !share.images.length) && !share.photo_url) {
- 5347. - if (cur.shareLastParseSubmitted && vkNow() - cur.shareLastParseSubmitted < 2000) {
- 5348. - params.delayed = true;
- 5349. - return false;
- 5350. - } else {
- 5351. - return;
- 5352. - }
- 5353. - }
- 5354. - attachVal = share.user_id + '_' + share.photo_id;
- 5355. - if (share.images && share.images.length) {
- 5356. - addMedia.uploadShare(delayedCallback);
- 5357. - params.delayed = true;
- 5358. - return false;
- 5359. - }
- 5360. - if (share.initialPattern && (trim(message) == share.initialPattern)) {
- 5361. - params.message = '';
- 5362. - }
- 5363. - extend(params, {
- 5364. - url: share.url,
- 5365. - title: replaceEntities(share.title),
- 5366. - description: replaceEntities(share.description),
- 5367. - extra: share.extra,
- 5368. - extra_data: share.extraData,
- 5369. - photo_url: replaceEntities(share.photo_url),
- 5370. - open_graph_data: (share.openGraph || {}).data,
- 5371. - open_graph_hash: (share.openGraph || {}).hash
- 5372. - });
- 5373. - break;
- 5374. - case 'page':
- 5375. - if (share.initialPattern && (trim(message) == share.initialPattern)) {
- 5376. - params.message = '';
- 5377. - }
- 5378. - break;
- 5379. - case 'postpone':
- 5380. - params.postpone = cur.postponedLastDate = val('postpone_date' + addMedia.lnkId);
- 5381. - return;
- 5382. - }
- 5383. - if (this[3] && trim(message) == this[3]) {
- 5384. - params.message = '';
- 5385. - }
- 5386. - params['attach' + (attachI + 1) + '_type'] = type;
- 5387. - params['attach' + (attachI + 1)] = attachVal;
- 5388. - attachI++;
- 5389. - });
- 5390. - }
- 5391. -
- 5392. - return params;
- 5393. - },
- 5394. - reset: function (composer) {
- 5395. - var input = composer.input,
- 5396. - value = val(input),
- 5397. - media = composer.addMedia,
- 5398. - state = {value: value};
- 5399. -
- 5400. - val(input, '');
- 5401. - if (media) {
- 5402. - state.urlsCancelled = clone(media.urlsCancelled);
- 5403. - media.unchooseMedia();
- 5404. - media.urlsCancelled = [];
- 5405. - }
- 5406. -
- 5407. - return state;
- 5408. - },
- 5409. - restore: function (composer, prevState) {
- 5410. - var input = composer.input,
- 5411. - state = Composer.reset(composer);
- 5412. - val(input, prevState.value || '');
- 5413. -
- 5414. - return state;
- 5415. - }
- 5416. - }
- 5417. -
- 5418. - if (!_postsSendTimer) _postsSendTimer = setTimeout(Page.postsSend, 10000);
- 5419. -
- 5420. - try{stManager.done('page.js');}catch(e){}
- 5421. -
- 5422. + updH = el.offsetHeight - start
- ------
- Файл - feed.js:
- 768. - var feedBar = ge('feed_bar'),
- 769. - curSection = cur.section,
- 770. - curTopTab = 'news',
- 771. + var curTopTab = 'news',
- 773. - curTab, newTab;
- 774. -
- 775. - if (from >= 2 && newSection == cur.section) {
- 776. - curSection = cur.prevSection || cur.section;
- 777. - }
- 778. - if (curSection == 'search') {
- 779. - curTab = 'news';
- 780. - } else if (curSection == 'articles_search') {
- 781. - curTab = 'articles';
- 782. - } else {
- 783. - curTab = curSection || '';
- 784. - }
- 785. -
- 786. - if (newSection == 'search') {
- 787. - newTab = 'news';
- 788. - } else if (newSection == 'articles_search') {
- 789. - newTab = 'articles';
- 790. - } else {
- 791. - newTab = newSection || '';
- 792. - }
- 793. - debugLog('set section', from, curTab, newTab);
- 794. + curTabEl = geByClass1('feed_tab_' + cur.section);
- 799. + case 'photos':
- 800. + case 'recommended':
- 803. - case 'articles':
- 804. - case 'articles_search':
- 805. - curTopTab = 'custom';
- 806. - break
- 807. - case 'notifications':
- 808. - curTopTab = 'notifications';
- 809. - break;
- 810. -
- 811. + case 'articles': curTopTab = 'custom'; break
- 812. + case 'notifications': curTopTab = 'notifications'; break;
- 815. + case 'articles_search':
- 816. + case 'search': curTopTab = 'search'; break;
- 821. + case 'photos':
- 822. + case 'recommended':
- 825. - case 'articles':
- 826. + case 'articles':newTopTab = 'custom'; break
- 827. + case 'notifications': newTopTab = 'notifications'; break;
- 828. + case 'owner': newTopTab = 'owner'; break;
- 829. + case 'source': newTopTab = 'source'; break;
- 831. - newTopTab = 'custom';
- 832. - break
- 833. -
- 834. - case 'notifications':
- 835. - newTopTab = 'notifications';
- 836. - break;
- 837. -
- 838. - case 'owner':
- 839. - newTopTab = 'owner';
- 840. - break;
- 841. -
- 842. - case 'source':
- 843. - newTopTab = 'source';
- 844. - break;
- 845. + case 'search': newTopTab = 'search'; break;
- 847. -
- 848. - var curTabEl = curTab && curTab != newTab && geByClass1('feed_tab_' + curTab, feedBar, 'div');
- 849. - newTabEl = newTab && geByClass1('feed_tab_' + newTab, feedBar, 'div');
- 850. -
- 851. - debugLog('replace old', curTabEl, debugEl(curTabEl));
- 852. - curTabEl && replaceClass(curTabEl, 'summary_tab_sel', 'summary_tab');
- 853. - debugLog('replace new', newTabEl, debugEl(newTabEl));
- 854. - newTabEl && replaceClass(newTabEl, 'summary_tab', 'summary_tab_sel');
- 856. - // debugLog(curTopTab, newTopTab, from);
- 872. -
- 873. - toggle('feed_news_bar', newTopTab == 'news');
- 874. - toggle('feed_custom_bar', newTopTab == 'custom');
- 875. - toggle('feed_search_bar', newTopTab == 'news' || inArray(newSection, ['articles_search', 'articles', 'notifications']));
- 876. - toggleClass('feed_search_bar', 'fl_r', newTopTab == 'custom');
- 877. - toggleClass('feed_search_bar', 'fl_l', newTopTab != 'custom');
- 878. + toggle('feed_form_toggler', newTopTab == 'news' || newSection == 'articles' || newTopTab == 'search');
- 879. + feed.toggleSearchForm(false, newTopTab != 'search', !newSection.indexOf('articles'));
- 880. + hide('feed_custom_bar', 'feed_news_bar');
- 881. + switch (newTopTab) {
- 882. + case 'custom':
- 883. + case 'search':
- 884. + show('feed_' + newTopTab + '_bar'); break;
- 885. + default:
- 886. + show('feed_news_bar');
- 887. + if (cur.onFeedBarShow) cur.onFeedBarShow();
- 888. + }
- 890. -
- 892. - var topTabEl = ge('feedtab_custom'),
- 893. - topTabLabel = geByClass1('tab_word', topTabEl),
- 894. - topTabLink = geByTag1('a', topTabEl);
- 895. -
- 896. - if (newTabEl) {
- 897. - val(topTabLabel, val(geByTag1('nobr', newTabEl)));
- 898. - }
- 899. - if (topTabLink) {
- 900. - topTabLink.onmousedown = function (event) {
- 901. + val(geByClass1('tab_word', ge('feedtab_custom')), val(geByTag1('nobr', geByClass1('feed_tab_' + newSection))));
- 902. + var topLink = geByTag1('a', ge('feedtab_custom'));
- 903. + if (topLink) {
- 904. + topLink.onmousedown = function (event) {
- 907. - topTabLink.href = '/feed?section=' + newSection;
- 908. + topLink.href = '/feed?section=' + newSection;
- 915. -
- 916. + curTabEl && replaceClass(curTabEl, 'summary_tab_sel', 'summary_tab');
- 923. -
- 924. + curTabEl = geByClass1('feed_tab_' + cur.section);
- 925. + curTabEl && replaceClass(curTabEl, 'summary_tab', 'summary_tab_sel');
- 1279. + },
- 1280. + toggleSearchForm: function (fire, on, articles) {
- 1281. + if (articles === undefined) {
- 1282. + articles = cur.section == 'articles' || cur.section == 'articles_search';
- 1283. + }
- 1284. + if (on === undefined) {
- 1285. + on = !isVisible('feed_nosearch_bar');
- 1286. + }
- 1287. + if (fire && on && articles) {
- 1288. + feed.switchSection('articles');
- 1289. + return;
- 1290. + }
- 1291. + toggle('feed_nosearch_bar', on);
- 1292. + toggle('feed_search_bar', !on);
- 1293. + if (fire) {
- 1294. + if (on) {
- 1295. + show(articles ? 'feed_custom_bar' : 'feed_news_bar');
- 1296. + } else {
- 1297. + elfocus('feed_search')
- 1298. + }
- 1299. + }
- 1300. + val('feed_form_toggler', getLang(on ? 'news_switch_to_search' : (articles ? 'news_switch_to_articles' : 'feed_add_post')));
- 2032. + fullPostHeight: 50,
- 2033. + emptyPostheight: 24,
- 2145. + WallUpload.preinit();
- 2163. - var _a = window.audioPlayer,
- 2164. - aid = currentAudioId();
- 2165. + var _a = window.audioPlayer, aid = currentAudioId();
- 2281. - this.resultList.style.width = this.resultListShadow.style.width = resultContainer.style.width = '273px';
- 2282. + this.resultList.style.width = this.resultListShadow.style.width = resultContainer.style.width = '230px';
- ------
- Файл - feed.css:
- 14. - padding: 8px 10px 8px;
- 15. + padding: 5px;
- 26. - padding: 6px 4px 5px 20px;
- 27. - width: 247px;
- 28. + padding: 5px 4px 4px 20px;
- 29. + width: 492px;
- 32. - background: #FFF url(/images/magglass.png) no-repeat 5px 8px;
- 33. + background: #FFF url(/images/magglass.png) no-repeat 5px 6px;
- 42. + padding: 5px;
- 46. - padding: 4px 5px;
- 47. + padding: 5px;
- ------
- Файл - notifier.js:
- 1200. - audioObj.src = '/' + filename + ext;
- 1201. + audioObj.src = filename + ext;
- 1236. - swfObj.loadAudio('/' + filename + ext);
- 1237. + swfObj.loadAudio(filename + ext);
- ------
Add Comment
Please, Sign In to add comment